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