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