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