QQ登录

只需要一步,快速开始

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

    2 A7 V  f( p" E* u& Z数学建模之传染病SIR模型(新冠真实数据)1 `4 t4 I- K5 ]$ e% `6 H4 }
    传染病模型的基本问题
    / t! f/ z. y$ k# n5 _1 s; V描述传染病的传播过程
    ) P0 E  Z4 |. D  N4 Y: Z, I9 o4 e分析受感染人数的变化规律9 r$ J2 h0 H4 M4 X$ ^% w1 s
    预报传染病高潮到来的时刻7 d; d4 k. A* [6 |* @( g
    预防传染病蔓延的手段0 \7 w% g1 d. q: I- M
    按照传播过程的一般规律用机理分析方法建立模型; X9 P# Q% n( k5 ^
    注:我们这里是介绍数学医学领域中基本的传染病模型。不从医学角度分析各种传染病的特殊机理,按照传播过程的规律建立微分方程模型.
      X, b. m5 x! L. o6 T$ A( Q! _
    . m) w+ }& I9 F# O  M/ C- |
    # l0 D5 S' ^. Y# i9 T
    建立模型6 f( N0 ^7 z0 S. Q# I3 M6 d
    模型一
    ( I% Z% p6 R' z6 K7 L2 [假设:
    / f- I2 l: A  ]5 z
    " x- G' x9 q* s- i" T" K. ]+ h

    9 R4 X# ~* |6 U1 {& z设已知感染人数为i ( t ) i(t)i(t)(病人数量随时间变化). x' U  G4 S+ q/ m) j6 k; D
    设每个病人(单位时间)每天有效接触(足以使人治病)人数为λ \lambdaλ
    4 D! r2 N0 w& y/ I) a模型:6 P1 f) l# ]) [" p. v$ m
    单位时间Δ t \Delta{t}Δt内,新 增 的 人 数 ( 现 有 − 原 有 ) = 原 有 的 × λ 新增的人数(现有-原有)=原有的 \times \lambda新增的人数(现有−原有)=原有的×λ,即
    ' n0 ]( o/ i2 b) V1 }" j- \. x7 s
    / o6 M5 F: b6 t) T7 g- o) `
    ! z$ D8 r( X7 _% W
    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  _4 _  ?' K2 I% I8 p
    一开始的感染人数为i 0 i_0i
    0 F4 c- ]' w8 _0
    % c+ ~2 N: g7 p- C" ], k4 D​        # z2 U' ~3 x. D$ T
    : f8 |* V5 l& [  w4 h- l
    i ( 0 ) = i 0 i(0)=i_0i(0)=i
    2 _9 A& s+ {0 a. @09 f: q  u% m4 W& [
    ​       
    5 P- R# n5 [6 O+ g
    , {2 ^+ R1 c% N+ ?& _9 U8 Q解微分方程可以得到( c8 |: ^6 [& A8 o0 j8 f" b8 c
    i ( t ) = i 0 e λ t i(t)=i_0e^{\lambda t}i(t)=i
    - y% r, m) V, R6 {0
    4 P  W6 M% Y4 [, H  z" y1 e​       
    7 a" |3 ^# D% G* l4 V0 S+ @ e $ U; K8 `: E7 r
    λt5 @' f0 K8 m; Z6 {/ B3 P

    , X- v7 B4 v/ u% O5 B0 ], n" K所以可以可到当λ → ∞ \lambda \rightarrow \infinλ→∞时i ( t ) → ∞ i(t) \rightarrow \infini(t)→∞
    ( d( u/ A9 Z, k" |: e0 q" [9 C4 g当然这是不可能的,因为我们考虑的因素太少了,首先一个是,若有效接触的是病人,则不能使病人数增加,所以必须区分已感染者(病人)和未感染者(健康人)看模型二来解决这个问题+ q1 T6 _/ a& ?" j, N$ v/ F  l) c. p
    8 h" J: m, v1 y1 O2 I+ C) g6 A. e
      s# I# j- g2 e1 k$ n* U
    模型二
      u2 ?) J$ Z6 x$ F+ x假设:
    / B0 F5 D# {: l, B7 z
    + C! F9 o9 ?7 B. ]8 V! ^! P, H+ z

    ; A/ j5 k# R' H( r1 H' @- ^0 ]将人群分为两类:易感染者(Susceptible,健康人)和已感染者(Infective, 病人).
    + d1 T* c& x. T总人数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
    ( b4 q( e$ }& i4 x每个病人每天有效接触人数为λ \lambdaλ(日接触率),且使接触的健康人致病.
    * @! z, L4 G2 G" F建模:) h8 y0 F9 x6 l/ G
    每天新增的总人数为原有的人数乘以每个人可以传染的健康的人数,再乘Δ t \Delta tΔt
    8 f4 _4 g5 M4 j  M  o! R! |; \0 k! \: g

    / L9 n4 f. w+ F' f3 EΔ t \Delta tΔt除过去,两遍N约分得到下面,
    7 }! ]7 ^2 e) K; u( w+ G$ ]! h/ H: n
    5 k: P! T0 ?9 B( r
    MATLAB解一下这个微分方程
    $ w% f8 q* i9 j3 o+ e& h4 m
    ( F* }0 @% e5 O0 P- F7 S% l6 r
    9 V  X; L6 E# v
    y=dsolve('Dy=n*y*(1-y)','t');4 ]9 O; V& B7 L( X5 u) _
    / ?% `' F/ f# u) k2 t
    8 l+ _7 o" L9 |: {5 @
    y =
    ( L: O) R4 E/ ?( f5 D% r -1/(exp(C1 - n*t) - 1)1 |/ `5 r* c  V, t, F3 o
                          0
    ! Y, u2 W4 T8 q4 [                      1
    . U: D7 S# I5 f! A8 t  z& j1 p: \1, e: V5 H' I( X- V
    2
    ; g1 A* S4 h; M  I* i0 t1 w- W3* R9 ]3 r  q: J4 q+ S8 R6 F
    46 V& U- \9 Z8 }2 `, G9 t
    5
    % g3 Y! P# q8 ^6' {; t& U' I6 S1 e. G+ I$ Y
    写规范点就是这个函数6 E% o* L% {  W) H, J9 C; h
    $ z+ z' G1 F. V8 r% V* z2 O" W
    0 Q4 i/ U1 Q+ L  y0 b5 ?
    函数图像大致为
    - m3 I; N1 i2 D  J' P
    ( W6 g1 e* b$ [" r* T

    : L1 {0 R* j. K9 r可以看出t = t m t=t_mt=t
    7 ~  j3 o+ N6 |# G6 n, Wm. B( W: L$ H0 w5 D& v: D
    ​       
    & I: f; b; _% T 时这里图像的斜率有个最大值,其也就是传染的最快的时候,即传染病的高潮时刻,当然t m t_mt
    - Z& h: w0 w2 J' i' @3 Qm4 L3 b3 [/ p: U% B1 s# Q
    ​       
    + v4 P4 d9 f6 h* `) }- |; H5 c3 d 是可以求出来的4 b9 c5 w$ g3 C$ i

    " y: J3 X( o! p3 i) q. A$ K# k3 f: l
    ' ~$ x" W! j* q; }
    再看原式,当t → ∞ t\rightarrow \infint→∞时i → 1 i\rightarrow 1i→1; F1 {% Y5 O) [# z# f  x
    病人的比例为1,当然这也是不可能的,因为我们还没有考虑有没有可能治愈,看模型三3 Z: D, a3 `7 F7 Q" @, {
    ) c4 H8 _$ M+ B- c/ r
    ) M* ?( c/ Q! Z/ ^( h
    模型三
    5 [6 c  |' Y6 p* {" Z假设:4 H- q0 _' ]9 U! j4 h+ j7 y
    % s5 f0 S) O* D) i$ a) F
    + B. o7 S# a( `$ n; }% N. ^5 J* {0 p" {
    传染病无免疫性如伤风、痢疾等——病人治愈成为健康人,健康人可再次被感染。  E' ]  I. `+ [* X
    病人每天治愈的比例为μ \muμ (日治愈率),1 μ \frac{1}{\mu}
    3 @# l( U5 S* g* Iμ1 E: f, g7 F  Q& S
    1* t, E& O0 E6 ^, {" i
    ​       
    ( ^5 u8 |! S- Z3 h; u 为感染期,) X8 z" K  N$ u* t# }3 C, X
    模型
    - v% A) Q7 _+ ]6 x* {- K, n, ?6 F% f这是减去了治愈人数之后的新增人数
      g5 N4 a  B$ w0 W" d5 Y/ k) h$ M

    . O$ C& a- {* z6 K* ]) w1 {; ~
    $ i! O1 H' Q+ }* H9 ?( h; q9 Z
    : q6 d: W6 C9 i! Z! ?7 Y0 m3 E
    σ \sigmaσ 为一个感染期内每个病人的有效接触人数,称为接触数. B! j+ Z7 y) _0 Z
    ( M. T; }& [4 f4 D0 u! X8 o

    9 z) o( D" T- g8 [4 o- y' U可以画出上面的图形分析下
    9 l6 R2 K8 s# u* T5 I% _9 @
    . [7 ?5 p6 G+ v4 s& Y- V2 B

    % ^  Y$ n: g! n* Z1 S- j5 M对上面的公式进行分析,可以得到,当i = 1 − 1 σ i=1-\frac{1}{\sigma}i=1− 9 P% ?3 w3 E! W, h" A! c, U) d, d
    σ# \  t' q' k3 W' c7 F, w
    1
    9 B0 _0 C' ~2 O* X0 J/ F​        ! i. w4 \7 L+ W- e) B5 u
    时,i ii对t的导数为0这也就到了i ii的最大值;当0 < i < 1 − 1 σ 0<i<1-\frac{1}{\sigma}0<i<1− ( V2 A1 V' @9 E" _3 w. g2 U
    σ9 p1 r8 m* ^( K0 ^/ D
    1
    # m# M& D, t; }" k' C, `​       
    & ~& s6 X9 ?* D4 A4 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− 4 G- E" p# r6 D$ [$ q& ~3 B3 X3 K
    σ2 I/ R: S. K& k/ }6 W
    14 b# F9 m& }: ?: |! ]
    ​        6 q. r. [9 |9 h% ~
    ,d i / d t < 0 di/dt<0di/dt<0,i是单调递减的。
    ! r; ]& p/ b$ |( F% p) Y  y" }7 J6 e; l  P* t5 F1 N0 Y; `! F, k
    - P! F  w) o+ P: t0 p" U
    当然我们也可以画出i ii随t的函数图像9 h/ x+ z6 N) [
      E7 Y1 p4 e: Y% b; G

    2 P  n) b: X, R7 |. e先看红线,若初始条件i 0 > 1 − 1 σ i_0>1-\frac{1}{\sigma}i $ ]4 [  F$ c  n- h, C
    0
    ( ]# z- d' r0 N7 A: `​       
    6 h1 d0 ]3 g& [) l- U4 A  [ >1−
    0 F0 J8 x) z1 z! S$ O3 t  T; b! Iσ
    ( z) B, X$ ^) A9 L9 }3 M3 v/ ^1
    8 A( \6 w5 j) h' L  s1 h, N​        ) K4 Z0 C' c7 P. `$ |. P' U
    d i / d t < 0 di/dt<0di/dt<0,i就是单调递减的,- p1 ]) @3 |& U: g4 G1 ^
    若若初始条件i 0 < 1 − 1 σ i_0<1-\frac{1}{\sigma}i
    0 \* j3 t7 [1 Z& p" l7 F; g0, W+ Y$ Q" j- G; [0 W
    ​        : a' O/ U8 f' V3 o" p8 O
    <1−
    5 D6 O& m, c* J% X* iσ$ i$ ]6 T* ?$ p  y+ k. S" @
    1
    6 F+ V  t6 ]" `) |0 |# A​        1 z$ p# A) h2 p: E& ?; O* J0 C
    ,i就是递增的,可以看到i对t的导数图像有一个最大值,下面的黑线就有一个增加速率最快的一个值,按S形曲线增长( Z7 C. @" d9 C1 V

    $ S  Z( m% E0 _; R* a

    % E9 C" j1 n. l5 }σ = < 1 \sigma =<1σ=<1时d i / d t < 0 di/dt<0di/dt<0 i肯定是单调下降的,最终降到0; R3 ^: _/ o2 x

    ) \/ F" m) m1 \' e

    ) s! O* r# R& p$ L/ U8 ~6 R" k1 @; v4 _- M  H8 B6 E( M, {9 `
    * C2 C7 R; H0 B% T- Y
    综上:8 j. \% H' ]. h6 o* y" ~1 ~4 r- p
    想让患病者越来越少,σ \sigmaσ必须小于等于1,即感染期内有效接触使健康者感染的人数不超过原有的病人数.& L7 W1 M" P. w$ q7 ~. F' f+ x

    6 X% S9 O6 W, G! J, R

    4 u% a& ?( s7 H8 t- T& {这里我们分析的是感染之后还能感染的情况,但有些病毒感染之后会在体内生成抗体,就不会再被感染了,下面我们分析这种情况。
    / f# g) Y; x! V2 R: H7 j; w6 b0 x5 ~9 T! J7 B# H$ f7 f! g- M8 w
    3 w- ]$ r* l6 {/ |2 f% R% _
    模型四 SIR模型" P# x; ~8 }: R2 ~4 Q
    SIR模型是常见的一种描述传染病传播的数学模型,其基本假设是将人群分为以下三类:, k, r4 H" T) P7 [5 u# H

    3 }5 v1 c" O  y# [
    7 Q+ b* m; Y6 I: ^  }
    1 易感人群(Susceptible):指未得病者,但缺乏免疫能力,与感病者接触后容易受到感染。
    4 j/ [$ _" x; M( Y4 P% d7 e- v
    + A. v# O% N& ~3 _5 ~) Y6 n8 c
    8 v& a0 o, f: K2 W, S7 {
    2 感染人群(Infective):指染上传染病的人,他可以传播给易感人群。
    : \: \' ]. e* [2 |# q. b
    ! \, G8 Q# h- p. Y  h, e# E
    7 q3 [; \( w2 Z! H9 d. z
    3 移除人群(Removed):被移出系统的人。因病愈(具有免疫力)或死亡的人。这部分人不再参与感染和被感染过程。7 \* B/ V% X" p1 w, t+ P! q
    , }# l) U& U5 j" U

    . o, t6 {  S1 @) Y3 S* _( q6 }假设:; G% F7 `) b+ U7 P/ O( z% ^* O! u+ |

    / R1 ^! w! U# w/ N& R1 y
    * g, y; {+ S# t, c6 X
    传染病有免疫性如天花、麻疹等——病人治愈后移出感染系统,称移出者(Removed).3 d$ @- o0 S; Z* h: D; X: s
    总人数N不变,健康人、病人和移出者的比例分别为s ( t ) , i ( t ) , r ( t ) s(t), i(t), r(t)s(t),i(t),r(t).
    ' R( f3 T6 M3 ?5 Z  C病人的日接触率为λ \lambdaλ , 日治愈率为μ \muμ, 接触数 σ = λ μ \sigma=\frac{\lambda}{\mu}σ=
    6 K) x& ~# E: `/ q( z* M5 T) oμ
    4 @1 h, B" r1 g# E1 D$ {6 L$ O! ~λ
    3 B% d* P- V5 x4 N+ i7 ~​        5 o% y2 v  p& Q* p& @1 k  \

    ; i) i8 ]+ N" b/ E8 n# D建模:
    . ]' u$ }4 U$ H& Ws ( t ) + i ( t ) + r ( t ) = 1 s(t)+ i(t)+ r(t)=1s(t)+i(t)+r(t)=1
    . ~+ s, |3 U) h这个就是病人减去治愈的人,和上一个模型是一样的- M! Z) R4 W5 p$ ^; v& [/ a/ k; B

    % w9 F7 ?' i- s3 W" t( n

    * e5 }6 j9 S, v  y- t因为有治愈后是有免疫性的,所以可能被感染的总人数要减少,减去移除者就是
    ' J4 Q$ H: {' r# n9 @3 M6 \) u* d* k, t2 N
    3 d7 i4 p5 j- l1 J
    将上式化简为:5 C- a" B4 D6 r" k

    * ~. ~$ B) k% i8 @+ G, N! V
    ; h6 }, Z* L2 b7 l' H
    i 0 + s 0 ≈ 1 i_0+s_0\approx 1i
    0 O# y$ t: _5 L0 o% L" |) s. u/ l08 J2 F! s4 j7 p3 _
    ​       
    ( [% I- R$ M& N, p +s ( [, @0 C/ j1 ~! R
    0
    + x& s9 H+ H- T( R$ A% v! W  y​       
    , Q% A2 M# Q. E+ ~ ≈1(通常r ( 0 ) = r 0 r(0)=r_0r(0)=r * \" h4 Z$ Y" a" w$ }/ k
    0
    ! M& ~6 |9 s. f4 p0 [* l. h. ~​       
    . _# f+ a7 Q& u; i8 R 很小)- ?# D' |5 s5 a4 p: s' A
    8 f7 P6 Z- x4 m3 o* P

    4 C; G; k% }+ G$ i7 @关于i(t) , s(t) 的非线性微分方程组,没有解析解,只能通过数值计算得到s(t), i(t), r(t)的曲线,下面来看下曲线的数值解的MATLAB程序0 k; H( f" @& T* P0 L
    . H6 e2 V6 D1 A
    5 e  e* p; N# _+ w' n* a% ~5 E
    这里我们先设λ = 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
    ) b0 U( {* ?! U$ E$ E6 N0" \. r9 R' W) e8 m" d  t
    ​        % d! N' v: ?) b# Y6 u- V6 g
    =0.01,s 8 u% x5 O/ X- Z. W- R( ^
    0
    ) K* v' R( c. @, _5 x1 I​       
    # z5 n# [  {, [1 D. p2 R =0.99
    : B9 h8 f0 l' F) v  U) u也就是平均一个病人人传染一个正常人,治愈率为0.5;开始的病人比例为0.01,正常人为0.99,设没有天生带有病毒抗体的人,所以r 0 = 0 r_0=0r " C8 k( A4 Q3 @" D$ ]( L1 c% R
    00 H7 b+ k: M% s
    ​        # ]$ m. c& D- j
    =0,之后若果病人被治愈,则具有抗体了,有抗体的人为:r = 1 − i − s r=1-i-sr=1−i−s: m5 |5 p; P* ?" L9 @
    2 w1 |; i" N2 o: _
    6 r( ~/ ]& J: _( C) k
    ts=0:40;
    - K) F0 n( @( S& A- gx0=[0.01, 0.99];& `* Y6 K$ [4 ~. l7 I/ R/ B
    [t,x]=ode45('ill',ts,x0);& A. X0 c$ {  S2 _
    r=1-x(:,1)-x(:,2);
    9 I- J/ `8 }* I* }/ @- W5 nplot(t,x(:,1),t,x(:,2),ts,r),grid3 ~' D. r9 ]' g% F6 u
    legend('i(t)','s(t)','r(t)')
      T3 k& `/ v; y; ~; l' n: D
    + T, j' |, j2 J2 N

    & V0 f5 \/ _, Jfunction y=ill( t,x)% X7 C' h& H, ?  N, U3 t
    a=1;
    % X1 f# }3 b2 O; G6 `b=0.5;* _0 e' u1 Y1 a$ H
    y=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];/ B, Z( `- t$ H* D
    1
    5 [# ?, C, O! S2
    # F# O$ n; A( N* e30 s8 T+ ]6 L7 k% |5 h
    48 y" U3 X7 `+ G8 v7 d9 e
    5
    . Y2 E" u* Y9 N9 A2 S! q" B0 _7 t0 b6
    % q( m# R& n- f/ W2 g8 `7+ S" S6 e( D5 l. o. x0 D& c
    8: L7 v  k- @  w/ C; |: H
    9$ _. p) I4 Y. `/ Y5 [+ N
    10
    ) r! k1 m" c  b  _5 w4 k9 \8 E/ A11
    1 }2 O6 I# k" F% d' N, Q: a
    ( R: H+ `# l! Q

    3 p- `: e) d& C/ }) e8 m可以看出:s(t)单调减,r(t)单调增,都趋于稳定, i(t)先增后减趋于0.1 H' W; p5 ]2 F8 l1 s; n- I
    结果分析+ ~! M/ y! N7 d
    先回顾一下参数, I! Y- [2 k# s/ ?# ]6 h
    接 触 率 λ ; 治 愈 率 μ ; 1 / μ   平 均 传 染 期 ( 病 人 治 愈 所 需 平 均 时 间 ) ; σ = λ / μ   接 触 数 ( 感 染 期 内 每 个 病 人 有 效 接 触 人 数 ) 接触率 \lambda;治愈率 \mu ; 1/ \mu~平均传染期 (病人治愈所需平均时间);\sigma =\lambda/\mu~接触数 (感染期内每个病人有效接触人数)接触率λ;治愈率μ;1/μ 平均传染期(病人治愈所需平均时间);σ=λ/μ 接触数(感染期内每个病人有效接触人数)
    " }: w/ D  a: s# C可以分析出:+ q2 n3 t6 ], Q( ~4 Q8 @6 K4 ?
    3 G4 h- F9 `* o" l; V: N

    / t+ g7 u* v$ r/ Z" l! M9 _5 s6 O随着卫生健康思想水平高,接触率λ \lambdaλ变小* O( ^: ?3 L- L* q0 Q0 y4 T2 y
    随着医疗水平的提高,治愈率μ \muμ增大
    9 O$ ?2 I* v/ j2 _% v接触数σ = λ / μ \sigma =\lambda/\muσ=λ/μ减小——有助于控制传播.: c, R5 Q. O! m6 l+ D0 m& \" h2 j
    我们可以试试稍微减少一下λ \lambdaλ,增大μ \muμ,来看下效果1 l0 i+ b) C+ @0 D) j$ g

    ' T7 T3 [, g5 R8 J( X

    ) F/ K% O* ?! C' M6 g% Mts=0:40;9 d' u( s+ g4 ?6 q- |
    x0=[0.01, 0.99];
    2 a% @0 \  i* ?1 j2 P( ?9 ^[t,x]=ode45('ill',ts,x0);" K& A8 l2 }! o) s
    r=1-x(:,1)-x(:,2);
    - D- q& E' v/ D0 J7 f) Iplot(t,x(:,1),t,x(:,2),ts,r),grid
    , B; C* b8 z5 j. m$ K+ [legend('i(t)','s(t)','r(t)')& u  m; w* K3 ], \* v, @7 }
    % k1 {2 h7 W7 ^" t& R! ?3 {2 B

      j" h; u( Y. b! Tfunction y=ill( t,x)8 {# s( j+ _7 Y
    a=0.8;
    ( r3 L2 `( N4 n  L8 A  ib=0.6;
    ( C8 k+ k2 |% `/ V! r& y" U4 Dy=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];; K5 \3 W6 j3 p. F4 n
    1" A7 r$ K" s6 @8 [( x  F4 L( N
    2
    * W+ x2 J0 |' Q4 \/ c, p37 S6 d8 D* ^5 ~5 D2 M2 e
    4; |" p' ]5 G3 z! \
    5
    + _# d% X; z+ f% L- h/ s6 W  g6
    . e8 \* L8 b! Q" `9 r7
    - Z! n- ?! d; }9 H1 I8
    6 w; q+ |5 N) O; Y& r7 M% m9/ z5 a* [; C, ?# c  a
    10
    ; C- L( P1 u$ I1 ]8 @. C( {$ `11
    / p- Y% l: D9 v: G
    0 J" `. W0 l8 y, R

    4 D3 n7 A$ S) ~4 \7 c+ L综上我们可以得出结论:想要减少传染病的传播,我们就要在接触数σ \sigmaσ上下功夫。
    % Z. ^" ?; O% i! O2 I5 k" h, D7 n8 o3 q/ a
    ' M% u% H) }, Y% p+ @0 T& \% b
    实战建模7 v/ [8 g$ {) _
    数据处理
      C' l! ]1 C: E4 e3 y: H3 p
    ( ]/ P5 O) `; o! c' @
    ( A/ I- s6 a- \/ x, u
    首先,我用python爬虫爬取了丁香医生官方数据,一共5534条数据 特征包括感染、死亡、治愈的总数,当日感染、死亡、治愈新增,疑似病例,时间,省份等14个特征
    / @  M4 h1 S) u9 a+ O8 H7 ?- d2 L  E  Y+ P1 Y* G
    " q  K+ N, l. N5 U& A: c
      ^8 ?2 U2 q/ z3 D4 Z9 v& d

    ! r; M0 _/ G  |( U4 G然后用python进行数据提取,提取了较为典型的湖北省的数据作为我的参考依据+ L* ?* V" ?2 C' ]. a, P
    . |' L2 P/ |% e" }' m* ?
    / c9 ~+ U* y  H& _- n1 ~% Z3 v

    ; V% l  s5 w2 K% Z& E

      r& k1 w; w/ C6 R- V5 v然后用python对数据进行清洗,提取出了患病总数,现存患者总数,死亡总数,治愈总数,时间,省份这几个特征
    3 [9 ?" d* S6 `" R, X" U
    ! b/ y8 R3 Y: A4 g
    ) U& o7 y: o! L  D& t- ~
    对日期格式进行修改,值保留月和日,并与死亡人数的位置交换& n. k! ]* J  }2 X" D
    - z/ |, ^, o; e$ M# {  y8 q- w
    * p2 _, T" r3 V6 W1 _5 y9 s1 ?
    这里我用python对提取的四个特征分别进行了数据分析(主要包括计算最值,平均值等,),并把1.20日作为第一天,7.02日作为最后一天也就是第165天,做了可视化可视化处理。0 M+ {. k. Y" C3 i  R( W
    感染人数示意图/ A* S0 R, q: y0 a: O4 s: R  s
    9 O5 }  h8 A, r* J/ i' O4 r% z
    , j& t1 Z4 P. _, y: w9 u0 y1 A
    治愈人数示意图
    9 d/ t1 o6 W. g& M! r( U$ }
    ! \" d8 n5 d( B2 M/ y

    " x4 w. k+ k" M$ F* x% ^, o' v5 O, u8 T) G. l* q: C
    ! ?" P# t! v. ^; |9 a: i
    现存患者数量图
    5 O+ j! j  T; G8 M6 H7 E: I: q; Q& S7 K/ m7 j. n7 k

    ( N' m2 z5 t; T$ c死亡人数示意图' F3 n6 l% h% X% R! A
    & S/ A0 [; I8 l4 ?

    & _6 l! k6 h: X0 K4 J6 {
    2 Z) i2 K- e+ D! A

      m/ w( O7 C2 H. m经过上面的图片与describe数据分析,我们发现有一天是异常的,患者多出了平时的十倍左右,经过查阅资料,这天因加强了检测标准,所以增多了很多。为了避免这个数据的影响我们选择将这一天删去(或者用平均数或中位数代替也可)2 W$ ~. S% a8 T- c
    将上面清理过的数据存放到csv文件中1 l/ m% ^: Q8 }6 p+ M# T. |

    ; G. s) m" d: Z# l0 R3 y0 _
    : t) S" D( L5 E5 ?" U& y
    模型建立
    ; N8 r: H1 h5 c- k0 L模型假设- v" {1 I9 Y* D( M. ^
    经过上面数据的分析,我们大体可以进行如下假设:
    $ Q, u! ^# g9 h& e  ^3 J+ t4 _# e1.由于不存在封闭情况,考虑开放体系。* G' N" R6 O# X* u- o1 T% o8 K
    2.目前数据以天为单位发布,因此不考虑连续变化情况,只考虑离散的方程。3 x5 I; Y3 E4 Q0 r
    3.新型冠状病毒的治愈人数和死亡人数相对较 小,因此只考虑 Susceptible(易感)和 Infected(感染) 两类人群。设易感人群总数为N
    - _1 C- C, V; ?! M$ h, K! N+ R- w4.经专家鉴定新冠病毒患者治愈后至少六个月之内不会再被感染,所以设治愈后移出易感人群。0 f* p$ e# j; t0 o/ Y
    5.设每个病人每天有效接触人数为 λ \lambdaλ(日接触率),且使接触的健康人致病.* J3 l2 k8 b" f4 i; F; F
    6.设病人每天治愈的比例为 μ \muμ(日治愈率)4 e: A! k8 z1 E- n' r, m, l& ~' f
    7.时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t).
    0 P  |( v6 r/ A8 E+ N/ B' D( H3 C& V& B7 x3 G) {# ~

      q. ]) w% l* ^模型一( B  v( Z  C4 I& l3 \7 s- c. L8 n
    # }/ x4 p2 d% W' T

    3 M6 B2 T0 {0 R2 q/ @: X$ {- O分析可以得到移出者r(t)=治愈人数+死亡人数0 r% u/ q+ @6 ^, _  Y( r
    通过python数据处理,我们算出了r(t)的值,并将其可视化1 t" ~0 q& M: q) a5 F
    - b$ m+ k& W/ g8 X7 N

    : r+ t+ K1 y2 H! \3 f- \: R/ C: ]0 U7 G) Z
    ! I8 Y$ U' t# i- v6 w5 ]4 ^- _
    我用MATLAB对其进行了拟合,拟合图像为
    * Y& Z6 W/ n) |6 F6 V6 j
    ( I' j1 y1 x! C& u1 {8 u
    # m" a9 s% S  z! Y
    6 c+ D4 z# F9 z

    4 V) Q. S! r* j9 e7 j6 b1 [& A! D6 j" t. ?* v

    ( L6 G; w0 T$ n& o分析可以得到患者 i(t)=患病总数-移出者
    $ }7 z  r+ P5 {, `' D可以通过csv文件的currentConfirmedCount 直接获得i(t)数据,当然也可以通过 i(t)=confirmedCountv - r(t)获得,对此我也做了可视化展示- l; D3 b% Z. W! q/ b1 m/ \' O2 y# t
    6 C3 p( N3 l# l
    9 m) i0 \$ x2 \$ |' d- O
    通过MATLAB程序对其进行拟合,可以得到r(t)的函数图像大致为
    , Z; D+ |# `% d" k- }' T- P9 v, ~+ @; H6 l4 ?

    , P" j8 y  ^* Q3 b" y: v" [) I+ A/ r2 S  X. r6 w# `4 D
    , n& v- R8 m1 ~- I7 m5 {! u- H

    ) h# m% O* I0 _5 }( M( u

    % C; h, s, m  G/ `: j; N为了方便,利于公式推导,我们先设时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t). 所以有$ k4 i" Q* G# i- h- ^4 o
    , T/ c5 }0 F( L& r% ^0 T
    1 Q6 U+ M  A( l- p& h
    可以推导出每日新增病例的表达式! Z- W6 m) K" U. r2 [
    ! A5 c" X; F2 j6 V6 o
    " i/ {6 d; @1 Z' u& h! V& z

    4 Z! n; o5 {; v! ^, q" a

    5 o! h; w( C) o$ }# r9 z7 h2 N, \/ t* k! n6 `6 m4 E

    ( t, V) U0 P2 H8 O由以上两个公式可以推导出以下两个微分方程# [/ [2 X  ?3 ^" G, M( M

    4 u& V4 ^9 Q& b& e1 N
    & R9 f' H: P& j+ P# s
    7 R, b; p& T/ \* t  g

    . ]2 w7 ~; P8 b( y) e可以知道初值  V+ n( Z9 \6 e3 C( y( B
    i ( 0 ) = i 0 . s ( 0 ) = s 0 i(0)=i_0.s(0)=s_0i(0)=i
    2 p$ e7 @# c0 Z0 ~3 U0
    , U* A2 b. z, W: B' J​       
    2 e: t# q/ a0 u; Q$ g( Y& O .s(0)=s " E- ]* I; C& w1 R. B
    0+ c3 A& q  z% d2 _/ q0 d  J- s! Y
    ​        5 M: h- c% B+ ?- C. y

    / w; a2 Y$ Y: q( m' F因为一开始治愈的和死亡的肯定很少,所以r0可以看为0,于是就有:
    - w7 \+ u' j; W% m* _* }8 Ui 0 + s 0 = 1 i_0+s_0=1i 3 [) ~! m% H7 {) U
    01 I& n* }1 {( b# j+ @3 W
    ​        1 o) h: a% s% E1 c
    +s
    - l! A6 L+ `# y' v$ G7 ^; W5 s0( g" n: k$ ~$ Y) ?' X2 S7 O
    ​        ; ~3 r- |2 Q  [) }
    =1
    5 u7 I4 O& x; s1 _5 d通过解以上微分方程我们可以根据经验假设λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)的值分别为1和0.5(也就是每个患者可能使1个正常人患病,患者可能有0.5的概率被治愈);由于一开始患者肯定比正常人少很多,所以我们设i0=0.01,s0=0.99。对其求解可以得到s(t), i(t), r(t),的变化图像  ^4 J6 r) r. o+ D2 S8 O! g: n. Z
    ( f6 [% e9 T2 S- r. c+ F% m9 s
    ! L+ p# V: O# z' o* n( R

    8 v8 z6 i# [4 ]9 c& M7 u
    8 P) g" J# S, R6 h+ W/ D* J
    MATLAB程序如下% u0 `: I- H1 A% {+ I
    ts=0:40;' B! M" R: p  j  m( p" i
    x0=[0.01, 0.99];! E+ A2 {' Q. ?7 `  ?2 Z
    [t,x]=ode45(‘ill’,ts,x0);
    / l- ^5 h5 o/ [; `$ rr=1-x(:,1)-x(:,2);
    0 @4 ^# U+ f  rplot(t,x(:,1),t,x(:,2),ts,r,ts,x(:,1)/x(:,2))
    + G" p6 [, V& L" V& e  M+ Clegend(‘i(t)’,‘s(t)’,‘r(t)’)
    " K( _& t, D9 A4 L! g. N' Q; D( ~2 Y6 L# g3 V, |. ]

    3 G! P* }. t# O" M. wfunction y=ill( t,x)
    8 |( D/ g7 L/ Z8 f8 V' n3 N- Y. T2 za=1;( S) [8 S& n5 Y6 @0 S
    b=0.5;4 I+ |: S, ?% Y, Q2 a0 {' ?
    y=[ax(1)x(2)-bx(1);-ax(1)*x(2)];' Y. \+ Z. \$ i; Y
    4 H, T( W* K) N6 }& B
    - L# C& N: |; p! [
    结果分析:患病人数肯定有个高潮,但之后高潮就会减弱,并逐步降低为0。随着医疗卫生条件的不断提升,患者的 λ \lambdaλ(日接触率)肯定降低,μ \muμ (日治愈率)肯定上升,所以我们可以把λ \lambdaλ调一点为0.8,μ \muμ调高一点为0.6,可以得到以下趋势图。所以应对传染病很关键的一点是我们要提高医疗卫生条件
    : |2 q0 I* p1 |4 z2 U( k
    & x/ m: [$ `, a
    " C$ o6 l; ?+ H5 p0 f
    ! j+ V, R- u' w' l$ H5 h' u
    模型二
    ; \2 q. ]9 {! Q) ]- e# w4 S
    4 S; f6 f, h# D+ I! J
    % v3 \- z) y& e* o" I  E; h
    实际上,λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)都是随着时间变化的,这里我们设s(t), i(t), r(t) 为第t天健康人、病人、移除者(病愈与死亡之和)的数量, s(t)+ i(t)+r(t)=N..3 q* i2 P( S1 c4 J; h
    (t), (t) ~第t天感染率, 移除率(治愈率与死亡率之和)- B1 Y3 b" y4 `, g9 B- k
    有 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 P- J/ G2 |6 d因为s远大于i, r,s(t)视为常数,所以有
    ) m2 R5 Q4 t2 z: G4 _% u4 |3 D7 |2 P
    9 j2 g7 J! u, p) V3 i+ G

    ; i, z$ d+ W  k& R

    9 P: b0 N8 R7 B% f( k' z* {取差分近似导数
    ) W- v2 j" S8 F
    % x: t1 [& O- b" {* ~
    . l/ [+ X4 \' G+ c" Y- l

    4 w: N* M' R4 w0 m9 _% f( A

    & e6 C3 [6 x" Y; A, v5 A: X我们可以先用真实数据对(t)进行展示并进行拟合1 F# B0 k6 x: n8 V0 {9 q) G" O

    + T2 I5 r3 k% A( k! a- T* ^
    . k  Y( k, `' Z5 K, Q+ W* ?4 D8 o! w

    5 l# g9 ]6 O$ `+ D# l
    ' {/ E7 a7 S* G1 f0 }
    当然同样的方法对(t)进行拟合' s2 q1 p- M1 ?! x2 ^  T

    3 A7 o4 D8 f" _

    . \3 }- S2 v, O0 T做不出来了,好难,光这些东西就弄了四天,到了数学建模国赛得多难多累啊,哎,让我这个小白手足无措。毕竟还没有正规的培训,这个模型等期末考完试一定好好做做!!!
    % |, A. I4 X6 R/ N& _冲国奖
    : \4 K6 D+ k- H, C冲国奖* Q5 g2 S+ z. X% t
    冲国奖& Z, f  f- Q6 S' J, P3 e8 V
    ————————————————
    , U& y3 M. m* Z: e2 j版权声明:本文为CSDN博主「小白不白嘿嘿嘿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    ' U% a, S# Z) ^8 d, b, L原文链接:https://blog.csdn.net/weixin_45755332/article/details/1070946300 g6 J' g) u. \# C
    * U0 S, C( \# K( l

    8 g/ K( q3 J% v: r* d  v8 G
    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-6-15 14:02 , Processed in 0.468285 second(s), 51 queries .

    回顶部