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