赞
踩
本文是SIS模型的原理与公式推导,不涉及代码(后续补充)。
对了宝贝儿们,卑微小李的公众号【野指针小李】已开通,期待与你一起探讨学术哟~摸摸大!
SIS模型是流行病学中的一个模型,流行病是具有传播效应的,能够在一个社会网络中进行传播(比如今年的疫情),在这个网络中,每个节点代表一个人,当两个人联系(建立边)的时候,疾病就有可能进行传播。
而信息传播(information dissemination,也称信息扩散)也可以看作是流行病传播,因为信息传播也需要节点与节点之间有边,才能产生概率进行传播。
就比如我得关注某个小姐姐的微博,并且评论了一句“小姐姐真好看,还缺男朋友么”,那么我和小姐姐就是两个节点,关注与评论这个过程就是建立边的过程,这个边是有向边,由我这个节点指向小姐姐这个节点,我传播的信息是“小姐姐真好看,还缺男朋友么”,但是如果小姐姐私信太多,忽略了我这个私信,或者直接把我拉黑了,那么我这个消息就传播不过去。
流行病学模型中是将传播过程分为了三类:
本文讨论的是SIS模型,即节点只有敏感期和感染期的节点,不考虑隔离期的节点。
由于没有隔离期,所以SIS模型只允许节点在 S S S和 I I I两个状态之间交替变换,就如新冠一样,你病好了依然有可能继续被感染,所以大家一定要勤通风,多戴口罩。
在《网络、群体与市场》这本书上,将整个模型的流程概括为:
但是还有种情况,也就是我主要要讲的情况:
由于这是个需要考虑变化率的问题,所以我们可以通过构建微分方程求解。微分方程为:
N
d
i
(
t
)
d
t
=
N
i
(
t
)
λ
s
(
t
)
−
μ
N
i
(
t
)
N \frac{di(t)}{dt} = N i(t) \lambda s(t) - \mu Ni(t)
Ndtdi(t)=Ni(t)λs(t)−μNi(t)
N d s ( t ) d t = − N i ( t ) λ s ( t ) + μ N i ( t ) N \frac{ds(t)}{dt} = - N i(t) \lambda s(t) + \mu Ni(t) Ndtds(t)=−Ni(t)λs(t)+μNi(t)
我们以第一个公式来看,该公式表达了在 t t t时刻感染者 i ( t ) i(t) i(t)的变化率,其构成为当日新增的患者 N i ( t ) λ s ( t ) N i(t) \lambda s(t) Ni(t)λs(t)减去当日治愈的患者 μ N i ( t ) \mu Ni(t) μNi(t)。
N i ( t ) λ s ( t ) N i(t) \lambda s(t) Ni(t)λs(t)的意思是,一共有 N i ( t ) N i(t) Ni(t)个患者,每个人有 λ \lambda λ的概率感染别人,被感染的人的比率那么就有 λ s ( t ) \lambda s(t) λs(t)。 μ N i ( t ) \mu Ni(t) μNi(t)的意思是,一共有 N i ( t ) N i(t) Ni(t)个患者,每个人有 μ \mu μ的概率被治愈。这里都是概率,是因为 d i ( t ) d t \frac{di(t)}{dt} dtdi(t)求的就是比率。
由上面的内容我们可以绘制出如下图:
有了公式后,我们就开始解该微分方程。
由于两个公式只是个负号的区别,所以我们只讨论第一个公式:
N
d
i
(
t
)
d
t
=
N
i
(
t
)
λ
s
(
t
)
−
μ
N
i
(
t
)
N \frac{di(t)}{dt} = N i(t) \lambda s(t) - \mu Ni(t)
Ndtdi(t)=Ni(t)λs(t)−μNi(t)
我们首先先把公式改为习惯的样子:
d
i
d
t
=
λ
i
s
−
μ
i
\frac{di}{dt} = \lambda i s - \mu i
dtdi=λis−μi
这里只是为了方便书写,把 ( t ) (t) (t)去掉了,但是大家要时刻记得 i i i和 s s s都是关于 t t t的函数,而 λ \lambda λ和 μ \mu μ是常数项。
并且我们由已知可得:
s
(
t
)
+
i
(
t
)
=
1
→
s
(
t
)
=
1
−
i
(
t
)
s(t)+i(t)=1 \rightarrow s(t)=1-i(t)
s(t)+i(t)=1→s(t)=1−i(t)
于是公式转换为:
d
i
d
t
=
(
λ
−
μ
)
i
−
λ
i
2
\frac{di}{dt} = (\lambda - \mu)i - \lambda i^2
dtdi=(λ−μ)i−λi2
由于有
i
2
i^2
i2,所以这是个伯努利方程,采用伯努利方程的解法,等式两边同时除
i
2
i^2
i2:
i
−
2
i
′
−
(
λ
−
μ
)
i
−
1
=
−
λ
i^{-2}i' - (\lambda - \mu)i^{-1} = -\lambda
i−2i′−(λ−μ)i−1=−λ
令
i
−
1
=
u
i^{-1}=u
i−1=u,并对其求导可得:
−
i
−
2
i
′
=
d
u
d
t
→
i
−
2
i
′
=
−
d
u
d
t
-i^{-2}i'=\frac{du}{dt} \rightarrow i^{-2}i'=-\frac{du}{dt}
−i−2i′=dtdu→i−2i′=−dtdu
于是原等式变为:
−
d
u
d
t
−
(
λ
−
μ
)
u
=
−
λ
-\frac{du}{dt} - (\lambda - \mu)u=-\lambda
−dtdu−(λ−μ)u=−λ
将负号去掉:
d
u
d
t
+
(
λ
−
μ
)
u
=
λ
\frac{du}{dt} + (\lambda - \mu)u=\lambda
dtdu+(λ−μ)u=λ
我们发现这是一个一阶线性微分方程,直接带通解公式得:
u
=
e
−
∫
(
λ
−
μ
)
d
t
[
∫
λ
e
∫
(
λ
−
μ
)
d
t
d
t
+
c
]
u=e^{-\int(\lambda - \mu)dt}[\int \lambda e^{\int (\lambda - \mu)dt}dt + c]
u=e−∫(λ−μ)dt[∫λe∫(λ−μ)dtdt+c]
对其求解积分得:
u
=
e
−
(
λ
−
μ
)
t
[
λ
λ
−
μ
e
(
λ
−
μ
)
t
+
c
]
u=e^{-(\lambda - \mu)t}[\frac {\lambda}{\lambda - \mu} e^{ (\lambda - \mu)t} + c]
u=e−(λ−μ)t[λ−μλe(λ−μ)t+c]
将其化简可得:
u
=
λ
λ
−
μ
+
c
e
−
(
λ
−
μ
)
t
u = \frac{\lambda}{\lambda - \mu} + c e^{-(\lambda - \mu)t}
u=λ−μλ+ce−(λ−μ)t
将
u
u
u变回
i
i
i得:
i
−
1
=
λ
λ
−
μ
+
c
e
−
(
λ
−
μ
)
t
i^{-1} = \frac{\lambda}{\lambda - \mu} + c e^{-(\lambda - \mu)t}
i−1=λ−μλ+ce−(λ−μ)t
解得
i
i
i:
i
=
[
λ
λ
−
μ
+
c
e
−
(
λ
−
μ
)
t
]
−
1
i=[\frac{\lambda}{\lambda - \mu} + c e^{-(\lambda - \mu)t}]^{-1}
i=[λ−μλ+ce−(λ−μ)t]−1
我们现在的目标是求解
c
c
c,令
i
(
0
)
=
b
i(0)=b
i(0)=b,代入上面的方程得:
b
=
[
λ
λ
−
μ
+
c
]
−
1
b=[\frac{\lambda}{\lambda - \mu} + c]^{-1}
b=[λ−μλ+c]−1
解得:
c
=
1
b
−
λ
λ
−
μ
c=\frac{1}{b}-\frac{\lambda}{\lambda - \mu}
c=b1−λ−μλ
于是得到结果:
i
=
[
λ
λ
−
μ
+
(
1
b
−
λ
λ
−
μ
)
e
−
(
λ
−
μ
)
t
]
−
1
i=[\frac{\lambda}{\lambda - \mu} + (\frac{1}{b}-\frac{\lambda}{\lambda - \mu}) e^{-(\lambda - \mu)t}]^{-1}
i=[λ−μλ+(b1−λ−μλ)e−(λ−μ)t]−1
到这里公式就求解完毕了,不过需要讨论 λ \lambda λ与 μ \mu μ的关系:
至于这个怎么算出来的,我查了许多资料都没有讲解的,只有这么一串代码:
那么这告诉我们,这不是人算的,所以只要会用就行了。
[1]大卫·伊斯利, 乔恩·克莱因伯格.网络、群体与市场——揭示高度互联世界的行为原理与效应机制[M].清华大学出版社:北京,2011-10:398-411.
[2]贺先平贺先平.传染病模型(微分方程)[EB/OL].https://wenku.baidu.com/view/0783ee1e2e3f5727a4e9620d.html,2014-6-22.
[3]KeepLearn.数学建模常用算法——传染病模型(二)SIS模型[EB/OL].https://zhuanlan.zhihu.com/p/142017716,2020-5-20.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。