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