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