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