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