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