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