QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5010|回复: 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

    $ h- p& c: @/ H6 W% J0 c$ f2 {数学建模之传染病SIR模型(新冠真实数据)
    ; z8 X4 N) ]$ q0 s; {5 d传染病模型的基本问题
    & ?" R# ~) A0 f  G6 S- _5 @描述传染病的传播过程& M  _; S* [9 |, G. e
    分析受感染人数的变化规律$ |4 f  @* j; e6 f2 D2 }, J
    预报传染病高潮到来的时刻* c' J2 E  i6 J# S+ D
    预防传染病蔓延的手段
    6 g' Z! M% o# ]; D! J: S3 _/ q2 n按照传播过程的一般规律用机理分析方法建立模型- Z3 d- _7 t) H
    注:我们这里是介绍数学医学领域中基本的传染病模型。不从医学角度分析各种传染病的特殊机理,按照传播过程的规律建立微分方程模型." r0 e4 X6 U; h6 o( b: J

    ) m  L7 E. A- }/ ~0 H* K
    0 D& V9 `( k6 e0 G) L# d% O$ D
    建立模型7 Y9 Z$ Q# }3 J
    模型一
      ^+ @/ C9 r9 x8 c4 K( m( ?假设:
    / R( p! |  n9 d9 [6 a/ H9 L
    8 o" @) e2 p3 g8 Y5 Y( T% T) t

    # C: k. k! E# w) r" f设已知感染人数为i ( t ) i(t)i(t)(病人数量随时间变化)# M3 y. v" X7 i
    设每个病人(单位时间)每天有效接触(足以使人治病)人数为λ \lambdaλ
    4 S" k4 a0 t; J% G% k" M模型:$ l8 k. J& M% c2 |! c4 |
    单位时间Δ t \Delta{t}Δt内,新 增 的 人 数 ( 现 有 − 原 有 ) = 原 有 的 × λ 新增的人数(现有-原有)=原有的 \times \lambda新增的人数(现有−原有)=原有的×λ,即
    9 H/ v+ I0 d, J0 P6 g, w& g  G/ j; }* R8 n4 F
    + P4 k$ j# N, o1 b" n; O: L& 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: G% K+ Z+ H4 e/ p: g
    一开始的感染人数为i 0 i_0i / L$ @* r3 \+ p5 V
    0
    # x1 d6 P3 e2 s  `: Y; o​          N" c( S0 Q. j' _

    6 x1 J  b4 I) z5 Y2 Pi ( 0 ) = i 0 i(0)=i_0i(0)=i ! Y, b3 _( T" _9 J! P9 g! q
    0
    + P3 a1 N' N, B5 [; L5 _​        1 p$ e/ r+ I: l' e4 A1 |7 l

    ( ~- S5 y( W( u% R# i: W+ \5 `5 X5 D解微分方程可以得到1 I* V- |" o0 u6 l1 \" d
    i ( t ) = i 0 e λ t i(t)=i_0e^{\lambda t}i(t)=i 7 D( V$ k, c- `0 Z& G
    0+ v3 O* C0 [* v4 W" o1 v
    ​        ) G; }% G/ V3 K7 y, I
    e ! ~' S: [  B  g. F* ~! K3 G
    λt
    6 Q) P  F' I* ~+ U # v+ V7 T- Q3 _3 {4 c$ l
    所以可以可到当λ → ∞ \lambda \rightarrow \infinλ→∞时i ( t ) → ∞ i(t) \rightarrow \infini(t)→∞
    9 U7 d/ C" C; n) L7 C$ x当然这是不可能的,因为我们考虑的因素太少了,首先一个是,若有效接触的是病人,则不能使病人数增加,所以必须区分已感染者(病人)和未感染者(健康人)看模型二来解决这个问题9 f: ]4 a4 `# Y% R' G

    ' A, D& Y* n7 v- @0 P/ w
    6 d! S- ?$ k: j- n
    模型二" c  L9 _& v; L' ~0 b! O) n6 h4 T
    假设:
    ; i3 S: h3 o! b/ w) ?9 C" K- q2 i3 ?. I% b" j% V9 L
      l2 w2 l; O1 t" g5 e# a: S
    将人群分为两类:易感染者(Susceptible,健康人)和已感染者(Infective, 病人).
    4 _' C6 ~3 @+ ]总人数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 v& ^% y6 }6 o& x: s4 P6 a每个病人每天有效接触人数为λ \lambdaλ(日接触率),且使接触的健康人致病.
    , S  G7 G. c3 Y; Z! i* M建模:8 q$ D: M1 }8 i
    每天新增的总人数为原有的人数乘以每个人可以传染的健康的人数,再乘Δ t \Delta tΔt
    7 m7 _" b0 ]2 J. |8 W+ c% w7 j# u" e! O  S% A9 R

    9 b" |6 [3 ]7 c/ G$ pΔ t \Delta tΔt除过去,两遍N约分得到下面,
    ) C8 |! r4 ]2 [( N8 b9 h7 n1 f4 i! w6 w. g5 y  d  i
    6 L$ z3 ^( c! V
    MATLAB解一下这个微分方程8 R. H  U" a* H+ k
    ) t3 r+ a: V, z4 i- j5 P) Z+ p
    * Q* C, k1 }9 p8 C  @4 S
    y=dsolve('Dy=n*y*(1-y)','t');
    " X# s- j. I+ J, W% s# n+ q  \5 @( D* k
    : o7 q' H2 Q" S* d4 R5 _8 R
    y =7 w; y# ?. A7 ~+ M+ H
    -1/(exp(C1 - n*t) - 1)
    " N9 Z3 X6 J9 _( h  y4 V2 d                      0
    & C4 {% [6 P/ e$ x8 ~2 z) l                      1
    % n% r4 _& ]% o, N( h! }1
    ! w* {- S. t/ c9 l$ I2
    6 N6 _9 P5 ^; z: K3
    : A- y# i! v7 j1 u4
    + x  }+ ]- p- U: \9 i5
    7 b2 B5 g% L- o. T6( M- p6 o- O0 [
    写规范点就是这个函数
    4 b: T& [0 X% n" q6 c. c
    / U/ V3 B) Y0 ~! W9 m9 C! k9 M( v

    1 I4 W* q  S8 l6 @5 I; |" g5 h. O2 C" R函数图像大致为3 z7 b' c& [6 h2 \( t( U

    1 G7 x8 @" u1 P  n% G
    3 \8 o2 i. b; l2 z: R+ q' x
    可以看出t = t m t=t_mt=t
    * w) K" E% S7 K2 F  Jm( ]6 p9 w# n: @1 X9 ~
    ​        ; o+ V. i" [' F
    时这里图像的斜率有个最大值,其也就是传染的最快的时候,即传染病的高潮时刻,当然t m t_mt
    . ~8 Y  [8 G. R; p& D6 x8 C0 Pm: O) s( q* e( f2 F
    ​       
    1 ?5 K( M0 ^) v7 Z  j+ O2 x% m! C7 n 是可以求出来的1 j- S! c, f% ]2 p2 r# a4 y
    ) }4 z9 O5 k! V$ _
    ' t5 N  X- x6 E0 i4 f4 Z
    再看原式,当t → ∞ t\rightarrow \infint→∞时i → 1 i\rightarrow 1i→1/ U6 D: H# b$ ]6 _/ i/ I
    病人的比例为1,当然这也是不可能的,因为我们还没有考虑有没有可能治愈,看模型三) M! q! e4 l( m

    0 T, j* w8 C" J
    7 ~2 J6 ?+ P% e/ v3 N4 E
    模型三: U+ _% d/ u  `7 M+ f$ Z
    假设:
    2 L" b; U6 W# o0 e5 i9 n* g2 y" D! {) j+ A: Z
    4 `( O& `- p, b0 V
    传染病无免疫性如伤风、痢疾等——病人治愈成为健康人,健康人可再次被感染。
    3 H" J3 J1 @  [5 `4 b病人每天治愈的比例为μ \muμ (日治愈率),1 μ \frac{1}{\mu} # z4 i6 f: e+ J" [3 G
    μ
    0 a9 [0 f, H5 z1 @  f- g; e1 n1
    3 Y$ q9 v. X  ~​        $ T* w5 [' V7 Q: J; r3 y
    为感染期,
    ! m- a7 W$ l2 R; a7 F4 I% w模型$ z1 w$ U6 b9 t9 Z! S& D! a
    这是减去了治愈人数之后的新增人数
    2 K% Y5 o) o7 |2 A  g( W2 o* E7 O5 b
    0 [3 M! V/ v! x$ ?, ]( E) A
    9 U* y7 K. t7 A# u* ^! U
      d/ a6 T0 _( K& o8 k6 E% s
    σ \sigmaσ 为一个感染期内每个病人的有效接触人数,称为接触数, ~* E. Z4 Y- E) D1 P& m6 b# d& T

    $ _  [6 v4 y1 M* l! l. X! n
    1 i4 t+ N2 X3 i, c, d: N
    可以画出上面的图形分析下- d6 O1 K9 V7 e8 X' M5 [
      u$ o9 n/ m* i  \' r

    " }6 w0 U# q( z" V; `对上面的公式进行分析,可以得到,当i = 1 − 1 σ i=1-\frac{1}{\sigma}i=1− 4 k: B* q( r! V5 @1 W3 U
    σ
    7 I3 e3 N" X6 m/ v4 U5 S1
    - |8 e6 z3 a) C5 W" a3 d2 p. G​        ( ]8 D" e% y* c! l- s7 e8 ~+ o, @
    时,i ii对t的导数为0这也就到了i ii的最大值;当0 < i < 1 − 1 σ 0<i<1-\frac{1}{\sigma}0<i<1− % R1 e- I$ r% x0 e) ]
    σ
    ! i* z5 b/ e# @( ?1! T2 t2 e( Y$ g
    ​       
    ) ~+ y3 Y: z. V& \9 ]! [7 f. _ 时,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− - T9 Z* N. k: j; n1 N4 g5 l! v
    σ6 @% ]' M, ?2 k
    1
    1 X5 `9 _+ W! e​       
    , x- z" _& d$ M# _4 E! x ,d i / d t < 0 di/dt<0di/dt<0,i是单调递减的。6 f' _+ |6 ~2 f) F9 C( y( L

    8 U3 W- z2 D; V3 |& r5 q

    6 {2 O% b1 Y/ H' I1 g当然我们也可以画出i ii随t的函数图像
    : O3 @" `9 f8 P1 w
    * P) Q- Z7 N& ?# O9 P9 I

    3 _, l. L7 d& o7 }% \, c先看红线,若初始条件i 0 > 1 − 1 σ i_0>1-\frac{1}{\sigma}i
    2 b% s! X( A! Y3 [; a) Z1 ?( q0* l" s; ~# `* ], D' L' ]
    ​       
    ! J+ S) L9 ~; g9 D/ ~ >1− , j3 j* x8 O" }" _" i
    σ! l0 z1 u# j4 Z+ z
    1/ r& }$ h5 R1 ]6 n) w: e' z' P
    ​        ! q4 L+ D1 `) a- M% V1 M4 @- ~6 ~$ b
    d i / d t < 0 di/dt<0di/dt<0,i就是单调递减的,
    5 H  @) k2 m$ [4 a- W若若初始条件i 0 < 1 − 1 σ i_0<1-\frac{1}{\sigma}i
    4 H% {$ q7 }+ |+ T+ R1 N01 C5 t. o7 @6 _2 U
    ​       
    . H. s* }- m! {+ K, `  L  L( B <1−
    9 M5 c% z! x7 Q( }) R; wσ9 j; Z  U6 Z: `9 i0 S0 x, y; U4 h
    1
      S: u$ n9 ~1 q& w) p​        8 m' y) h& r' F* ]7 O7 g8 \5 `
    ,i就是递增的,可以看到i对t的导数图像有一个最大值,下面的黑线就有一个增加速率最快的一个值,按S形曲线增长8 C: I0 I+ e$ J+ i5 c; f

    9 d, Z' ~" x& z

    6 L8 h7 ~/ K0 V+ A  t0 _) Kσ = < 1 \sigma =<1σ=<1时d i / d t < 0 di/dt<0di/dt<0 i肯定是单调下降的,最终降到0
    2 d9 f5 H! @# p& T2 h4 f/ I. P. ^
    * ]; d+ H2 c! ]" U7 R8 d
    , _  T: z) i/ I) X7 \

      K' w5 c! p% o) d% ]) H# G综上:
    % p3 G9 q9 H- N; t4 ^& t& z7 Z) U  y想让患病者越来越少,σ \sigmaσ必须小于等于1,即感染期内有效接触使健康者感染的人数不超过原有的病人数.( ]  f- L8 J" p- f" z  ^

    1 H: G8 w+ W6 ]+ J; `9 T

    6 m: N  J; ]7 ^/ `8 T6 V1 ]" m* }  z这里我们分析的是感染之后还能感染的情况,但有些病毒感染之后会在体内生成抗体,就不会再被感染了,下面我们分析这种情况。$ ?# U+ {  T0 A* X) a1 w% G# `* q
    4 I8 j. O. `: i4 z0 C

    ( n) ?% [3 p2 I% v模型四 SIR模型
    ; \/ A3 q# K/ a. ^  n: CSIR模型是常见的一种描述传染病传播的数学模型,其基本假设是将人群分为以下三类:5 w( B- U5 h2 Z) S, c

    0 {  o' w( O5 O; ^
    7 N: @# A1 {3 |6 P. S( ^; h. c! H9 y
    1 易感人群(Susceptible):指未得病者,但缺乏免疫能力,与感病者接触后容易受到感染。: K$ E- G  h9 V, ]
    ! c5 @0 K7 H  V$ P

      \+ _( f9 |1 u4 t0 o; z2 感染人群(Infective):指染上传染病的人,他可以传播给易感人群。8 Q1 C6 T' x0 ?6 o0 G+ I% }& G( r

    2 D- q$ }8 ~& D; I/ o2 s
    & `$ W! Y4 p* M
    3 移除人群(Removed):被移出系统的人。因病愈(具有免疫力)或死亡的人。这部分人不再参与感染和被感染过程。- K$ d7 |; N* H1 @" h$ C( a
    - m# n# f* c' B) |# p* O0 g

    ! ^8 f8 z5 z, _# F  ^0 ^假设:
    ) J% A2 Y* d  M2 \9 p& {7 S2 H- c$ X/ i. W* e

      m* u# [! N2 }( a/ |" c( W  t- {, t* t传染病有免疫性如天花、麻疹等——病人治愈后移出感染系统,称移出者(Removed).
    1 L+ Q. j, g. k7 m: w总人数N不变,健康人、病人和移出者的比例分别为s ( t ) , i ( t ) , r ( t ) s(t), i(t), r(t)s(t),i(t),r(t).( J2 @$ a1 z3 e2 U+ Q% I4 Y; s% I* `
    病人的日接触率为λ \lambdaλ , 日治愈率为μ \muμ, 接触数 σ = λ μ \sigma=\frac{\lambda}{\mu}σ=
    ! l3 L$ U* c" n& k" cμ: Y; d- b" ^. F/ M- C4 w- e
    λ
    + ~) O& I9 c0 t. e, W2 B+ G8 ?​        $ C/ Y- [# E, Q7 F- A% N- j! J0 G

    ; I  l8 c8 M/ t0 M0 {" b3 Z' z$ p建模:% }7 P3 y( j9 J: I* c* N% ?
    s ( t ) + i ( t ) + r ( t ) = 1 s(t)+ i(t)+ r(t)=1s(t)+i(t)+r(t)=1, M8 W3 W! A6 z" K
    这个就是病人减去治愈的人,和上一个模型是一样的' R# W4 S+ P8 M% O  q
    ' `. i3 `) D! p- R7 n; O0 E

    0 Z/ E6 A+ s6 ?5 O& ]- ^/ U2 p因为有治愈后是有免疫性的,所以可能被感染的总人数要减少,减去移除者就是
    , `8 J1 X+ W2 R8 o; c( g- z" T& E% r3 e9 N6 Y6 i

    5 H. G$ p$ C  F+ l- V/ Z! e将上式化简为:
    , j6 g1 L5 }- s# c; p' j5 [: Y$ D1 N) N
      t. f$ O+ e; p% m
    i 0 + s 0 ≈ 1 i_0+s_0\approx 1i + @9 b2 B" g# h" p
    0
    1 O* Y& T2 e/ |​       
    1 z& Z0 z( y; A( c+ Z +s 5 X+ _2 l! r5 l/ o! z3 i* D4 \) i
    0
      m' c  u4 f& I4 {; X0 R​       
    3 W7 w1 D- `* O& D' r ≈1(通常r ( 0 ) = r 0 r(0)=r_0r(0)=r
    * q/ F6 u0 L0 _/ [: N0* J* |% y. ^1 `) M
    ​        . n2 _9 c6 H5 b0 t0 J3 s
    很小)/ a2 A; q' M  v( F. S: V

    # g% W' x, m* H' {6 ?, v

    $ k* v  t: S; R- n! n' V+ ~1 K关于i(t) , s(t) 的非线性微分方程组,没有解析解,只能通过数值计算得到s(t), i(t), r(t)的曲线,下面来看下曲线的数值解的MATLAB程序, R( z: n/ y3 f$ O

    - }6 X. `  V  u7 g5 ^* K

    3 `, u, _% \4 m8 |- i3 P这里我们先设λ = 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 ! M2 o- M  O0 W# w1 ]
    0
    * d; K1 l' b, B1 d/ C​       
    / N6 T( j! Z8 s; B: `8 } =0.01,s 9 T" B' {7 t' h) c
    0
    : J4 D, B  F1 W0 f​       
    . n) ?, u6 T" K! ]+ H) o/ L =0.99
    2 F* J4 `) N& Z% H& P! z) P, K也就是平均一个病人人传染一个正常人,治愈率为0.5;开始的病人比例为0.01,正常人为0.99,设没有天生带有病毒抗体的人,所以r 0 = 0 r_0=0r
    ( x4 D7 L# H& c' g% D: d8 p# |2 z0+ s* P7 Y; D7 `& B" q
    ​       
    & C' B; b/ P9 z =0,之后若果病人被治愈,则具有抗体了,有抗体的人为:r = 1 − i − s r=1-i-sr=1−i−s  j0 U1 q2 Y9 n% @& V, e" N
    0 g, R5 ~3 E& S* }* b

    ) N" M* F$ C1 o! Q" a1 Rts=0:40;
    ) |8 i0 ~% B/ o) _x0=[0.01, 0.99];
    , P2 H- ?, H8 m( G[t,x]=ode45('ill',ts,x0);
    * b) F/ V( `8 x  A3 i0 i2 Br=1-x(:,1)-x(:,2);
    6 T! M; {; N' C9 {/ T! p* V  Vplot(t,x(:,1),t,x(:,2),ts,r),grid
    6 ^3 }( M9 R3 o- Q6 hlegend('i(t)','s(t)','r(t)')
    7 ~/ X7 w, e# i9 \
    8 P+ w. i' ^& W, f0 ~% v0 S

    , G. N5 O9 _0 e+ d& Q0 Y& Zfunction y=ill( t,x)
    9 s9 n( ~; N/ d- [  Ca=1;2 B6 v$ g# G; k2 _
    b=0.5;
    7 y$ w+ _% {2 I$ Sy=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];
    0 X' ]0 C4 t$ A* N! m9 R- a1/ i8 L* ?8 e4 n: Y
    26 y6 l# {+ n! W) W) R1 a8 L
    3
    $ c5 W6 [8 `4 B3 _/ X$ z4
    " A( K9 G. O4 n# o6 d1 ]5
    $ @0 a: r  G: X2 _& |8 s6
    . D  j. A+ n4 \$ q7 v74 Y% a$ @2 e2 v. ?
    8
    % E. E7 B7 j  q+ n7 J* {9
    7 ^. E% f5 ?/ T+ N- G  T4 C103 a: l& W, U6 ^! R, F
    11
    $ g: A/ R' p* r$ N# @4 [2 ]: f8 F8 E* D9 B- j
    ( h" D! K3 C" Q& n0 C* v, m
    可以看出:s(t)单调减,r(t)单调增,都趋于稳定, i(t)先增后减趋于0.! G3 \$ D" [6 k
    结果分析" j4 C$ B9 ~3 g7 C
    先回顾一下参数
    6 J. G& O! `+ i% }4 S接 触 率 λ ; 治 愈 率 μ ; 1 / μ   平 均 传 染 期 ( 病 人 治 愈 所 需 平 均 时 间 ) ; σ = λ / μ   接 触 数 ( 感 染 期 内 每 个 病 人 有 效 接 触 人 数 ) 接触率 \lambda;治愈率 \mu ; 1/ \mu~平均传染期 (病人治愈所需平均时间);\sigma =\lambda/\mu~接触数 (感染期内每个病人有效接触人数)接触率λ;治愈率μ;1/μ 平均传染期(病人治愈所需平均时间);σ=λ/μ 接触数(感染期内每个病人有效接触人数)
    ! o# ~  R; p' T可以分析出:
    + w. O' @) r0 A+ N0 w' Y4 C& F6 \
    7 @; z3 c  a% o! i2 V$ \

    2 D( _; |& ]5 R随着卫生健康思想水平高,接触率λ \lambdaλ变小3 v9 m  Z" F$ Q
    随着医疗水平的提高,治愈率μ \muμ增大
    % j' z8 P% J# R4 a接触数σ = λ / μ \sigma =\lambda/\muσ=λ/μ减小——有助于控制传播.# L# u% w- U! Q( l6 V7 `
    我们可以试试稍微减少一下λ \lambdaλ,增大μ \muμ,来看下效果+ l; @0 y: E( i

    ! B' _" l: s$ W  c3 D# u

    9 C8 ~! b+ h+ ^8 C1 s/ x8 z1 {ts=0:40;- a. }- T' S1 n& W  u
    x0=[0.01, 0.99];) N8 c0 U! ?4 x! y# q* h$ H8 }% a8 b, N
    [t,x]=ode45('ill',ts,x0);  Y# |& a' t% S9 J! Q
    r=1-x(:,1)-x(:,2);
    1 o- h, s- V* O$ \: v6 i7 C. v4 [. Yplot(t,x(:,1),t,x(:,2),ts,r),grid4 Z; {0 W9 Q$ ~9 U: j+ i
    legend('i(t)','s(t)','r(t)')
    5 J: {  k& Q. _4 k5 F! N! F
    * m+ M6 f1 C$ @2 T" `1 ~( }/ P. o- n
    : [* Y1 ~$ _) [
    function y=ill( t,x)! S9 l# U6 Y3 Z# Q
    a=0.8;
    + v+ u# q& T* J% Ab=0.6;8 p* ]( \6 z. Q3 B0 r' O4 t
    y=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];
    ( x, S7 S/ M) U! b7 l1. L* L+ _0 ^% t9 ?$ d
    2
    8 R2 ]" c+ m* J9 }$ i$ ~. p" x  j3
    9 f1 Z5 p) Y2 h' I' z1 S' D4- E- V% n. |: w8 x8 _
    5
    4 ?9 i9 L( p, j# x: _6: ?& G& a+ [3 M4 _. j, e4 X6 g
    7( w! b9 |9 s1 W/ X4 {5 |2 d7 q6 y( `
    8
    " ~% K9 ]! M6 b$ R  @$ l5 t9- j! z- l/ B6 _7 F% ?$ ]- i3 f
    10
    ) W7 @+ v/ Y2 L" R, ~2 [) x  b# y( b* L112 L; y  B4 ]2 ^' `& L$ t+ F
    0 `4 @6 e$ M" f+ q: N0 N7 ]0 @
    & J% U5 b& R6 l3 C6 n# J
    综上我们可以得出结论:想要减少传染病的传播,我们就要在接触数σ \sigmaσ上下功夫。
    " a) F+ d% s( @( h
      z" T' A4 H9 V4 [! C' _

    ' r$ X& p8 J# t# U* T实战建模
    ' D9 E( Y5 s7 U4 o数据处理
    4 L) `' M# M# }. B; [' H! Q) [1 ?8 N7 @; X, T; U7 X2 j$ n. ~+ ~- G% J

    ; q- X/ O% Q' w; o0 _; g/ D首先,我用python爬虫爬取了丁香医生官方数据,一共5534条数据 特征包括感染、死亡、治愈的总数,当日感染、死亡、治愈新增,疑似病例,时间,省份等14个特征
    ; x0 d2 V: y' T' g  E, {( H8 A; [; @. O" |  N( j+ Y
    * k  J6 ~( T) F
    9 {& D' _9 ~7 u; r4 N

    + ?' C7 U7 L4 u* I$ D) G然后用python进行数据提取,提取了较为典型的湖北省的数据作为我的参考依据, o* ~, _3 y) W# \% }& l1 S8 T3 D
    ( S$ d! D9 U9 k& L

    9 e* N3 E: M& B. ^* h; T5 ~3 [7 a% s% K" s, d( ~# P

    / X$ l- V' A! p然后用python对数据进行清洗,提取出了患病总数,现存患者总数,死亡总数,治愈总数,时间,省份这几个特征3 P: X; t: r( u

    # o; a8 D: y; d. \- \

      {: M+ k: Y  S7 L对日期格式进行修改,值保留月和日,并与死亡人数的位置交换% B5 G. s" _& n
    6 T3 B+ {" c4 R0 a' i

      m3 s) d4 d. V. z7 W+ V  j' d" B这里我用python对提取的四个特征分别进行了数据分析(主要包括计算最值,平均值等,),并把1.20日作为第一天,7.02日作为最后一天也就是第165天,做了可视化可视化处理。/ N( l; m1 A7 @0 `! W" y: I* C
    感染人数示意图9 c4 Z  [. \: t" B

    3 h* Y' u: b, ?( t7 o
    7 j0 X: v$ j- A
    治愈人数示意图
    & o9 O/ J2 w% c& X. a
    6 [0 S, K$ X$ _; z' f& _+ g
    3 S1 L% H# F: a' W6 p+ L. z
    ) M/ o5 H. n6 J/ U

    ' w# c# R  k3 K9 ~3 p现存患者数量图
    / B6 ]& U' g3 s' ]' x4 Z2 Y7 [" K' J, q! f- N: f, G
    5 x. @% W" a( S+ K" u2 l
    死亡人数示意图
    4 R5 C! ^! B8 Y9 l1 M( \
      h- t0 ^* r- e* d4 s* Y# m
    3 w+ Z6 w) w, L  T9 S
    % q- X, x" M5 y) D- z
    + E) s3 D2 T% o2 Z- U8 C
    经过上面的图片与describe数据分析,我们发现有一天是异常的,患者多出了平时的十倍左右,经过查阅资料,这天因加强了检测标准,所以增多了很多。为了避免这个数据的影响我们选择将这一天删去(或者用平均数或中位数代替也可)
    ( x! m8 F; h+ K5 B将上面清理过的数据存放到csv文件中
    + [0 Y! c  }) a7 ]: f1 g' f2 e3 H
    0 O" r, V+ ?2 v6 q+ h* l

    # b3 w4 B! `5 ?" K% O& f模型建立' w* R! ^2 r5 R$ U2 b# X
    模型假设* ], D7 p  e$ {' W" I5 U/ n: |& {
    经过上面数据的分析,我们大体可以进行如下假设:
    ( @& x/ I0 c6 c* y1 O; d/ B1.由于不存在封闭情况,考虑开放体系。
    5 a! A& g9 r( D6 ]% o* Q9 `2.目前数据以天为单位发布,因此不考虑连续变化情况,只考虑离散的方程。& V7 T; ~( V: X6 E. q! C
    3.新型冠状病毒的治愈人数和死亡人数相对较 小,因此只考虑 Susceptible(易感)和 Infected(感染) 两类人群。设易感人群总数为N4 }2 m. ?# {8 ^# Y" A0 T( _
    4.经专家鉴定新冠病毒患者治愈后至少六个月之内不会再被感染,所以设治愈后移出易感人群。
    + ]$ |, t$ K! m5.设每个病人每天有效接触人数为 λ \lambdaλ(日接触率),且使接触的健康人致病.
    3 f4 h5 p- C4 X6 _6.设病人每天治愈的比例为 μ \muμ(日治愈率)  k( Y; S% c( C' L# k
    7.时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t).9 d$ N" T4 D0 ]) ?2 _

    ' q6 X* `  e# s5 B1 ]
    5 i4 W7 Q& ^# ^  _
    模型一
    6 n) L  m$ ~7 G: {$ K# N- i: P5 E6 B' J, K/ w) z  p0 m' ^8 @) K

    ! X  ?7 c2 ~! b: Q1 h分析可以得到移出者r(t)=治愈人数+死亡人数# E' k3 Y3 Q# Y1 s4 t" C! [
    通过python数据处理,我们算出了r(t)的值,并将其可视化
    0 L6 @  v; o/ y8 @. ]& p! Y
    " h7 |; `/ c- ?

    0 m' _1 ~. ]; a: ~) M
    . T. }& _( G5 H" c
    ) Z3 t7 S9 }5 g8 P/ U0 R5 w
    我用MATLAB对其进行了拟合,拟合图像为, ?) ?" G+ u! D* I: V: T; ?
    & Y/ i  n+ i7 R4 h" H
    . ]6 a$ n- w4 p9 a
    , r9 \/ U! `9 K; ?9 \
    5 Z) B$ t5 N0 n" A/ D

    * m" g4 ]$ ?- S3 z/ c$ s+ a

    6 b6 v, Z( F$ p3 W. T分析可以得到患者 i(t)=患病总数-移出者
    5 o& ]8 R: h8 H9 X2 I可以通过csv文件的currentConfirmedCount 直接获得i(t)数据,当然也可以通过 i(t)=confirmedCountv - r(t)获得,对此我也做了可视化展示7 f! o- V7 U& D2 q2 R( N
    & T; G! O6 }* J6 L

    8 I6 O, \, o7 P4 T% P通过MATLAB程序对其进行拟合,可以得到r(t)的函数图像大致为$ _1 @4 B8 i. g: {) ?! E2 n' \
    4 a$ S6 }. L2 N. Y
    8 O& V' n+ s" r. P
    4 X* E4 g1 h; R- w

    - ^1 r8 E9 h  F: w: s
    % n) @8 e: f6 |2 D" J; J

    & C6 z/ }3 S3 d, @* G, x' d8 p为了方便,利于公式推导,我们先设时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t). 所以有
    2 g  l" R$ h! Z# D3 c, n" {2 q' ~- e& W7 @

    * _3 E* p4 s* b可以推导出每日新增病例的表达式
    ; {6 y0 {# X. `9 M( P" I2 N4 l+ W+ C3 u
    % f/ N6 d9 t# A  }3 o8 ]
    / g" r' }- ]2 h* I4 x# J

    7 ]6 [. l# Y! n' \
    + G! l- _' `6 X0 f, r
    * O! ^2 i0 i( G# `6 m: Z1 o
    * L( K" `9 @' r  n7 }
    由以上两个公式可以推导出以下两个微分方程, J# Q6 x& H  C- }. I
    $ ], g0 ], b) }4 X  C8 h0 @, |

    : i- x. p' |1 X  ]! N5 K( s8 V" Z- n& g" s2 K  ^( `
    . I) C: x% B- R1 b+ ^0 C
    可以知道初值6 c: Q) z. _/ i" J8 V
    i ( 0 ) = i 0 . s ( 0 ) = s 0 i(0)=i_0.s(0)=s_0i(0)=i
    4 O+ [( e# c, t2 K3 n8 }5 _  [0% Z7 t: w5 M- {+ B! R
    ​        ; X; O; ^! U$ L! A% Y# @
    .s(0)=s % ]' N7 a; k# I/ }$ q3 b8 H) H7 N* L
    05 y% I% J1 u0 Y4 P1 V
    ​       
    1 C8 I0 ~( o2 Y# {! s& T" D
    : P* T. O4 N2 l" |7 O因为一开始治愈的和死亡的肯定很少,所以r0可以看为0,于是就有:
    0 c& O, b- q- u- d$ ?i 0 + s 0 = 1 i_0+s_0=1i
    - u9 J7 @% z8 Z$ V2 ^* W; \% G02 E) d3 s$ U! \9 {" a6 }: _2 A
    ​       
    * A9 }# v1 l7 y/ c +s 2 A  A2 \, G  Y0 A
    0
    / I; W6 H1 b) E; o2 ]' Y7 f​        5 _! Q4 a1 T  P' K4 Y
    =18 T. E% {0 R6 r/ G, i) A( @
    通过解以上微分方程我们可以根据经验假设λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)的值分别为1和0.5(也就是每个患者可能使1个正常人患病,患者可能有0.5的概率被治愈);由于一开始患者肯定比正常人少很多,所以我们设i0=0.01,s0=0.99。对其求解可以得到s(t), i(t), r(t),的变化图像
    . H' y% {/ Y: I! ~5 ]; i$ i
    : W; b' X) g% B/ o2 N. V" W# [2 }
    % [4 T1 @4 X6 d8 A) P4 b" L, u
    4 e5 T. q2 M# O" _9 |

    " O3 H, _5 j* a' U! FMATLAB程序如下
    5 V3 k1 X4 C- L- J' E) Zts=0:40;  ], u# S; F. m. |( V
    x0=[0.01, 0.99];
    3 V+ F: d6 J4 \' M+ o[t,x]=ode45(‘ill’,ts,x0);* u) K" o5 e- f. O
    r=1-x(:,1)-x(:,2);: o; t! e- q* d) f  \
    plot(t,x(:,1),t,x(:,2),ts,r,ts,x(:,1)/x(:,2))
    8 t3 P: ^8 [- Z8 I& rlegend(‘i(t)’,‘s(t)’,‘r(t)’)8 f3 H3 }+ [$ U  z) N5 k

    0 p8 V$ a- @1 F! p6 O/ y0 |

    ; K  P# H9 u$ @) [+ D; X3 s% S4 ~8 `function y=ill( t,x)+ r3 s. n1 g/ U# r" N: h- v
    a=1;, z# x' M# y" z! i
    b=0.5;3 z" |5 Y( @2 N4 \& }
    y=[ax(1)x(2)-bx(1);-ax(1)*x(2)];
    / X& N; L8 m  C" t3 I
    ) B6 F4 @3 t  Y- S  i

    $ G9 ?* c& B5 I结果分析:患病人数肯定有个高潮,但之后高潮就会减弱,并逐步降低为0。随着医疗卫生条件的不断提升,患者的 λ \lambdaλ(日接触率)肯定降低,μ \muμ (日治愈率)肯定上升,所以我们可以把λ \lambdaλ调一点为0.8,μ \muμ调高一点为0.6,可以得到以下趋势图。所以应对传染病很关键的一点是我们要提高医疗卫生条件
    . [1 z5 c0 t8 H- K. D9 t' L) q% A. K7 T' y
    " d0 e4 A: t( m' Q' B; ?2 q. S

    $ u" ~) H4 D3 k+ L/ [( P$ p模型二8 I& A7 o! h# P, R6 G, t* T5 J

    4 a3 ^3 o: }8 Q" o  V$ R
    7 M' w6 S& f* S0 h  V  P: R1 x
    实际上,λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)都是随着时间变化的,这里我们设s(t), i(t), r(t) 为第t天健康人、病人、移除者(病愈与死亡之和)的数量, s(t)+ i(t)+r(t)=N..
    : O4 M5 j; E" [# `( _(t), (t) ~第t天感染率, 移除率(治愈率与死亡率之和)
    6 n4 @- N( a9 k' y8 e有 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)/ `/ w# ?9 @+ R1 ^; O8 O
    因为s远大于i, r,s(t)视为常数,所以有
    - x0 \, q1 o) [. i& {$ \; o4 I8 ~( p
    3 ~2 D- g% c2 G
    1 R4 E  T) [6 ]4 K; q$ V' o

    . s4 P# O+ o  K2 E. p取差分近似导数6 A6 h$ y  f  e1 ^/ \' Z8 q- G5 \0 o0 G
    5 t- K4 K4 Z* \' ]3 o
    7 o7 g6 j3 k3 P% R' y
    # T* ?# N* D; R" g6 p& ]5 [

    " L4 J: \0 \! Y9 b% \9 D我们可以先用真实数据对(t)进行展示并进行拟合# O. W0 E2 z& u. }

    : c6 y0 {7 l' i! d& e+ I1 S
    $ R, P% I% n+ b5 n, Q2 q

    5 h+ L( B. \* h4 s. r3 k
    1 x' K/ o" D9 Q' n! ~; y
    当然同样的方法对(t)进行拟合
    + A& s; a1 `6 F/ b4 ^
    + t8 c, U- a/ z4 J4 q! G( M. Z, x

    : V5 y% i  l1 v, J, p做不出来了,好难,光这些东西就弄了四天,到了数学建模国赛得多难多累啊,哎,让我这个小白手足无措。毕竟还没有正规的培训,这个模型等期末考完试一定好好做做!!!
      G# ~0 b) t4 m) u0 C/ {冲国奖9 D6 M6 h5 g# F. \0 J, Q
    冲国奖) F7 a5 P! m* f* x
    冲国奖
    & J7 y1 b+ w; u+ m————————————————
    5 M" j$ l, }0 D* `版权声明:本文为CSDN博主「小白不白嘿嘿嘿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    " M' b: a* C! B# C) {! [原文链接:https://blog.csdn.net/weixin_45755332/article/details/107094630
      P1 T' H% u, ^2 N" H4 U5 i! M$ o6 R9 g/ p) q' u, {2 n, I3 F$ L& B$ M
    ! l- x4 K- }% K* q: A
    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, 2025-7-29 00:46 , Processed in 0.307073 second(s), 50 queries .

    回顶部