- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 565618 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174908
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
7 u3 f5 B8 `; M' R" ]6 n
数学建模之传染病SIR模型(新冠真实数据)
; r( n. n# |# U5 a% E5 W' a7 Z传染病模型的基本问题- @0 W$ ?- a8 \
描述传染病的传播过程
& L) h, t, ], p7 ` b分析受感染人数的变化规律% X: g n: P7 s- l8 Y1 j8 C3 `
预报传染病高潮到来的时刻" U- T' D( Q9 J/ O3 E. `; L
预防传染病蔓延的手段& ~0 z& ~2 M2 f6 C
按照传播过程的一般规律用机理分析方法建立模型
* c2 c3 t4 s* L. r# ^注:我们这里是介绍数学医学领域中基本的传染病模型。不从医学角度分析各种传染病的特殊机理,按照传播过程的规律建立微分方程模型.
9 [! E: g$ f7 o+ Y* M5 E( M$ p0 q. u# U3 `# Z0 i3 Q! m+ i9 H1 `: {
/ Q; A& M" P" M' Y& Y! K
建立模型
. ~, M% S$ Z/ i' n/ X4 j6 v模型一
/ N) f8 X4 G4 ~ o) Z" l假设:
- }7 o6 M. \2 [( h( c3 A
9 f: ]" R# Y1 v
6 j3 `1 U, `9 J# H* L$ M4 N% d4 V设已知感染人数为i ( t ) i(t)i(t)(病人数量随时间变化)9 D! O8 q& B9 |9 v
设每个病人(单位时间)每天有效接触(足以使人治病)人数为λ \lambdaλ
# R- c" r, O: ~! m0 [! b模型:/ X, _$ ]) V& V% \6 n0 ^. |0 M2 i5 H
单位时间Δ t \Delta{t}Δt内,新 增 的 人 数 ( 现 有 − 原 有 ) = 原 有 的 × λ 新增的人数(现有-原有)=原有的 \times \lambda新增的人数(现有−原有)=原有的×λ,即+ k5 F4 ?3 F- S' ~
. Q6 g: ^: ]5 {6 j
6 e5 M( {1 w" Qi ( t + Δ t ) − i ( t ) = λ i ( t ) Δ t i(t+\Delta{t})-i(t)=\lambda i(t)\Delta{t}i(t+Δt)−i(t)=λi(t)Δt. x% A. I Q8 u: V0 @* E/ [9 U
一开始的感染人数为i 0 i_0i ; ~1 f6 d" u3 E9 u9 B
0
( J" n' C7 p1 M7 d 8 T% u3 r( G' y7 \- I: f
, B. S1 w# o: t# ~ v( H
i ( 0 ) = i 0 i(0)=i_0i(0)=i 2 ^+ \5 G. U/ g
0
& ?' ?( A1 x# l7 u0 ~! F" J * } D9 d) h1 L; p4 `
' Q* ~3 j F0 r1 t解微分方程可以得到6 Y) q3 s; C# }9 t$ Y5 u
i ( t ) = i 0 e λ t i(t)=i_0e^{\lambda t}i(t)=i
( m% a) s. L( J2 I9 T7 b0 ]' D @) y9 V+ A4 C
) l3 G* d: m- | r4 z2 c0 x U e
) D! u+ ]0 g; _$ Jλt
/ y2 ^, |8 g+ Y! ?0 i( J$ h 8 a1 w9 M# o& L) N! Y2 S
所以可以可到当λ → ∞ \lambda \rightarrow \infinλ→∞时i ( t ) → ∞ i(t) \rightarrow \infini(t)→∞
+ z, F8 H3 J$ L h! n; n当然这是不可能的,因为我们考虑的因素太少了,首先一个是,若有效接触的是病人,则不能使病人数增加,所以必须区分已感染者(病人)和未感染者(健康人)看模型二来解决这个问题
1 `8 L: Y$ N" y' K/ }5 n" U
. x' X$ Z& I5 P1 C3 f/ C1 n+ E- X! l' k% c5 r2 L
模型二! G! p( `" ~: i9 }
假设:% O% t0 M u' [3 `; ?( G
/ s3 |+ V v8 E2 ]% P& o' `
1 K F4 G* E: u3 x& L
将人群分为两类:易感染者(Susceptible,健康人)和已感染者(Infective, 病人).+ J3 r) Y, v* a* N* o( X
总人数N不变,时刻t健康人和病人所占比例分别为s ( t ) s(t)s(t)和i ( t ) i(t)i(t), 有s ( t ) + i ( t ) = 1 s(t)+i(t)=1s(t)+i(t)=1: G" P0 f+ w9 M
每个病人每天有效接触人数为λ \lambdaλ(日接触率),且使接触的健康人致病.
( t; p8 d3 n6 N8 `1 P建模:: ~- _. G# ]* Q* o C- t
每天新增的总人数为原有的人数乘以每个人可以传染的健康的人数,再乘Δ t \Delta tΔt
+ C q8 P. u' h' d1 a# s
( Z1 X+ b; ^& @: h! U2 K1 Q# ]: n1 V3 M4 a+ r J/ ]
Δ t \Delta tΔt除过去,两遍N约分得到下面,
$ A5 x: z% {; R0 k; I9 f8 a$ R+ Y. |) r! }+ G8 s1 f5 t6 M
6 O7 D/ F8 `# S/ x# QMATLAB解一下这个微分方程- J0 A8 X, R0 X8 d: q
L$ q. k" R1 N) s; S6 \, c5 _
9 p, Z7 m- r, V m7 Uy=dsolve('Dy=n*y*(1-y)','t');1 s/ U4 T% u9 Q" X' n7 {
; }$ D/ Y8 l4 K6 }3 S* [& k) e# j
2 f4 ~- ?) r( u- c% R
y =
. Z$ b' A& ]' e: g4 f& A! m2 a -1/(exp(C1 - n*t) - 1)' e$ z( W* M& j* d& f5 K2 Y+ b
03 D4 z7 K: ?) C! ]
1) Z" ]; V+ e# z8 r/ g, ^6 ^
1
0 ]$ j1 H [/ F1 M; y2% e ^- k5 T$ h
3
4 L5 ?3 ]# i; Z6 K$ l9 P- b/ e/ Z5 D4
; }5 P7 p0 Y+ _2 V5, Y' b* T9 {3 Z q
6. [1 Y: ]# G8 f- m' \& y% y
写规范点就是这个函数! n+ @5 Y b4 j" @) I9 o" ^
) j* F) T, l/ b% Z1 f9 s
0 A( Q2 i. ~& O, I B函数图像大致为
* A" H8 I! D8 S' U! G' z
/ `, r% o$ d0 ^, \' C: S# d
5 y/ S1 J8 N* M3 d9 B可以看出t = t m t=t_mt=t 8 j9 |& _( Z }$ L
m
$ k" v) m0 o) O+ Q5 ] $ }' F; s* D; w$ c! M
时这里图像的斜率有个最大值,其也就是传染的最快的时候,即传染病的高潮时刻,当然t m t_mt
2 G' ?' D: h: ], km8 _8 x; S( o. U: E& u
2 M! E1 D; c V' @9 i
是可以求出来的4 \0 x N2 E7 x( v7 k
5 f7 z; b* Q. s w
0 ^, w8 N U" L& M1 ]再看原式,当t → ∞ t\rightarrow \infint→∞时i → 1 i\rightarrow 1i→1
/ H4 B8 e1 G: M' t+ s( u F% y病人的比例为1,当然这也是不可能的,因为我们还没有考虑有没有可能治愈,看模型三
/ Y; A- a# p. m" k( A3 O* x2 V) g+ q
8 t5 B# ]& h. R5 Q
模型三7 g% w q" i- {" k! v
假设:
, E2 s6 D) \% ]% A2 `* z, {3 d2 J; x- c/ s
, x1 C( p+ C# \3 Z8 n. d V传染病无免疫性如伤风、痢疾等——病人治愈成为健康人,健康人可再次被感染。
( |" p/ n% g; b( z* n0 r' `病人每天治愈的比例为μ \muμ (日治愈率),1 μ \frac{1}{\mu}
! w4 L2 ^! j; G; B- }( q$ T! oμ9 F7 x- V/ K$ ~( F2 F
1
$ L5 p. ]" R" J, R! |1 j
, ]; v) G% `- j! o1 H T$ o) ?3 U/ [ 为感染期,6 D/ Z5 M2 X* u
模型
; k6 N9 L' Q# I9 j7 I! c6 x% D4 q这是减去了治愈人数之后的新增人数
) Z1 I' L4 e! }9 ?. L8 u' p* b! Y' S( W8 ]6 P1 Z( S" D5 ]
+ `, Q4 Y7 b" C$ ^ W
Q+ P3 m5 t1 N- u' o; g" v
7 g- G8 o7 J! b% H; e, ^σ \sigmaσ 为一个感染期内每个病人的有效接触人数,称为接触数; K! K0 ]% t+ u8 W
+ U# N# R; P4 a7 v4 }7 c" o6 Q- p, A. f1 H, q
可以画出上面的图形分析下
: I" C, _ T4 J4 G. E2 p
: M- Y5 ]* r( f/ g u2 Y: l- s$ b7 X, e n" I& e
对上面的公式进行分析,可以得到,当i = 1 − 1 σ i=1-\frac{1}{\sigma}i=1− 5 V3 G& C7 q( [2 y* _, v
σ
# T; [$ r) R4 q5 G- o2 E# e4 L) j1: x$ Q+ G: @1 v: p! Y w: T6 x- n# o
& f n0 l" E; v0 ? 时,i ii对t的导数为0这也就到了i ii的最大值;当0 < i < 1 − 1 σ 0<i<1-\frac{1}{\sigma}0<i<1−
8 [! n8 _ V: {σ# |) J; s. B' i! U7 X y: q
1
+ O' W& b3 A; n6 c+ D& |- p+ z 2 P: U5 a/ ~2 i$ R1 N
时,d i / d t < 0 di/dt<0di/dt<0,i单调递增,且在d i / d t di/dtdi/dt最大时,i的斜率最大,增速最快;当i > 1 − 1 σ i>1-\frac{1}{\sigma}i>1− ( Z0 D8 U$ v' Z" E0 o
σ% ?' E) X/ P1 m! X' Q0 [# r- p
1
6 k4 W8 [% P& F, E / R0 ?5 O% ]5 a
,d i / d t < 0 di/dt<0di/dt<0,i是单调递减的。
$ q1 J9 n- N9 f3 ]* `9 s7 I$ X: _* @' A* m. H1 \. k% S2 O: X. C& a
( _6 }; N( t, B# V& m8 C4 U7 b当然我们也可以画出i ii随t的函数图像. G/ D9 u2 k' a" e/ G
7 X8 p6 k* h9 j) z$ T" Y
) n. E: R% c4 U1 x0 `& M
先看红线,若初始条件i 0 > 1 − 1 σ i_0>1-\frac{1}{\sigma}i
& @+ v' R0 M* R7 D0. m( R1 ]# P" |( W
1 p& n& x" r7 ^$ C3 N# m
>1− 1 @# w$ S1 J1 i" j' o" |
σ
3 a7 E* A+ T' I0 r1' w" ?/ q, \7 h5 r* O( V
' e5 f* C( ~5 L" y/ e& |6 a* K d i / d t < 0 di/dt<0di/dt<0,i就是单调递减的,) i- k8 V/ Q" z' S4 \- m- U/ f
若若初始条件i 0 < 1 − 1 σ i_0<1-\frac{1}{\sigma}i
# \$ q9 R) j& A- k7 p0
# `$ f, R$ K' D5 @ v
4 h7 V9 `1 U' [% l# b <1− # N8 A- I& |3 y+ \
σ
# @; K3 H% N' r4 Q9 a4 \1! G) S) g, \+ Z9 s) J
# x: D* S; q1 A& f5 Y8 D
,i就是递增的,可以看到i对t的导数图像有一个最大值,下面的黑线就有一个增加速率最快的一个值,按S形曲线增长: R) {: N" ]. K" g
+ y [2 X9 R+ T1 t8 S: P$ R! D7 \' ?% b# k6 E, d( R
σ = < 1 \sigma =<1σ=<1时d i / d t < 0 di/dt<0di/dt<0 i肯定是单调下降的,最终降到06 e" p c% K$ E
) W9 @6 q) N: N5 j$ S
$ u7 _" B! `! u; b/ O& A+ a- q
9 d Y* d' ^8 e4 \; L. ?
% E+ A9 J. T. c" J6 W7 m综上:, S2 k$ \$ e* E: ^: Q( A4 [
想让患病者越来越少,σ \sigmaσ必须小于等于1,即感染期内有效接触使健康者感染的人数不超过原有的病人数.; o2 U: S0 R6 u5 x# P1 W' A
5 P) j9 b* ~# Y2 S4 \
) S2 h% [) Y/ @) q, t9 F1 E这里我们分析的是感染之后还能感染的情况,但有些病毒感染之后会在体内生成抗体,就不会再被感染了,下面我们分析这种情况。: K8 Z! `6 O: `5 E
4 U) k+ H( B1 a+ Y
7 U% J% A& H. q" I n2 I模型四 SIR模型
0 r( r7 B: d; |% m( K. X4 W( TSIR模型是常见的一种描述传染病传播的数学模型,其基本假设是将人群分为以下三类:5 p) w6 U4 q" \- ?. p
( ?& W# I2 f. `; F4 a3 r( Q8 u
: I& Q# n5 {# v' D- a1 易感人群(Susceptible):指未得病者,但缺乏免疫能力,与感病者接触后容易受到感染。
3 F. i, G0 R5 Y/ C% v+ z$ Z( {. B) o: s' b
. I" @# X. t/ B5 u; M( A7 p6 r2 感染人群(Infective):指染上传染病的人,他可以传播给易感人群。- k! y) y8 Q3 h( E& }7 {( Y6 C4 [
6 ?; H$ o" U9 {9 @* ]1 {6 z# U
9 j# u9 S; q0 A# P7 h; R3 移除人群(Removed):被移出系统的人。因病愈(具有免疫力)或死亡的人。这部分人不再参与感染和被感染过程。
: n8 \7 |0 V+ D4 D) ?* Z3 ]2 L; {2 w1 F- U# p7 B |( V
. w. F& Z4 p1 b3 G$ G+ Y, Z% @假设:% G. U/ j u% r8 M& S# _
; K! S/ W( ~# e
% ^/ }* |! E* e# k
传染病有免疫性如天花、麻疹等——病人治愈后移出感染系统,称移出者(Removed).
# l( I% b- M8 \/ ]$ ?, {0 C总人数N不变,健康人、病人和移出者的比例分别为s ( t ) , i ( t ) , r ( t ) s(t), i(t), r(t)s(t),i(t),r(t).+ p9 H& Z# A; M1 m0 w- w
病人的日接触率为λ \lambdaλ , 日治愈率为μ \muμ, 接触数 σ = λ μ \sigma=\frac{\lambda}{\mu}σ= % o/ @) b. ^# o0 X
μ5 N+ K2 W% ?: k; s
λ [, l' J& n- N. M- E7 L
! x; D- I9 l/ T5 l! _ s. r
! I# q1 C& [1 e) H' [. z建模:7 s& T" @! n* o8 X& k+ {6 Q, e( {5 g" E
s ( t ) + i ( t ) + r ( t ) = 1 s(t)+ i(t)+ r(t)=1s(t)+i(t)+r(t)=10 N: q% K# j% j( z& H
这个就是病人减去治愈的人,和上一个模型是一样的* W+ o% |7 Q( F, a7 @3 i
! S" w. h9 P; M5 ]0 I
* v: Q: F) P6 L
因为有治愈后是有免疫性的,所以可能被感染的总人数要减少,减去移除者就是9 Y% W; K3 f! v/ O
! t J! i% t9 m* F3 }9 m
3 j6 A4 f5 O0 k d6 E) [/ c
将上式化简为:) Y" v0 Z4 ^- S, d
1 {7 C( y. t; g! {- h9 @$ D% C# J
' u% l( h" ~! F) }. l
i 0 + s 0 ≈ 1 i_0+s_0\approx 1i
$ B6 X7 k, Y9 u8 L" O! \0
4 ]" y/ n' {# t0 d3 H) ?
, y5 o/ P' V6 h- E +s
1 ~; D6 j5 A+ |, g. A5 `% R0
0 _' A5 I9 Z; {' M5 s8 E/ a: }) X ( h2 W/ f4 I2 ?2 X- I8 n9 s$ I
≈1(通常r ( 0 ) = r 0 r(0)=r_0r(0)=r
% F' ]# B0 M, r: V, F0
6 S- \! L# @3 i8 q, b% b
- d+ ?; o V/ i1 A& l0 ^ 很小)( f3 n4 S! d1 h4 c9 L
! u3 }. {0 w7 q* P% p7 z- R5 ~1 m; L+ w2 x8 p+ a! Z
关于i(t) , s(t) 的非线性微分方程组,没有解析解,只能通过数值计算得到s(t), i(t), r(t)的曲线,下面来看下曲线的数值解的MATLAB程序) _- E7 m# S) w( w+ c
+ T! ^' Y7 h$ h8 c) U5 X; |+ c7 X+ |/ T# e) `
这里我们先设λ = 1 , μ = 0.5 , i 0 = 0.01 , s 0 = 0.99 \lambda =1, \mu=0.5, i_0=0.01,s_0=0.99λ=1,μ=0.5,i 3 l6 l# R( C, q, e1 @3 H3 r* `
0% w: R7 |! }8 \7 f9 z
- D! u: y6 c3 \0 u$ J# {$ x' Z =0.01,s
8 x& `) u5 k4 ~% y$ \6 a$ e4 c0
& M! e8 x. v2 A. D # I. ?2 Y4 V2 k$ j% l' ~
=0.999 t: G' D7 I' f) |( b
也就是平均一个病人人传染一个正常人,治愈率为0.5;开始的病人比例为0.01,正常人为0.99,设没有天生带有病毒抗体的人,所以r 0 = 0 r_0=0r , D9 w4 Y# w* _* n
0+ U. ~# |/ N8 n; M+ }5 f
1 p: ?$ ]+ ~! S7 k' d9 K, [
=0,之后若果病人被治愈,则具有抗体了,有抗体的人为:r = 1 − i − s r=1-i-sr=1−i−s
* S3 B8 U4 G* m5 C% }5 y
; ?6 m. w, X- C; }# F, s# I; m/ M' V2 X% Z& m8 u
ts=0:40;
* _+ S ~, F: j7 {" P, r8 Sx0=[0.01, 0.99];
4 h+ d% M8 O( _: [- i# ]2 X[t,x]=ode45('ill',ts,x0);
" a# Z% }" ~. ]0 b8 Zr=1-x(:,1)-x(:,2);
, {! p: P3 A/ hplot(t,x(:,1),t,x(:,2),ts,r),grid
3 g4 _" B5 @3 ~9 @3 x2 glegend('i(t)','s(t)','r(t)'): q( \ U2 p: X* q" P! z) [- J
" G/ a/ K& N6 g6 \1 y
. J% n- i% f9 \7 ]9 Qfunction y=ill( t,x)
# g/ H# h+ _7 _; q/ la=1;
( I( r- x1 {/ x- K9 A8 x% U4 ]b=0.5;" j, e8 d- n$ T2 \- d6 K2 z
y=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];
8 L: W) R+ U; ]7 _" I1
7 C! l' Y, b0 B7 Q( A" ]- P21 J. D4 B6 w( Z8 X& r- f
3/ m4 [- D6 k& }) O- g1 ?& f8 O
4
; V+ S4 s5 `# Z& g, z$ O52 q1 S0 s) x4 h9 E# D
66 d& I# Y9 h2 x& f% ]. k
74 b9 M: l6 ` B1 y
8" p( P4 q- W& I; X
9; |3 }% M a# P1 U* F+ B7 L' R0 c
10
. i: L% A! T U' M9 Y$ ]# c11
5 z+ W1 ~2 v v- A' t& R' Y. G1 L, L% s) M; r+ P8 C7 i) o. ?& X1 Z
' d6 ]8 c' {* C" h5 @; O9 X可以看出:s(t)单调减,r(t)单调增,都趋于稳定, i(t)先增后减趋于0.( k; j" ^9 E9 |; {1 M' ^) w& w
结果分析: Y2 v. r3 Y: f+ x) k: x1 @
先回顾一下参数
9 B4 ^+ E% L" y0 ?& s2 H4 M接 触 率 λ ; 治 愈 率 μ ; 1 / μ 平 均 传 染 期 ( 病 人 治 愈 所 需 平 均 时 间 ) ; σ = λ / μ 接 触 数 ( 感 染 期 内 每 个 病 人 有 效 接 触 人 数 ) 接触率 \lambda;治愈率 \mu ; 1/ \mu~平均传染期 (病人治愈所需平均时间);\sigma =\lambda/\mu~接触数 (感染期内每个病人有效接触人数)接触率λ;治愈率μ;1/μ 平均传染期(病人治愈所需平均时间);σ=λ/μ 接触数(感染期内每个病人有效接触人数)& k* \2 t$ h$ d3 {
可以分析出:" N6 r Z t& p. X# c5 {: `. t
' }' O4 j9 @1 b9 @9 C
8 s N9 X1 u8 W5 j# M
随着卫生健康思想水平高,接触率λ \lambdaλ变小
. `+ V$ ^6 u2 f- I: K随着医疗水平的提高,治愈率μ \muμ增大
$ D. }4 \, [7 {6 I& R5 x$ A2 r接触数σ = λ / μ \sigma =\lambda/\muσ=λ/μ减小——有助于控制传播.) z- G( O* v! Q* f9 U& X5 ^9 D
我们可以试试稍微减少一下λ \lambdaλ,增大μ \muμ,来看下效果" I* ]: ^, W5 ]; B. `5 t
" _- n) K% }# {# Y0 U. K
6 \6 a+ V5 f- Ats=0:40;+ _. x( L1 }3 ^2 D# a
x0=[0.01, 0.99];
D7 c8 u: M9 _9 Y& k[t,x]=ode45('ill',ts,x0);: J+ r( k5 k- t0 b
r=1-x(:,1)-x(:,2);
. b* d" E8 P) R/ M) Zplot(t,x(:,1),t,x(:,2),ts,r),grid0 [6 C+ [4 C1 X/ F) E% [
legend('i(t)','s(t)','r(t)')
. X: t, i P9 P3 f
S, K1 d& \ G' z/ W, D
2 A0 i9 Q9 a, rfunction y=ill( t,x)
u f+ w$ u9 m: c& b* T, S/ a! Xa=0.8;3 C L4 a; D% U* m m4 A$ i5 C
b=0.6;
& H8 G7 l# J: C1 v! Ay=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];- h# j- W+ c0 u
1
?& M# ~, `* @' ^+ Y) ^8 ~2
4 K, h9 Q) s: O( {, [ N, H. m3# w V0 k: W3 _ L7 n% I' n
4
0 g1 u$ j" [- `0 j# E5, |8 Z* N. O. e
6
4 X/ T; ]% E4 ]& Z7
) V1 H: m) G! H4 {! M' i8
" `5 p6 `# o) O' l7 l U3 E9
5 @; v* ?) r2 M' w0 y8 I3 {10" j! ]/ X/ A. |: G! r" a+ o7 l
11
8 S5 j' E$ s1 t3 h4 D3 R: b% y* _' G. i+ i+ p
( @9 {: S. C9 N4 E/ H
综上我们可以得出结论:想要减少传染病的传播,我们就要在接触数σ \sigmaσ上下功夫。" g- [4 c- b- V* r1 Q
7 h- }$ g' f4 S; n' o
0 y! o5 K# q6 D& Z- E7 F
实战建模
0 ~6 X$ z3 Y, _2 Z/ U/ `8 b数据处理) i2 L, J0 f! p9 v; c, r
& @6 G; j, G2 T: ]: P* r ^* B
- m9 Y' q. N4 K8 x8 K# e首先,我用python爬虫爬取了丁香医生官方数据,一共5534条数据 特征包括感染、死亡、治愈的总数,当日感染、死亡、治愈新增,疑似病例,时间,省份等14个特征
# {2 \! `/ O% H# p( r: Z/ U' c3 ?, @: z
! B4 n: A, G7 J
' S" i* @1 h- N, k- u/ [" C6 H. {
& }% T; ^* }! `6 @7 D+ z, U( m然后用python进行数据提取,提取了较为典型的湖北省的数据作为我的参考依据
: [: K8 k: E7 p% F0 z
# P* T+ o# s1 ~) `) U! x B! P; J8 n3 t4 O' Z3 u
1 e* \! g8 _. I
! C* Z" R/ V7 U; p# z6 {* Z/ o7 d然后用python对数据进行清洗,提取出了患病总数,现存患者总数,死亡总数,治愈总数,时间,省份这几个特征
+ q: a1 g0 ]9 v
. ~' C7 P3 T. ~( t( }) x
- D# Y$ B( h% R0 g8 o$ i对日期格式进行修改,值保留月和日,并与死亡人数的位置交换. f: X7 v4 I3 v3 o+ h3 j
6 U2 O2 x% J" y- m7 R
) q( q1 P0 O& J6 x m6 G5 h: L这里我用python对提取的四个特征分别进行了数据分析(主要包括计算最值,平均值等,),并把1.20日作为第一天,7.02日作为最后一天也就是第165天,做了可视化可视化处理。
: |# [4 H: y7 @1 N9 a; }: Q4 i感染人数示意图8 G# s3 R# C7 w0 g. e2 ~3 h" s
2 V+ t6 O4 o" v0 B, F8 I# K1 ]* g! [4 o; F5 {" e8 c) N" g0 M
治愈人数示意图6 k# |. e1 T0 U+ q: S. h
2 S7 L1 | F' S9 `% L2 K+ s4 K0 o' K- s0 o
4 `' P7 A/ @" R7 N# |# O. {" Q
+ H) P& i6 `; o5 X$ R
现存患者数量图
6 x/ r3 V0 d$ m6 f- v# m8 Q6 I; l! f' ?4 d d
* f5 Y2 }9 W2 N死亡人数示意图% ]* p4 S+ f, i& j1 O- f6 R
+ U3 x3 i- ]: z; \3 M. Y" ?4 k2 c0 k; H7 U9 r
9 q7 {' t! y; K# W
% T- W7 p1 c/ b! t' ^
经过上面的图片与describe数据分析,我们发现有一天是异常的,患者多出了平时的十倍左右,经过查阅资料,这天因加强了检测标准,所以增多了很多。为了避免这个数据的影响我们选择将这一天删去(或者用平均数或中位数代替也可)* G4 C; u* c( w- E0 A: Z0 h% a
将上面清理过的数据存放到csv文件中
# V; T! n; A5 y9 T* O
, J+ b6 ~8 e( j) }9 A) b( P
5 v$ R! ?; z' O% K9 x5 Z; _模型建立* n9 V) B3 ?$ f. [! U5 `
模型假设
8 I! ?5 k4 R8 s J0 B经过上面数据的分析,我们大体可以进行如下假设:1 d6 c, N4 M& p- R& D
1.由于不存在封闭情况,考虑开放体系。
! Z8 G. J1 U, R: V/ d/ z7 k2.目前数据以天为单位发布,因此不考虑连续变化情况,只考虑离散的方程。
, L0 P5 f7 X) W, n' W3.新型冠状病毒的治愈人数和死亡人数相对较 小,因此只考虑 Susceptible(易感)和 Infected(感染) 两类人群。设易感人群总数为N
& H( n2 y) a/ \2 a P4.经专家鉴定新冠病毒患者治愈后至少六个月之内不会再被感染,所以设治愈后移出易感人群。
4 K1 Y8 o/ M* ?6 I+ R5.设每个病人每天有效接触人数为 λ \lambdaλ(日接触率),且使接触的健康人致病.
/ [$ I) M6 I' Y/ W* z( a/ t6.设病人每天治愈的比例为 μ \muμ(日治愈率)
0 k8 m$ y4 x0 V. S, d% Z2 M) k- q7 ~7.时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t).
]2 j: `0 v$ t5 j
0 W" |* ~ D3 u" D! T# I3 D, y$ R
$ S" d0 B' V2 s, n& n& [模型一
! K2 t: C- Y) Y2 D! b+ B5 D- ?. P- f$ Z2 K. H' I: B1 T+ X4 M) \6 f1 Z
* I6 V# A* E/ {) l, r E* @
分析可以得到移出者r(t)=治愈人数+死亡人数
i# {$ ~$ O( k4 a" Y通过python数据处理,我们算出了r(t)的值,并将其可视化8 }6 @) d5 r+ A
) j/ c! `8 E5 c: q6 s3 \6 C @3 N- [& X& h. F) ]& H
& w/ r: ?: l8 N% u' ?- \# L) j, ^% V+ M5 G4 p- ?2 ~$ l: x# X
我用MATLAB对其进行了拟合,拟合图像为3 H7 U( r% |8 x# Y9 R. r9 _
# x( ^3 P/ @7 R6 f: M
- ^% p! K1 x2 H6 T. z* `8 o3 H6 \! T0 L$ m& Z
( Y; l& t" K' z
- s8 W5 ]( ?7 V" o# X2 j6 D
; E. R! w! V/ S+ k$ P5 g. t" e( i分析可以得到患者 i(t)=患病总数-移出者
" S1 c' `( s" x. |可以通过csv文件的currentConfirmedCount 直接获得i(t)数据,当然也可以通过 i(t)=confirmedCountv - r(t)获得,对此我也做了可视化展示1 b$ ?& S1 l& T) U
q/ t. X+ o3 V1 a! G: p( E* P4 [* X6 Q/ L s. k
通过MATLAB程序对其进行拟合,可以得到r(t)的函数图像大致为$ Z) c- s2 |3 B2 p0 p) W+ Q
8 f0 I! H) r. K& y" y( K* I* j* n* t. X a4 `) s
. J2 m6 e- w+ q9 \2 t
! r+ T9 t" d7 L& A% r9 n
. |+ M7 J5 p, E. u
2 W- w2 y, X6 Z- \: N @# s. O$ {4 z为了方便,利于公式推导,我们先设时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t). 所以有
( [' v. [* x4 U0 ]$ ~- C
: q- G( y. x5 Y. d$ I! u# _4 G' |
1 g& a0 Q5 B) L% {* p可以推导出每日新增病例的表达式
3 g: l0 s- i3 T: ]5 J# U. k4 q% c6 X6 ?2 l" k& o4 M6 D, T1 @
. A' j/ p. c* U, w' q* S; \1 u
0 I0 G- Z5 c* G0 @3 j g* e8 |
# G4 G) U6 p8 {! J( n% e
0 j! T2 J0 H2 ~+ |2 L7 l; v/ u! c: q1 B0 z0 A
由以上两个公式可以推导出以下两个微分方程% S6 i$ E- [- Y. J$ b# n2 t% R2 T
& D6 U9 Z3 `: d f/ O0 I
3 d- U6 x @7 L5 y
0 l$ o& K) G3 o5 ~
* @ {5 w6 |3 w. Q& I可以知道初值! @3 c% p% m" n
i ( 0 ) = i 0 . s ( 0 ) = s 0 i(0)=i_0.s(0)=s_0i(0)=i ) b( l$ R4 ]% N. L% `& U; l
0
} a$ }7 j' d% O. T 6 p7 v9 ]" ?1 r$ r0 O
.s(0)=s 5 I$ p. w" s3 d- e7 c/ Y" ~
01 B" P9 |: F* U$ h ]0 }' ]
! M2 c) {( } {7 J+ c( B. w6 c
* ^ m5 f* D$ |% }* ^5 X
因为一开始治愈的和死亡的肯定很少,所以r0可以看为0,于是就有:& | V. e" e8 U) n) O% B
i 0 + s 0 = 1 i_0+s_0=1i 6 C0 Y" f: L( W7 T. F8 K6 E" Y
0# ~: h4 w, F) H: M" a, W: r2 U! d
0 w. a, C [6 X& J +s , ^6 ^5 d0 S3 n4 _% Z4 x7 n
0
! F& V% g# `7 e2 ?+ D2 j $ `9 s7 p/ e5 o
=1
8 b J) T& O" X0 y, K) y* F1 `通过解以上微分方程我们可以根据经验假设λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)的值分别为1和0.5(也就是每个患者可能使1个正常人患病,患者可能有0.5的概率被治愈);由于一开始患者肯定比正常人少很多,所以我们设i0=0.01,s0=0.99。对其求解可以得到s(t), i(t), r(t),的变化图像- `1 O' _, [; f9 _% `# n& n- _0 N
6 [# w2 t$ z n
a( R6 v, X9 {: _7 w4 F( P" @6 Z8 D- V( w) T
* {% w! A( h6 k2 ^( o( y& K- c# ]0 ?
MATLAB程序如下% n$ {; h2 H+ Z& ]! d" h" a- o
ts=0:40;
* h* T* b/ o. _/ px0=[0.01, 0.99];
$ z, \8 \. @; p6 L- u# h[t,x]=ode45(‘ill’,ts,x0);! R* o1 Z0 H. @8 ~7 t
r=1-x(:,1)-x(:,2);
. |% f! d; p6 x) B- m: ]plot(t,x(:,1),t,x(:,2),ts,r,ts,x(:,1)/x(:,2))9 l, k. g; T5 T& {
legend(‘i(t)’,‘s(t)’,‘r(t)’)5 W; S7 s% \$ h* F5 ^
. e$ ]% r! a+ z' S$ o, \ I2 V
1 j; y0 n ^$ F3 c. ?# Jfunction y=ill( t,x)
. r1 `- _7 ^7 ca=1;: |7 {1 N1 Y: c, v! X) ]) h, d
b=0.5;
1 y/ e4 `7 f( [/ T: Dy=[ax(1)x(2)-bx(1);-ax(1)*x(2)];
& q. n( y9 [* O. e7 o; p
. N. P1 v: d4 c+ M. n0 n3 V1 \0 f* }4 z6 g/ E
结果分析:患病人数肯定有个高潮,但之后高潮就会减弱,并逐步降低为0。随着医疗卫生条件的不断提升,患者的 λ \lambdaλ(日接触率)肯定降低,μ \muμ (日治愈率)肯定上升,所以我们可以把λ \lambdaλ调一点为0.8,μ \muμ调高一点为0.6,可以得到以下趋势图。所以应对传染病很关键的一点是我们要提高医疗卫生条件
0 l2 c" R. Z, ?5 b4 G2 B
2 U8 _" i4 E+ Z# E
: t9 I ^. \; C/ H2 g
4 r, F5 c+ p1 S5 s; r) K, R9 g. Q模型二
3 A# t+ c8 M9 L0 C; `. [+ A8 `/ [0 m! ?* o8 |
* z" M9 y( Y0 j5 m$ _! h* ~2 U: ?
实际上,λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)都是随着时间变化的,这里我们设s(t), i(t), r(t) 为第t天健康人、病人、移除者(病愈与死亡之和)的数量, s(t)+ i(t)+r(t)=N..
! ]0 [/ }% l* {! z/ T* W# H2 B(t), (t) ~第t天感染率, 移除率(治愈率与死亡率之和)- z& Y8 t! n! I' |! V8 a( Z
有 d i / d t = λ ( t ) s ( t ) i ( t ) − ( t ) i ( t ) di/dt=\lambda (t)s(t)i(t) - (t)i(t)di/dt=λ(t)s(t)i(t)−(t)i(t)
/ f5 f- _: G$ @. x( P. I因为s远大于i, r,s(t)视为常数,所以有
. J5 |) X, j. n7 {/ g$ R" V; A$ _4 I6 P4 b
8 [+ z# J2 e& f. O
: J2 D% m2 E" g) b# a5 ^& u/ M8 h, n) ?7 B. I
取差分近似导数3 Q2 c$ m, W7 r% W8 Q
! E5 \; q( K4 `
6 b) o% c$ l/ N0 u
$ j& _. f, j4 Y4 ~% ?6 M% ~. x& w# q" U
我们可以先用真实数据对(t)进行展示并进行拟合; I8 j) [" Z5 t2 Y) `" W
" h$ Q0 m+ B# S/ S4 Y4 W+ L5 E; B
/ M% X# [: f8 @( s( L5 I
( d' }9 C8 }" D' u0 J" D {) r7 w" W; @. @% D
当然同样的方法对(t)进行拟合6 {. h7 o; H1 Y! d; `( Z$ X
( D' w/ {' j+ O8 d$ M: R# N \7 t0 n7 q( K4 ~( O
做不出来了,好难,光这些东西就弄了四天,到了数学建模国赛得多难多累啊,哎,让我这个小白手足无措。毕竟还没有正规的培训,这个模型等期末考完试一定好好做做!!!3 C4 S) }6 n. \
冲国奖! D* ^3 ~( ^% u% g. N6 U
冲国奖) m @6 D. n' Z9 g# Z5 ]2 ~
冲国奖
3 ^2 K& l+ p$ d5 @. k————————————————' g. u: h$ R! h" X" C+ A
版权声明:本文为CSDN博主「小白不白嘿嘿嘿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 f0 p6 \, v& O" G+ y% p2 p2 C- y
原文链接:https://blog.csdn.net/weixin_45755332/article/details/107094630+ Q# ~7 N! a, ^3 B: r! l# ?
% J$ [- @& |6 B, ?! x
4 v. S: L) F9 v& V+ [3 E* j% ` |
zan
|