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