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