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