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