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