QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5724|回复: 0
打印 上一主题 下一主题

数学建模之传染病SIR模型(新冠真实数据)

[复制链接]
字体大小: 正常 放大
杨利霞        

5273

主题

82

听众

17万

积分

  • TA的每日心情
    开心
    2021-8-11 17:59
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    网络挑战赛参赛者

    网络挑战赛参赛者

    自我介绍
    本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。

    群组2018美赛大象算法课程

    群组2018美赛护航培训课程

    群组2019年 数学中国站长建

    群组2019年数据分析师课程

    群组2018年大象老师国赛优

    跳转到指定楼层
    1#
    发表于 2021-6-22 15:35 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    0 D) Y& S3 t4 V* Z+ D2 K
    数学建模之传染病SIR模型(新冠真实数据)
    ; l/ ?2 p  E4 O6 u' b传染病模型的基本问题
    7 K2 I2 K9 o* L. {0 P! H! M描述传染病的传播过程" D' T+ |% M6 v6 i# z3 V" X0 ~
    分析受感染人数的变化规律
    8 e6 f6 b( X) l" P" W  M* b预报传染病高潮到来的时刻
    ' \2 L' g" o; V+ G, [预防传染病蔓延的手段8 V6 Z4 n2 a4 [; V
    按照传播过程的一般规律用机理分析方法建立模型
    # y( g+ s, l# T6 y0 |' _" v6 Z* Z注:我们这里是介绍数学医学领域中基本的传染病模型。不从医学角度分析各种传染病的特殊机理,按照传播过程的规律建立微分方程模型.5 d4 t6 j" D" V- i5 w, y

    9 C  i1 E  ]/ w
    ; |0 v2 `; k0 }* ^1 z
    建立模型. d# f$ Q' v- F$ s
    模型一0 D5 ]* s2 p! J4 g
    假设:
    1 x5 z( X7 O; B. N* R9 t: Q- _4 {7 M) z

    1 y$ s: I) u" R! F, ]$ k设已知感染人数为i ( t ) i(t)i(t)(病人数量随时间变化)
    & J7 J2 ?8 W/ p( G设每个病人(单位时间)每天有效接触(足以使人治病)人数为λ \lambdaλ
    . L7 }2 E, c: [& U, Q2 w) d模型:' m6 ?8 c+ X. k3 ]$ x8 L
    单位时间Δ t \Delta{t}Δt内,新 增 的 人 数 ( 现 有 − 原 有 ) = 原 有 的 × λ 新增的人数(现有-原有)=原有的 \times \lambda新增的人数(现有−原有)=原有的×λ,即
    9 j6 C4 b4 t0 {+ S
    ; ~6 ^& E5 N2 r$ A' a, [- J

    3 Q2 g+ t8 {1 x; J: Hi ( 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
    , n4 a- R% `$ P+ P9 \% N" K/ W5 R一开始的感染人数为i 0 i_0i
    0 R6 a- r7 S, B) L4 Y" f4 `8 b0
    0 X( y" \# R' u1 E6 F0 r​       
    6 m7 M+ W8 c! I) E' M% j/ F   A: Z$ D2 X" w* v
    i ( 0 ) = i 0 i(0)=i_0i(0)=i , t( P! d1 R. ~/ @
    0
    , Z4 G. ]( P2 g' Y2 V​       
    7 Y& H! |% g7 v+ D! r$ P9 ` ! C$ h0 z7 V. H- n- [* o
    解微分方程可以得到
    0 ], o  Z8 S) ^5 _i ( t ) = i 0 e λ t i(t)=i_0e^{\lambda t}i(t)=i % b0 [" ]0 a. X  k+ w* M
    0
    ' X$ m; f. S" w" H/ m​       
    & z+ n: H  Q7 l- P+ t( ^+ C; O4 m e
    / I; T, P+ `) E/ Qλt
    7 q, |8 q- _/ |: l1 f# P
    2 W# `6 w$ ]4 Y" i, Q所以可以可到当λ → ∞ \lambda \rightarrow \infinλ→∞时i ( t ) → ∞ i(t) \rightarrow \infini(t)→∞' j. C& d" i: G2 @  F6 X. |
    当然这是不可能的,因为我们考虑的因素太少了,首先一个是,若有效接触的是病人,则不能使病人数增加,所以必须区分已感染者(病人)和未感染者(健康人)看模型二来解决这个问题3 w9 q6 x, L1 A& |+ X0 B" J- K+ U

    ( f/ _5 x3 _4 q" N0 r
      a4 m! H- G. b
    模型二
    / n7 n4 P  o! ]! }+ w* h# Q假设:
    / o9 I* R+ b2 F" M# M" {( [
    . x9 D" u$ o' u6 L

    / ^8 s* J* m0 Y' z6 p将人群分为两类:易感染者(Susceptible,健康人)和已感染者(Infective, 病人).
    4 G; D7 r8 V7 s: K  o8 m( o总人数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
    ) e7 e  B" D' Z( ]4 }/ V& p' t每个病人每天有效接触人数为λ \lambdaλ(日接触率),且使接触的健康人致病.5 B: I/ T& d! G+ m8 y
    建模:
    : R0 {3 D; I% p, `6 M, c# ~0 M( L每天新增的总人数为原有的人数乘以每个人可以传染的健康的人数,再乘Δ t \Delta tΔt& j5 }) p) S2 h7 s5 O) ^: L$ ^
    2 `* `2 S% O) A5 |& }- {! r; S
    # M: Y1 _7 |3 J* `1 I$ `+ T
    Δ t \Delta tΔt除过去,两遍N约分得到下面,! u1 i: k8 Y, V% M

    5 Q7 N) D+ p$ \% H7 ?8 |3 \
    4 A0 m+ d1 k9 }
    MATLAB解一下这个微分方程
    " A7 U/ |5 z$ x0 h$ N) g6 [
    * {' P7 `& C; y# y

    5 D/ }8 o3 Z$ I+ A* [" wy=dsolve('Dy=n*y*(1-y)','t');$ A4 ]5 b1 x& E$ y+ R7 `& q8 S0 l

    0 Y' Y- l, O( z& O

    " z- d0 w( N0 b/ V$ C& Wy =6 G4 U  z  r5 ?  f8 b
    -1/(exp(C1 - n*t) - 1)
    4 q/ ~4 _# V  T1 J$ J( a" k9 [                      00 ^& Q6 [8 s4 j+ A) x
                          1. {5 v  P' Y/ h3 W2 P6 L1 r
    19 o  r% y6 F# o; Q
    21 N% R' W- f  A9 O4 l( r% n) X
    3
    : n# }8 g4 X8 W3 o4
    3 \8 t. y5 f, k3 Q5
    9 i& W1 N( C, `7 ?+ B& b8 x( @6( W4 ?* j! A$ P9 s* B4 S6 d' W
    写规范点就是这个函数
    4 O0 Y9 R1 k& o8 ]# p/ b7 `- _) m0 W; o! j

    % C: }& J3 S! J& z6 S函数图像大致为
    ( K& y% X9 s- J  ?! h$ f' t3 l: B% \* q2 l  a* ?, j3 R
      P& \4 x: l& _% p
    可以看出t = t m t=t_mt=t
    / i2 h0 i' f4 U% N' b4 ?! D7 hm7 l( z3 J1 b2 I0 Y( e" x& f
    ​        9 M9 _2 s9 q! A- \
    时这里图像的斜率有个最大值,其也就是传染的最快的时候,即传染病的高潮时刻,当然t m t_mt & b( p* V) y$ n* {4 T+ o3 j+ n
    m2 X- u7 z/ J; V# c, h! j
    ​       
    1 U0 a( p  Y2 _1 B6 h 是可以求出来的
    8 ]) e- }* W, L( r9 R* h2 b/ M  E* U% O6 a- @

      L- w  i9 g+ @再看原式,当t → ∞ t\rightarrow \infint→∞时i → 1 i\rightarrow 1i→19 m" P3 X5 H7 e, b' D% ?! a
    病人的比例为1,当然这也是不可能的,因为我们还没有考虑有没有可能治愈,看模型三8 `4 {  n' B4 O* [8 [

    ' W) f" A2 X3 g' F& K

    : L1 P) e' ~+ l: n* K模型三0 C! C0 k) b: T; {( _
    假设:
    ) n" X, K! J3 H) {' c4 y" W5 E( R& U4 f+ R, P

    9 O' d$ J& d% l* H. [. a传染病无免疫性如伤风、痢疾等——病人治愈成为健康人,健康人可再次被感染。4 R" o% ?4 v3 k# E! Y- r
    病人每天治愈的比例为μ \muμ (日治愈率),1 μ \frac{1}{\mu} - K8 W8 {: V  ^3 B
    μ- `" a* L  J/ B8 X8 h, K
    1% t0 E6 J& G7 R5 [* k8 l
    ​        " W4 V( Z: A$ u1 `
    为感染期,- H# ?8 e$ f. C$ B6 ]7 b
    模型
    ! I" R* P5 A! |9 S4 [6 O5 C这是减去了治愈人数之后的新增人数# i: B5 k( ]0 ~# F# n3 F8 o$ n

    ! s$ G1 @  x( k9 L  }! d( E

    , ~' ?1 K5 c0 t" J. F6 \' T+ o+ H* A* a- n0 F) J

    0 `' W7 j1 ~" t9 S" s) _σ \sigmaσ 为一个感染期内每个病人的有效接触人数,称为接触数
    ( y, x2 L  s2 X
    6 v" J# \3 @8 P5 [/ u
    ( [' Q% T6 l% y6 O
    可以画出上面的图形分析下0 U. W+ M% x& L$ g9 s: f% Y2 J
    ; I' S5 V+ [, N8 r# u2 K+ y
    , H% J' a2 d0 k) p1 H3 f8 q0 x( F
    对上面的公式进行分析,可以得到,当i = 1 − 1 σ i=1-\frac{1}{\sigma}i=1− 5 D$ w# [% o: l1 _( l
    σ
    " c8 \" i; S. ~8 _1
    ! N- |2 Z7 i- R" @( `# }7 E​       
    & u7 {# d& ^& m7 G+ Y% B3 z/ C' r 时,i ii对t的导数为0这也就到了i ii的最大值;当0 < i < 1 − 1 σ 0<i<1-\frac{1}{\sigma}0<i<1− # B" N, z# x$ p6 H8 Z9 s
    σ
    * `2 b% d: l- A1 O1
    7 R( w2 s4 [  ^# b' w​       
    % C0 o( a! V# c# T% C# o 时,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−
    5 a/ Q8 Z2 O' T1 T! \) y; Gσ
    & y. C0 S4 s  W; P1
    * {: q* _9 }0 f: [' f0 P9 z# K​       
    + y4 T5 j5 W) }: z( B" M ,d i / d t < 0 di/dt<0di/dt<0,i是单调递减的。( f: B+ r3 ?; X! t! B& V$ v6 ^7 |

    7 L% V* b/ b! Q% }% x3 `: h
    3 L& K* F# T  p" ~( E- O; _
    当然我们也可以画出i ii随t的函数图像
    3 ~$ E3 g, _) G+ z- w7 W& R
    " P3 |+ `2 ]3 O2 {! `
    1 j* f0 h6 I" c7 Y: K: w$ i8 b
    先看红线,若初始条件i 0 > 1 − 1 σ i_0>1-\frac{1}{\sigma}i
    & Y0 N8 l. L0 A# G& u& Q9 n0
    ' D" q3 M. H5 m. Q​        : r. F& q3 k4 L3 s  u' ]
    >1−
    / _5 H; b: ?+ x, o  X5 ^σ
    2 u+ j4 C" V2 v5 _3 H1
    6 J5 x7 o+ l, B0 [​       
    . I- a6 l4 B/ q0 u% ? d i / d t < 0 di/dt<0di/dt<0,i就是单调递减的,1 _5 v: M4 Q# s( E$ k* \# G
    若若初始条件i 0 < 1 − 1 σ i_0<1-\frac{1}{\sigma}i
    / @6 ]6 Z% W8 Z0
    ; d, V+ P. K2 i9 M8 i& K1 s; i9 m​        5 l- j  h9 t4 {+ s# r
    <1− 0 z5 V; l% p2 c, ~$ h6 ?, L1 m
    σ, K3 r% r/ b1 h/ H. B5 h% p: ~
    1: W* r5 K: \: U) ~
    ​        3 Z8 b) L) }3 F% [9 r4 x7 z6 `
    ,i就是递增的,可以看到i对t的导数图像有一个最大值,下面的黑线就有一个增加速率最快的一个值,按S形曲线增长9 J* P$ _6 ]/ p8 y

    ' ~% G+ Q: Y/ l  F5 j; ~
    6 R5 W. E9 o2 ~+ r' J
    σ = < 1 \sigma =<1σ=<1时d i / d t < 0 di/dt<0di/dt<0 i肯定是单调下降的,最终降到0# l9 h2 ^& k, K% a8 ]2 J7 z

    ( C6 F. Y( x- g1 y& D5 O+ c

    ) z; r% p* a  B( U% U4 K8 I( ]$ O
    7 c/ w. b- _8 @' i/ B2 `/ G; g/ q. K
    综上:
    / k! k- l8 ~- q; _) l$ P想让患病者越来越少,σ \sigmaσ必须小于等于1,即感染期内有效接触使健康者感染的人数不超过原有的病人数.
    6 @; y2 K4 \( j/ E) c0 _3 i. o( _0 p0 G( f8 n3 L7 k# D

    # b1 K2 O% Q; k这里我们分析的是感染之后还能感染的情况,但有些病毒感染之后会在体内生成抗体,就不会再被感染了,下面我们分析这种情况。
    0 p& r5 Y; ^+ o; T. N5 j$ }2 q! [' `4 C* }) s$ E# d

    7 z* ]) t0 f9 F/ r模型四 SIR模型& A/ u4 M/ b& h2 x3 [
    SIR模型是常见的一种描述传染病传播的数学模型,其基本假设是将人群分为以下三类:! b! z! a* {4 \4 p* l# L3 X9 l7 P
    : H9 W* D; s9 H. N; {5 }$ B

    ! c+ m' G8 F  C9 o1 易感人群(Susceptible):指未得病者,但缺乏免疫能力,与感病者接触后容易受到感染。/ P' @- L" [6 c
    0 v5 h0 A7 C- K1 V3 b& k. X: K

    3 [9 c! p" X* ^- I6 O/ K8 F; a2 感染人群(Infective):指染上传染病的人,他可以传播给易感人群。; y3 w/ o/ u5 f& \& r0 D' Q7 L8 {7 q

    ( j( z9 Q5 N7 m! h. p/ ]$ r

    ' F: G! W, ^8 U5 G" x) r: {) k3 移除人群(Removed):被移出系统的人。因病愈(具有免疫力)或死亡的人。这部分人不再参与感染和被感染过程。
    3 Q: l$ Z# s6 o( y
    6 d* k7 s/ H1 t, s5 C: E

    3 C) o5 B0 M# N9 ]; Z8 Z假设:3 O: L. |# y, L; r) D1 ?6 `' H

    ' S& B9 q6 X) g6 ^3 `  Y! N
    : {6 O) U- \; v. C4 U
    传染病有免疫性如天花、麻疹等——病人治愈后移出感染系统,称移出者(Removed).
    " N& @: }) O8 w, `- {* _总人数N不变,健康人、病人和移出者的比例分别为s ( t ) , i ( t ) , r ( t ) s(t), i(t), r(t)s(t),i(t),r(t).
    ( D+ C+ @; A2 i6 [: G1 {病人的日接触率为λ \lambdaλ , 日治愈率为μ \muμ, 接触数 σ = λ μ \sigma=\frac{\lambda}{\mu}σ=
    4 V# u! L( P+ t% `. Z. Xμ
    1 x  r$ F; @- _/ P5 e/ Lλ' ^, y" t/ a' W& x# ~
    ​       
    . C2 B9 Z. A& z, D4 g4 S! X5 i
    # a7 n9 F: m  e9 `建模:: I  W# c3 A  c4 F2 h
    s ( t ) + i ( t ) + r ( t ) = 1 s(t)+ i(t)+ r(t)=1s(t)+i(t)+r(t)=1
    0 e0 j  R6 @. Z这个就是病人减去治愈的人,和上一个模型是一样的
    ( ]. ~/ C/ H: o7 p" O. C0 x- S; Y$ _
    + O5 Z4 x, v, u& p
    7 V. y; `: Q. q+ A& d
    因为有治愈后是有免疫性的,所以可能被感染的总人数要减少,减去移除者就是$ e) Y( c+ x4 V' U

    8 Z7 v6 D- J$ v( f9 B
    ( L" l2 Z6 V4 P2 {( y3 S: N5 _6 ^# W
    将上式化简为:
    * H1 U5 Y# V: H3 {' b) w: i" L
    4 I9 U8 E; t% x/ r$ P4 B9 W$ y# y
    ' w% r9 L7 k' [' S( @1 Y; x% I1 d
    i 0 + s 0 ≈ 1 i_0+s_0\approx 1i
    4 T% ^; s  {4 k0
    $ \+ H+ o/ r& c8 l" ^/ v/ R( }​       
    ' A! j; u  D$ z$ h# i6 ^ +s 2 a& ]. I2 L; ?- Q+ q5 c
    01 {+ Z2 V6 x9 @
    ​       
    * b. J, O+ J) H) U, T7 Z/ b6 j ≈1(通常r ( 0 ) = r 0 r(0)=r_0r(0)=r ! ?. l* |  k' A+ a, y7 n1 A5 Y5 c
    07 B! `' M& E/ w6 w7 K
    ​        ' ?$ r1 x- u; j
    很小)$ a+ ~) O+ M8 q

    * k, B/ r/ R% U  Z

    5 U* q/ J6 f) G关于i(t) , s(t) 的非线性微分方程组,没有解析解,只能通过数值计算得到s(t), i(t), r(t)的曲线,下面来看下曲线的数值解的MATLAB程序$ G/ ?9 k$ q9 ^) z6 b( s
    4 m" j, a( c* Z+ N
    + q# l: {) x' _
    这里我们先设λ = 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
    / L( |5 w# i# u4 g% T0
    6 {# y: _+ Z) j7 {) I% `% T​        4 h) K' b& g8 p7 p$ k
    =0.01,s - l' `, }% [# b8 c
    04 S$ G8 _: v# f% t* D
    ​        ! q  ?$ Y2 Q' e! Q" k: B
    =0.99
    - @2 H4 v' p0 H也就是平均一个病人人传染一个正常人,治愈率为0.5;开始的病人比例为0.01,正常人为0.99,设没有天生带有病毒抗体的人,所以r 0 = 0 r_0=0r
    . g6 I# j0 E- `/ E$ o, z) h% N! _# j0
      r/ g# p- }+ O6 K8 q1 @: y​       
    6 u! ?: g: y5 d; o7 S/ y, r =0,之后若果病人被治愈,则具有抗体了,有抗体的人为:r = 1 − i − s r=1-i-sr=1−i−s
      g( Y$ E8 y) u% p
    4 Z$ c: X: }* x# J3 N

    1 O; z! Q9 N: T9 b) J" hts=0:40;
    7 Q9 s& W5 p$ v# }7 tx0=[0.01, 0.99];2 p3 {1 U  h* o
    [t,x]=ode45('ill',ts,x0);
    / q5 l" x3 V/ c# l( Tr=1-x(:,1)-x(:,2);
    2 _9 H) ~$ c3 B- dplot(t,x(:,1),t,x(:,2),ts,r),grid* X7 x) B' [- O. j
    legend('i(t)','s(t)','r(t)')
    * h! w+ R# e* G! ^
    3 U: h, r7 l+ }3 V. C

    ) Y# ~% }( `# P+ n" k+ o6 ofunction y=ill( t,x)3 E' f0 c8 e! s% o  O, K& }: v
    a=1;+ q( Z1 D6 a7 H
    b=0.5;
    & ^" Z: _- L! _y=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];( ~) V5 N2 w3 h2 D0 u
    1+ ?0 Y( V! t3 ?
    25 q% S& p( O. @
    3
    2 r9 P4 N5 I9 f) l( x4
    % `( Q( D$ t) y/ A5
    # ]5 [' z, p& M; k& s& S6+ Q! n( k. Z) s- ~3 A0 K8 u
    7. H8 Q7 A4 V1 h3 J
    8
    8 K0 i# z5 K  p# E5 P. C* C6 D9
    ; t: n. ~; e2 w1 |2 H108 ]5 |7 {: C8 X/ E! ^
    11; q$ w# V2 F' E
    - e' q' O7 R+ n- O1 u( W" J
    $ E! [: @" U  r. ]7 ^
    可以看出:s(t)单调减,r(t)单调增,都趋于稳定, i(t)先增后减趋于0.: n  v/ [+ `+ \# f; D" f- b& n: f
    结果分析; @+ J" r( K- @( f" }3 N7 P3 T5 \
    先回顾一下参数- ?- a6 {: g2 Y+ G. L; \0 G
    接 触 率 λ ; 治 愈 率 μ ; 1 / μ   平 均 传 染 期 ( 病 人 治 愈 所 需 平 均 时 间 ) ; σ = λ / μ   接 触 数 ( 感 染 期 内 每 个 病 人 有 效 接 触 人 数 ) 接触率 \lambda;治愈率 \mu ; 1/ \mu~平均传染期 (病人治愈所需平均时间);\sigma =\lambda/\mu~接触数 (感染期内每个病人有效接触人数)接触率λ;治愈率μ;1/μ 平均传染期(病人治愈所需平均时间);σ=λ/μ 接触数(感染期内每个病人有效接触人数)
    8 S+ H7 Z9 {' ~" ~: R& }5 A可以分析出:5 W; k0 N& F; P

    4 X- R8 d+ O; o- Y5 J+ `
    # R0 T1 a) @# Q" _
    随着卫生健康思想水平高,接触率λ \lambdaλ变小( K, I1 q! O7 ?; z0 N+ z9 A0 L+ h
    随着医疗水平的提高,治愈率μ \muμ增大$ }* i( ]7 z0 p2 ]
    接触数σ = λ / μ \sigma =\lambda/\muσ=λ/μ减小——有助于控制传播.
    8 D9 j8 K. B' ]- \; r  K6 e我们可以试试稍微减少一下λ \lambdaλ,增大μ \muμ,来看下效果( \3 i: K! {- W

    0 m1 A  r1 B6 u2 o  ^% z) r# r
      _* N+ [; \# P/ S5 m
    ts=0:40;
    * ?- s4 \* L4 T  x& ix0=[0.01, 0.99];& G; B( A1 [- U
    [t,x]=ode45('ill',ts,x0);
    / l$ a7 U9 l1 H& W  S& Tr=1-x(:,1)-x(:,2);- u- {$ |. [: K3 L' I
    plot(t,x(:,1),t,x(:,2),ts,r),grid: R0 m6 z6 e: b7 v
    legend('i(t)','s(t)','r(t)')
    7 p8 V" w7 u% Z
    & J$ O# T" G# ?: Y, A( B

    # Z6 b& Y7 E5 N2 _- o& cfunction y=ill( t,x)
    # U  x" P% y' ?& J1 {+ J! va=0.8;6 H, r  E2 }# d( u
    b=0.6;' m8 S" V; O2 i0 j# J7 I
    y=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];/ N3 {7 k, n0 U" _, J; N1 U/ m
    1
    # b2 w, `4 V5 k2" M& f; |. n9 l  j
    33 R$ a- B* a: Z8 }8 a( S( r, @
    4
    * [# o4 M3 Y0 K! M5% ^7 m/ J! ]" `
    6* L& G) {/ M/ ?" E) W
    76 J6 R# {! `7 |9 ?5 i
    8
    & \5 d: g& e: l* W: z; i9! m6 i+ S$ E; x' N$ R: @2 N$ Q
    102 G  O5 A% D/ N" X5 B4 p4 {6 B
    11
    / |$ [! u/ W& B1 k( u( I  U2 u9 x6 j( H/ m9 V, S2 P
    ( J8 q! ^. p# b* t
    综上我们可以得出结论:想要减少传染病的传播,我们就要在接触数σ \sigmaσ上下功夫。
    % H2 a; @. P. n1 l3 f* M2 D  A" L. u8 t# V: U

    , {! u2 u* F* S! p0 `8 D" K实战建模( ~) ?8 U! \! {  Y  n
    数据处理7 G$ x4 c: b+ D$ ?( x% n6 ^: h

    5 x5 a" e9 z2 {7 p' H
    ! `) N0 W: x  f
    首先,我用python爬虫爬取了丁香医生官方数据,一共5534条数据 特征包括感染、死亡、治愈的总数,当日感染、死亡、治愈新增,疑似病例,时间,省份等14个特征
      z' g! }/ S$ G  E2 S
    0 N& I6 i, L/ C0 w& B
    3 r! @! U, o4 J, k
    + \7 y8 t6 t& K. V+ q- N

    ; X. d! t& E: H$ A  G2 U5 S5 @然后用python进行数据提取,提取了较为典型的湖北省的数据作为我的参考依据
    ; B) M6 H! ^$ f0 n7 G1 i8 L+ ^8 |1 c% @4 {( O
    8 b8 {/ @2 {+ O/ R
    , p) h" m% t, t. g9 _
    ! @1 H; B  \0 n" ^% B8 M9 R
    然后用python对数据进行清洗,提取出了患病总数,现存患者总数,死亡总数,治愈总数,时间,省份这几个特征4 J7 B2 J5 u( n# J' Q$ X
    : p# E7 h! ], W: ~8 o0 T# J
    * E* j0 B. h2 C9 I6 a/ I  A
    对日期格式进行修改,值保留月和日,并与死亡人数的位置交换
    3 k" B. s" h7 v* l4 Q
      T# y; c/ Y" ^

    . t/ @% F% f' f6 K这里我用python对提取的四个特征分别进行了数据分析(主要包括计算最值,平均值等,),并把1.20日作为第一天,7.02日作为最后一天也就是第165天,做了可视化可视化处理。
    ' l3 N5 x# m6 ]" _感染人数示意图5 G5 ]3 e+ q, \- O& \
    ! ]& h' ]# H, N0 p6 e$ p" _
    / n- F0 g6 j& c* T* [
    治愈人数示意图
    * y$ Z+ u3 q2 h  ^# u6 {  x' t  J" r1 Z8 f  l& r) m5 N) x

    % [7 m. G9 m8 p) {  {  B
    ; I# j, s/ W9 `3 L5 j6 K

    9 F/ G8 Q% c3 F现存患者数量图3 j1 R( [4 {. z: a4 d/ o
    2 B) T- X  J2 i& D' T

    ) o: @/ X5 D" E/ t( a8 j死亡人数示意图+ S( o/ U3 ~. P* P
    9 k# u7 N- l6 ~3 j) m: D; j0 X3 G
    3 p8 M) w& ^( P% g& L" E

    / E- u; L; y+ j3 p; f. {% y
    " h7 F3 {1 n, D7 Z1 l" {6 {
    经过上面的图片与describe数据分析,我们发现有一天是异常的,患者多出了平时的十倍左右,经过查阅资料,这天因加强了检测标准,所以增多了很多。为了避免这个数据的影响我们选择将这一天删去(或者用平均数或中位数代替也可)
    1 j* }6 N6 ?8 N将上面清理过的数据存放到csv文件中
    0 f) z: {3 m, g* S( q+ r, {( k8 [  C- u8 W! ~
    " o7 ]' ]: i, G, W+ S# W" v, b; X" |1 ]
    模型建立9 \5 n: J) ?# R
    模型假设
    5 E7 ~  g! X$ G3 Y" R/ y经过上面数据的分析,我们大体可以进行如下假设:
    + c5 ?& k8 `+ w5 Y* ^, i1.由于不存在封闭情况,考虑开放体系。3 p) ]7 a5 q- O& q7 Y/ d) l2 i# e: X" b
    2.目前数据以天为单位发布,因此不考虑连续变化情况,只考虑离散的方程。( d- ~& l3 h8 I9 e& S
    3.新型冠状病毒的治愈人数和死亡人数相对较 小,因此只考虑 Susceptible(易感)和 Infected(感染) 两类人群。设易感人群总数为N
    + Q/ b  u/ N8 a0 i9 ~4.经专家鉴定新冠病毒患者治愈后至少六个月之内不会再被感染,所以设治愈后移出易感人群。" C' m9 a4 w" Y- c: h3 u
    5.设每个病人每天有效接触人数为 λ \lambdaλ(日接触率),且使接触的健康人致病.; T/ O( e$ [8 ?" A! Q$ A3 H
    6.设病人每天治愈的比例为 μ \muμ(日治愈率)
    , Q, K* g" [! ~. U8 v7.时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t).( m7 ?" F+ y8 O6 I2 h; o/ E# i/ [
    9 |4 i1 ^6 v* c/ \" v$ d' O2 ^

    ( \+ k& N* G' D; Z8 ^模型一0 I* `6 q, g5 I: A2 I) |( {5 ~

    - N2 x& k, X4 w1 m

    % J% o* j- o6 @) C- ~分析可以得到移出者r(t)=治愈人数+死亡人数' Q6 S& c# B7 L. r9 E8 b
    通过python数据处理,我们算出了r(t)的值,并将其可视化4 H8 W& F: V( Q, P4 n5 n

    " L$ [  r/ t& h- a

    7 y% k5 V8 y/ A/ j/ R7 E$ D7 C+ m' L, p/ u, T" Q
    8 w# K7 T- [$ k8 x# L
    我用MATLAB对其进行了拟合,拟合图像为
    4 o0 ^. d' ?. G0 D2 J  D% G$ d
    7 P, X0 G  M9 |, E8 t0 E: g8 d

    & E  T8 I' K& z& U+ o; S. _* C. }6 A  F; O( n, ?2 F: f

    / c  `9 {# Y& K2 S6 R  ~/ V/ W: D* h$ {' j1 B1 G# Z0 v
    8 g% U& @1 l! K+ D+ k
    分析可以得到患者 i(t)=患病总数-移出者
    % v% _) G/ X) b/ N可以通过csv文件的currentConfirmedCount 直接获得i(t)数据,当然也可以通过 i(t)=confirmedCountv - r(t)获得,对此我也做了可视化展示  A% c+ B& s$ m

    ) ~% o0 Z, u, U( t2 H# G

    ) ~5 k8 g' F5 p$ Z. r通过MATLAB程序对其进行拟合,可以得到r(t)的函数图像大致为4 A) ?- K% h  |

    : g9 B7 H, n! ~. M8 G" Z

    ) [, ~# w5 R) X
    . U# s  u4 u9 i. W0 B' m
    4 B# h! N2 V' X. x+ M
      U* |! B# {6 b- c  `2 r6 t/ c# y+ k

    . t  H# e1 x- Q0 q为了方便,利于公式推导,我们先设时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t). 所以有) z7 ]2 _2 ?5 i

    9 S& _8 j( }7 h6 d0 n7 j

    - u( S8 [, Y  k可以推导出每日新增病例的表达式. u3 P5 k6 j, X" w# p# j- @

    6 ]# C9 C. t  r; I/ f

    + N6 q" T% i  t& B
    8 k6 V5 I7 f: I4 L8 b5 f3 K0 `
    " Y' f9 u& t& \% t5 K
    ! R  C6 H; |. p# w9 @1 H

    3 Q- e8 @4 I! n- |+ R# A* R* _# g4 M由以上两个公式可以推导出以下两个微分方程8 B4 Y1 Y9 p1 g: n& l8 u  m
    - b, [1 q' ?. X$ ^0 p0 e

    6 C" a- ]" O$ K# e2 b0 \3 I+ Y& y+ }/ G! ?
    4 K" r4 P2 o' c7 {$ Q+ X
    可以知道初值5 P+ k0 [/ u9 u3 E8 D9 P1 L, Q5 h
    i ( 0 ) = i 0 . s ( 0 ) = s 0 i(0)=i_0.s(0)=s_0i(0)=i 8 L/ L, @  t1 i) B: ^) N# a
    05 S1 C. A& E- w! t! L
    ​        ' M% b. g: O; @) T  E4 p
    .s(0)=s : N. h/ ?1 y3 U0 M$ m" J+ s* X1 G
    0
    ; {& u8 @* r& v8 h8 u​        0 Y5 S5 m) N! k! [' ^/ [9 v3 r

    ( t  T9 j1 I4 n2 T1 I因为一开始治愈的和死亡的肯定很少,所以r0可以看为0,于是就有:) m2 ]' r+ `- d" T
    i 0 + s 0 = 1 i_0+s_0=1i
    4 q) d  b1 U8 D. y1 k' A1 |2 `4 i! @) v0
    7 L1 {  d  V+ k$ m/ b- z( {% T​       
    8 j' Z" o& [/ ]% t& {" Y  d +s
    . q* _7 F- ^/ N9 i9 [09 }" ]3 w5 T  h
    ​        / O: a8 _  G; {" b
    =19 ^  _" R3 D$ S% _  o
    通过解以上微分方程我们可以根据经验假设λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)的值分别为1和0.5(也就是每个患者可能使1个正常人患病,患者可能有0.5的概率被治愈);由于一开始患者肯定比正常人少很多,所以我们设i0=0.01,s0=0.99。对其求解可以得到s(t), i(t), r(t),的变化图像
    9 |( u' ?* P. q. z1 Z% `2 B* e+ ^: _9 B5 u
    - A* e3 l/ o  H; T: m  s
    # O7 _( h6 w! F

    8 ~& I7 l  W' I8 U) Z7 \MATLAB程序如下- W+ a* z. g1 g9 Q$ G6 s% D
    ts=0:40;0 e/ m! k; t- F( @
    x0=[0.01, 0.99];: p! c' f# E8 e7 t  r0 t  s5 P, P
    [t,x]=ode45(‘ill’,ts,x0);* o) _+ _5 h) m7 Q$ Y
    r=1-x(:,1)-x(:,2);2 i) i( s5 X# E: H3 U) y
    plot(t,x(:,1),t,x(:,2),ts,r,ts,x(:,1)/x(:,2))
    . i+ p  C  A7 }/ z, nlegend(‘i(t)’,‘s(t)’,‘r(t)’)
    ! |1 M7 }& }# F+ V. l, V4 j$ t! a# N: G6 D! ^2 P& H( T. t7 g

    5 E$ ?/ W; X" H0 Q$ z- rfunction y=ill( t,x)/ d9 q. K2 }! t% b6 n5 p* J
    a=1;) B7 ~0 `4 U! l" |  ?! W' p
    b=0.5;
    % Y$ @# C/ ]) U( Fy=[ax(1)x(2)-bx(1);-ax(1)*x(2)];
    ( x$ O. w2 S) e( \$ M* W( K' L. b+ w* w! H8 L
    $ W9 J; Z7 {% _2 C) z. C5 e
    结果分析:患病人数肯定有个高潮,但之后高潮就会减弱,并逐步降低为0。随着医疗卫生条件的不断提升,患者的 λ \lambdaλ(日接触率)肯定降低,μ \muμ (日治愈率)肯定上升,所以我们可以把λ \lambdaλ调一点为0.8,μ \muμ调高一点为0.6,可以得到以下趋势图。所以应对传染病很关键的一点是我们要提高医疗卫生条件$ P2 Y$ O5 y$ d: d: R

    : A. w) k8 R1 M, \( C* z! E
    9 \! p& m7 x: c# O; S. ]& N

    1 B7 Q% S( d2 O7 J模型二4 H% A- l- K/ R) Q- H
    4 ^+ L/ J: `) j* u5 F$ h$ U4 B
    5 Y& U4 S/ U5 @% T+ P
    实际上,λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)都是随着时间变化的,这里我们设s(t), i(t), r(t) 为第t天健康人、病人、移除者(病愈与死亡之和)的数量, s(t)+ i(t)+r(t)=N..3 y5 L6 n3 H$ C! R
    (t), (t) ~第t天感染率, 移除率(治愈率与死亡率之和)9 \- |4 m; R, t# O
    有 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)% S( B' u# P/ x7 N. ^" S7 L2 k
    因为s远大于i, r,s(t)视为常数,所以有! w9 [3 `; t  z6 g) j' Y

    ! q# \+ ^5 B4 J+ r* ~# g( E

    , s* g7 o3 }. j
    + u3 T2 ^8 e  Q; \

    . C$ Z$ L+ g9 j% n/ R* p' w8 g取差分近似导数6 K3 U% l; r& ]; B- O* Q
    & k, O/ t" E. p; N# D
    # @7 q1 i6 \4 t% e5 x1 @
    " f% J7 v! z8 V5 g/ W1 U7 u
    ' J5 P1 ]: u$ |, S+ }" b
    我们可以先用真实数据对(t)进行展示并进行拟合% t' v; g' n* S: {! E
    , X5 c/ Z0 X( l! u! h8 n4 s

    0 T5 @* g9 N2 W6 \+ L. g$ O; `! M4 z

    ' {* B/ a; m2 x# d! j  {% T当然同样的方法对(t)进行拟合
    9 l: V7 B4 @0 t, C: o
    ! X1 B6 s7 k- ]& ]9 J2 |+ U' e2 ^
    9 G" W6 {9 I6 Q' [
    做不出来了,好难,光这些东西就弄了四天,到了数学建模国赛得多难多累啊,哎,让我这个小白手足无措。毕竟还没有正规的培训,这个模型等期末考完试一定好好做做!!!1 E; L7 N  Q2 ~  P% Y
    冲国奖
    # q7 u4 ]! Y. B6 X2 p' S" I冲国奖
    + c# y) h3 Y2 d: I冲国奖
    2 g! C! u' B! ?  S————————————————* e1 q; S( c( u! o  ^0 p. ~9 C
    版权声明:本文为CSDN博主「小白不白嘿嘿嘿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。# ]5 Z- E2 \; S* z. L
    原文链接:https://blog.csdn.net/weixin_45755332/article/details/107094630
      {1 o+ J  L- r& ?2 b4 W  m3 h4 S, |! u9 d% v: L

    8 w% [% `0 l0 `, H7 p: Q
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-9-13 21:01 , Processed in 0.308619 second(s), 50 queries .

    回顶部