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