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