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