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