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