Python实现简单的SI传播模型
9 W1 N' t% O% P% ]9 M#SI疾病传播模型的原理9 k0 t. @& x2 |7 h+ M9 ~* b9 C* X
在经典的传染病模型中,种群(Population)内N个个体的状态可分为如下几类$ K8 m: {+ j- `0 e
4 M) O A4 `: V1 O& E U) H" }易感状态(Susceptible)。一个个体在感染前是处于易感状态的,即该个体有可能被邻居个体感染。
% v* X0 d2 ?8 y, Y' ] p H易感状态I(Infected)。一个感染上某种病毒的个体就称为是处于感染状态。,即该个体还会以一定概率感染其邻居个体。, y$ b) A b, V. w& q
移除状态(Remove,Refractory或者Recovered)。也成为免疫状态或恢复状态,当一个个体经历过一个完整的感染周期后,该个体就不再被感染,因此就可以不再考虑改革提。, i& W- F! [! g' H1 U6 c( M
SI传播模型是最简单的疾病传播模型,模型中的所有个体都只可能处于两个状态中的一个
9 C6 U' U" x6 t/ B即易感(S)状态或感染(I)状态。SI模型中的个体一旦被感染后就永远处于感染状态。$ F% e2 @6 C% L) }7 r9 N' _5 I2 q3 R
在给定时刻t,令S(t)与I(t)分别代表该时刻处于易感和感染状态的个体数目,显然有
- z+ e; B6 f: v* q6 N+ PS(t)+I(t)恒等于N,这里,N是个体总数。随着时间t的增长,易感个体与感染个体的接触6 E; w& R. s9 L' J* f3 T
会导致感染个体数量的增加。加入由于个体之间的接触而导致疾病传播的概率为β,疾病仅在; ?+ z5 r) `9 l$ D) P
感染个体和易感个体之间进行接触时才会以概率β将疾病传染给易感个体。在时刻t,易感个体的比例为S(t)/N,感染个体的数量为I(t),一次,易感个体的数量将以如下变化率减少4 Z* N! G# z3 o3 \4 a" u
ds/dt = -β*S(t)I(t)/N
! d6 e4 y2 L) D2 j同时,感染个体的数量会以与易感个体相反的变化率增加,
" S# S( X" Z; Ids/dt = βS(t)*I(t)/N
+ O! N, ?! ]% c2 ^/ j分别将时刻t处于易感状态和感染状态的个体所占比例记为,
: U7 ^! p. B* Bs(t)=S(t)/N5 M3 X$ M) b) T+ Q; }( {
i(t)=I(t)/N6 X. B/ Z; n N+ c9 E2 D7 w
显然有,- O) u @3 M% u5 f
s(t)+i(t)恒等于1,此时之前的公式可以记做9 O( Y" B) P! N- k! s) N2 C
ds/dt=-βsi
2 y$ d( k, J6 n8 R& v* Wdi/dt=βsi
; E P+ N3 F3 S; B" M即
% P0 x7 P7 N. B+ l7 l7 }di/dt=βi(1-i)( t& @1 G* g* I
上式也成为Logistic增长方程式(Logistic growth equation),
4 `3 I( K/ {1 f1 _& G/ O. B方程的解和图像如图9 x- j# @" g( i6 J* k. _