( j( z9 Q5 N7 m! h. p/ ]$ r ' F: G! W, ^8 U5 G" x) r: {) k3 移除人群(Removed):被移出系统的人。因病愈(具有免疫力)或死亡的人。这部分人不再参与感染和被感染过程。 3 Q: l$ Z# s6 o( y 6 d* k7 s/ H1 t, s5 C: E 3 C) o5 B0 M# N9 ]; Z8 Z假设:3 O: L. |# y, L; r) D1 ?6 `' H
' S& B9 q6 X) g6 ^3 ` Y! N: {6 O) U- \; v. C4 U
传染病有免疫性如天花、麻疹等——病人治愈后移出感染系统,称移出者(Removed). " N& @: }) O8 w, `- {* _总人数N不变,健康人、病人和移出者的比例分别为s ( t ) , i ( t ) , r ( t ) s(t), i(t), r(t)s(t),i(t),r(t). ( D+ C+ @; A2 i6 [: G1 {病人的日接触率为λ \lambdaλ , 日治愈率为μ \muμ, 接触数 σ = λ μ \sigma=\frac{\lambda}{\mu}σ= 4 V# u! L( P+ t% `. Z. Xμ 1 x r$ F; @- _/ P5 e/ Lλ' ^, y" t/ a' W& x# ~
. C2 B9 Z. A& z, D4 g4 S! X5 i # a7 n9 F: m e9 `建模:: I W# c3 A c4 F2 h
s ( t ) + i ( t ) + r ( t ) = 1 s(t)+ i(t)+ r(t)=1s(t)+i(t)+r(t)=1 0 e0 j R6 @. Z这个就是病人减去治愈的人,和上一个模型是一样的 ( ]. ~/ C/ H: o7 p" O. C0 x- S; Y$ _ + O5 Z4 x, v, u& p7 V. y; `: Q. q+ A& d
因为有治愈后是有免疫性的,所以可能被感染的总人数要减少,减去移除者就是$ e) Y( c+ x4 V' U
8 Z7 v6 D- J$ v( f9 B( L" l2 Z6 V4 P2 {( y3 S: N5 _6 ^# W
将上式化简为: * H1 U5 Y# V: H3 {' b) w: i" L 4 I9 U8 E; t% x/ r$ P4 B9 W$ y# y' w% r9 L7 k' [' S( @1 Y; x% I1 d
i 0 + s 0 ≈ 1 i_0+s_0\approx 1i 4 T% ^; s {4 k0 $ \+ H+ o/ r& c8 l" ^/ v/ R( } ' A! j; u D$ z$ h# i6 ^ +s 2 a& ]. I2 L; ?- Q+ q5 c
01 {+ Z2 V6 x9 @
* b. J, O+ J) H) U, T7 Z/ b6 j ≈1(通常r ( 0 ) = r 0 r(0)=r_0r(0)=r ! ?. l* | k' A+ a, y7 n1 A5 Y5 c
07 B! `' M& E/ w6 w7 K
' ?$ r1 x- u; j
很小)$ a+ ~) O+ M8 q
* k, B/ r/ R% U Z 5 U* q/ J6 f) G关于i(t) , s(t) 的非线性微分方程组,没有解析解,只能通过数值计算得到s(t), i(t), r(t)的曲线,下面来看下曲线的数值解的MATLAB程序$ G/ ?9 k$ q9 ^) z6 b( s
4 m" j, a( c* Z+ N
+ q# l: {) x' _
这里我们先设λ = 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 / L( |5 w# i# u4 g% T0 6 {# y: _+ Z) j7 {) I% `% T 4 h) K' b& g8 p7 p$ k
=0.01,s - l' `, }% [# b8 c
04 S$ G8 _: v# f% t* D
! q ?$ Y2 Q' e! Q" k: B
=0.99 - @2 H4 v' p0 H也就是平均一个病人人传染一个正常人,治愈率为0.5;开始的病人比例为0.01,正常人为0.99,设没有天生带有病毒抗体的人,所以r 0 = 0 r_0=0r . g6 I# j0 E- `/ E$ o, z) h% N! _# j0 r/ g# p- }+ O6 K8 q1 @: y 6 u! ?: g: y5 d; o7 S/ y, r =0,之后若果病人被治愈,则具有抗体了,有抗体的人为:r = 1 − i − s r=1-i-sr=1−i−s g( Y$ E8 y) u% p 4 Z$ c: X: }* x# J3 N 1 O; z! Q9 N: T9 b) J" hts=0:40; 7 Q9 s& W5 p$ v# }7 tx0=[0.01, 0.99];2 p3 {1 U h* o
[t,x]=ode45('ill',ts,x0); / q5 l" x3 V/ c# l( Tr=1-x(:,1)-x(:,2); 2 _9 H) ~$ c3 B- dplot(t,x(:,1),t,x(:,2),ts,r),grid* X7 x) B' [- O. j
legend('i(t)','s(t)','r(t)') * h! w+ R# e* G! ^ 3 U: h, r7 l+ }3 V. C ) Y# ~% }( `# P+ n" k+ o6 ofunction y=ill( t,x)3 E' f0 c8 e! s% o O, K& }: v
a=1;+ q( Z1 D6 a7 H
b=0.5; & ^" Z: _- L! _y=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];( ~) V5 N2 w3 h2 D0 u
1+ ?0 Y( V! t3 ?
25 q% S& p( O. @
3 2 r9 P4 N5 I9 f) l( x4 % `( Q( D$ t) y/ A5 # ]5 [' z, p& M; k& s& S6+ Q! n( k. Z) s- ~3 A0 K8 u
7. H8 Q7 A4 V1 h3 J
8 8 K0 i# z5 K p# E5 P. C* C6 D9 ; t: n. ~; e2 w1 |2 H108 ]5 |7 {: C8 X/ E! ^
11; q$ w# V2 F' E
- e' q' O7 R+ n- O1 u( W" J
$ E! [: @" U r. ]7 ^
可以看出:s(t)单调减,r(t)单调增,都趋于稳定, i(t)先增后减趋于0.: n v/ [+ `+ \# f; D" f- b& n: f
结果分析; @+ J" r( K- @( f" }3 N7 P3 T5 \
先回顾一下参数- ?- a6 {: g2 Y+ G. L; \0 G
接 触 率 λ ; 治 愈 率 μ ; 1 / μ 平 均 传 染 期 ( 病 人 治 愈 所 需 平 均 时 间 ) ; σ = λ / μ 接 触 数 ( 感 染 期 内 每 个 病 人 有 效 接 触 人 数 ) 接触率 \lambda;治愈率 \mu ; 1/ \mu~平均传染期 (病人治愈所需平均时间);\sigma =\lambda/\mu~接触数 (感染期内每个病人有效接触人数)接触率λ;治愈率μ;1/μ 平均传染期(病人治愈所需平均时间);σ=λ/μ 接触数(感染期内每个病人有效接触人数) 8 S+ H7 Z9 {' ~" ~: R& }5 A可以分析出:5 W; k0 N& F; P
4 X- R8 d+ O; o- Y5 J+ `# R0 T1 a) @# Q" _
随着卫生健康思想水平高,接触率λ \lambdaλ变小( K, I1 q! O7 ?; z0 N+ z9 A0 L+ h
随着医疗水平的提高,治愈率μ \muμ增大$ }* i( ]7 z0 p2 ]
接触数σ = λ / μ \sigma =\lambda/\muσ=λ/μ减小——有助于控制传播. 8 D9 j8 K. B' ]- \; r K6 e我们可以试试稍微减少一下λ \lambdaλ,增大μ \muμ,来看下效果( \3 i: K! {- W
0 m1 A r1 B6 u2 o ^% z) r# r _* N+ [; \# P/ S5 m
ts=0:40; * ?- s4 \* L4 T x& ix0=[0.01, 0.99];& G; B( A1 [- U
[t,x]=ode45('ill',ts,x0); / l$ a7 U9 l1 H& W S& Tr=1-x(:,1)-x(:,2);- u- {$ |. [: K3 L' I
plot(t,x(:,1),t,x(:,2),ts,r),grid: R0 m6 z6 e: b7 v
legend('i(t)','s(t)','r(t)') 7 p8 V" w7 u% Z & J$ O# T" G# ?: Y, A( B # Z6 b& Y7 E5 N2 _- o& cfunction y=ill( t,x) # U x" P% y' ?& J1 {+ J! va=0.8;6 H, r E2 }# d( u
b=0.6;' m8 S" V; O2 i0 j# J7 I
y=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];/ N3 {7 k, n0 U" _, J; N1 U/ m
1 # b2 w, `4 V5 k2" M& f; |. n9 l j
33 R$ a- B* a: Z8 }8 a( S( r, @
4 * [# o4 M3 Y0 K! M5% ^7 m/ J! ]" `
6* L& G) {/ M/ ?" E) W
76 J6 R# {! `7 |9 ?5 i
8 & \5 d: g& e: l* W: z; i9! m6 i+ S$ E; x' N$ R: @2 N$ Q
102 G O5 A% D/ N" X5 B4 p4 {6 B
11 / |$ [! u/ W& B1 k( u( I U2 u9 x6 j( H/ m9 V, S2 P
( J8 q! ^. p# b* t
综上我们可以得出结论:想要减少传染病的传播,我们就要在接触数σ \sigmaσ上下功夫。 % H2 a; @. P. n1 l3 f* M2 D A" L. u8 t# V: U
, {! u2 u* F* S! p0 `8 D" K实战建模( ~) ?8 U! \! { Y n
数据处理7 G$ x4 c: b+ D$ ?( x% n6 ^: h
5 x5 a" e9 z2 {7 p' H! `) N0 W: x f
首先,我用python爬虫爬取了丁香医生官方数据,一共5534条数据 特征包括感染、死亡、治愈的总数,当日感染、死亡、治愈新增,疑似病例,时间,省份等14个特征 z' g! }/ S$ G E2 S 0 N& I6 i, L/ C0 w& B3 r! @! U, o4 J, k
+ \7 y8 t6 t& K. V+ q- N
; X. d! t& E: H$ A G2 U5 S5 @然后用python进行数据提取,提取了较为典型的湖北省的数据作为我的参考依据 ; B) M6 H! ^$ f0 n7 G1 i8 L+ ^8 |1 c% @4 {( O
8 b8 {/ @2 {+ O/ R
, p) h" m% t, t. g9 _
! @1 H; B \0 n" ^% B8 M9 R
然后用python对数据进行清洗,提取出了患病总数,现存患者总数,死亡总数,治愈总数,时间,省份这几个特征4 J7 B2 J5 u( n# J' Q$ X
: p# E7 h! ], W: ~8 o0 T# J
* E* j0 B. h2 C9 I6 a/ I A
对日期格式进行修改,值保留月和日,并与死亡人数的位置交换 3 k" B. s" h7 v* l4 Q T# y; c/ Y" ^ . t/ @% F% f' f6 K这里我用python对提取的四个特征分别进行了数据分析(主要包括计算最值,平均值等,),并把1.20日作为第一天,7.02日作为最后一天也就是第165天,做了可视化可视化处理。 ' l3 N5 x# m6 ]" _感染人数示意图5 G5 ]3 e+ q, \- O& \
! ]& h' ]# H, N0 p6 e$ p" _
/ n- F0 g6 j& c* T* [
治愈人数示意图 * y$ Z+ u3 q2 h ^# u6 { x' t J" r1 Z8 f l& r) m5 N) x
% [7 m. G9 m8 p) { { B ; I# j, s/ W9 `3 L5 j6 K 9 F/ G8 Q% c3 F现存患者数量图3 j1 R( [4 {. z: a4 d/ o
2 B) T- X J2 i& D' T
) o: @/ X5 D" E/ t( a8 j死亡人数示意图+ S( o/ U3 ~. P* P
9 k# u7 N- l6 ~3 j) m: D; j0 X3 G
3 p8 M) w& ^( P% g& L" E
6 C" a- ]" O$ K# e2 b0 \3 I+ Y& y+ }/ G! ?
4 K" r4 P2 o' c7 {$ Q+ X
可以知道初值5 P+ k0 [/ u9 u3 E8 D9 P1 L, Q5 h
i ( 0 ) = i 0 . s ( 0 ) = s 0 i(0)=i_0.s(0)=s_0i(0)=i 8 L/ L, @ t1 i) B: ^) N# a
05 S1 C. A& E- w! t! L
' M% b. g: O; @) T E4 p
.s(0)=s : N. h/ ?1 y3 U0 M$ m" J+ s* X1 G
0 ; {& u8 @* r& v8 h8 u 0 Y5 S5 m) N! k! [' ^/ [9 v3 r
( t T9 j1 I4 n2 T1 I因为一开始治愈的和死亡的肯定很少,所以r0可以看为0,于是就有:) m2 ]' r+ `- d" T
i 0 + s 0 = 1 i_0+s_0=1i 4 q) d b1 U8 D. y1 k' A1 |2 `4 i! @) v0 7 L1 { d V+ k$ m/ b- z( {% T 8 j' Z" o& [/ ]% t& {" Y d +s . q* _7 F- ^/ N9 i9 [09 }" ]3 w5 T h
/ O: a8 _ G; {" b
=19 ^ _" R3 D$ S% _ o
通过解以上微分方程我们可以根据经验假设λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)的值分别为1和0.5(也就是每个患者可能使1个正常人患病,患者可能有0.5的概率被治愈);由于一开始患者肯定比正常人少很多,所以我们设i0=0.01,s0=0.99。对其求解可以得到s(t), i(t), r(t),的变化图像 9 |( u' ?* P. q. z1 Z% `2 B* e+ ^: _9 B5 u
- A* e3 l/ o H; T: m s
# O7 _( h6 w! F
8 ~& I7 l W' I8 U) Z7 \MATLAB程序如下- W+ a* z. g1 g9 Q$ G6 s% D
ts=0:40;0 e/ m! k; t- F( @
x0=[0.01, 0.99];: p! c' f# E8 e7 t r0 t s5 P, P
[t,x]=ode45(‘ill’,ts,x0);* o) _+ _5 h) m7 Q$ Y
r=1-x(:,1)-x(:,2);2 i) i( s5 X# E: H3 U) y
plot(t,x(:,1),t,x(:,2),ts,r,ts,x(:,1)/x(:,2)) . i+ p C A7 }/ z, nlegend(‘i(t)’,‘s(t)’,‘r(t)’) ! |1 M7 }& }# F+ V. l, V4 j$ t! a# N: G6 D! ^2 P& H( T. t7 g
5 E$ ?/ W; X" H0 Q$ z- rfunction y=ill( t,x)/ d9 q. K2 }! t% b6 n5 p* J
a=1;) B7 ~0 `4 U! l" | ?! W' p
b=0.5; % Y$ @# C/ ]) U( Fy=[ax(1)x(2)-bx(1);-ax(1)*x(2)]; ( x$ O. w2 S) e( \$ M* W( K' L. b+ w* w! H8 L
$ W9 J; Z7 {% _2 C) z. C5 e
结果分析:患病人数肯定有个高潮,但之后高潮就会减弱,并逐步降低为0。随着医疗卫生条件的不断提升,患者的 λ \lambdaλ(日接触率)肯定降低,μ \muμ (日治愈率)肯定上升,所以我们可以把λ \lambdaλ调一点为0.8,μ \muμ调高一点为0.6,可以得到以下趋势图。所以应对传染病很关键的一点是我们要提高医疗卫生条件$ P2 Y$ O5 y$ d: d: R
: A. w) k8 R1 M, \( C* z! E9 \! p& m7 x: c# O; S. ]& N
1 B7 Q% S( d2 O7 J模型二4 H% A- l- K/ R) Q- H
4 ^+ L/ J: `) j* u5 F$ h$ U4 B
5 Y& U4 S/ U5 @% T+ P
实际上,λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)都是随着时间变化的,这里我们设s(t), i(t), r(t) 为第t天健康人、病人、移除者(病愈与死亡之和)的数量, s(t)+ i(t)+r(t)=N..3 y5 L6 n3 H$ C! R
(t), (t) ~第t天感染率, 移除率(治愈率与死亡率之和)9 \- |4 m; R, t# O
有 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)% S( B' u# P/ x7 N. ^" S7 L2 k
因为s远大于i, r,s(t)视为常数,所以有! w9 [3 `; t z6 g) j' Y