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