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