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