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