QQ登录

只需要一步,快速开始

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

    7 T+ |( _' K5 |: S# w7 g" l+ }数学建模之传染病SIR模型(新冠真实数据)
    + b# S- c% i2 j' A) }2 b4 J传染病模型的基本问题
    $ L2 E9 Q6 `) r6 {  T描述传染病的传播过程
    , i9 |/ }7 Z. e$ G4 x分析受感染人数的变化规律) ~0 ~5 E' i5 p4 j1 Z( A
    预报传染病高潮到来的时刻
    / z9 M5 u+ ]: b/ F# c6 T预防传染病蔓延的手段( t# Y% @- j, V6 d8 ]  u2 G6 |+ A. K
    按照传播过程的一般规律用机理分析方法建立模型
    + [  X% r$ S. u6 C/ n9 a注:我们这里是介绍数学医学领域中基本的传染病模型。不从医学角度分析各种传染病的特殊机理,按照传播过程的规律建立微分方程模型.# x7 R% N+ f' N+ s

    / N' }  w% G  T2 Z& B, r6 `

    # n3 R; `  V7 r( N5 Z- t建立模型; t2 t$ C6 I7 Y0 x
    模型一
    # I* u- B5 d4 w- ?& M) r& B/ m1 z假设:' I, Q" b9 \  B9 N- S% c
    $ H: F8 f5 [& l( {8 ^0 G* c6 n

    ) v% V5 B; y' ]4 W/ i* s设已知感染人数为i ( t ) i(t)i(t)(病人数量随时间变化)5 f+ s" ]) J6 X6 l; V) _
    设每个病人(单位时间)每天有效接触(足以使人治病)人数为λ \lambdaλ
    # h7 |# M$ P: j2 b7 L模型:7 }( M; I  D' q
    单位时间Δ t \Delta{t}Δt内,新 增 的 人 数 ( 现 有 − 原 有 ) = 原 有 的 × λ 新增的人数(现有-原有)=原有的 \times \lambda新增的人数(现有−原有)=原有的×λ,即
    * V9 z+ d: q5 x7 q8 X: O; N
    . D3 o5 D1 y& `# g) Z
    : d2 v/ S$ j3 ]8 Q) T: c8 z' x+ t
    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
    8 X/ _' l- X% [/ y+ p8 x. I: t一开始的感染人数为i 0 i_0i % x) W- J+ Y0 Y, \' y* b
    0
    & I9 ?& t; R. @  O6 Z1 B% g  ?​        0 D8 s- p' {  V* F7 K3 |7 X% Z

    : H: r* d2 R% o9 F: ti ( 0 ) = i 0 i(0)=i_0i(0)=i
    9 }4 C9 l3 X9 @: ]" N# |0
    ) W4 D$ o' ?6 }/ i) h6 m1 P​       
    ) n' F$ f8 }3 x$ ?2 r
    ' m5 Q/ l9 e8 h解微分方程可以得到
    0 e6 m! R5 ?7 W! Pi ( t ) = i 0 e λ t i(t)=i_0e^{\lambda t}i(t)=i
    8 D  W7 b" ~& a0  x! x. p- |5 G! E8 T" s
    ​        + m& }- D( r6 z+ F# n* M+ x2 z2 [. B
    e
      E2 Z' G4 S4 Z; F! Bλt
    3 d( m( b. z- Y+ }1 c" M 8 J; z# N; ?: D8 G9 o
    所以可以可到当λ → ∞ \lambda \rightarrow \infinλ→∞时i ( t ) → ∞ i(t) \rightarrow \infini(t)→∞! A; E3 F& f6 v; z; h4 I2 V5 @
    当然这是不可能的,因为我们考虑的因素太少了,首先一个是,若有效接触的是病人,则不能使病人数增加,所以必须区分已感染者(病人)和未感染者(健康人)看模型二来解决这个问题
    6 |1 r! Y1 `' y' k# `4 E' e1 L# C. x: n+ e; R. E; u' v
    $ q0 p) l4 N" O; J
    模型二
    & v6 t* c  [' A) H, \! q# f7 b假设:
    $ F+ ?) t: R" U! i* V
    6 s8 X' n4 S! _% N' U( d
      f- i7 @* R6 v2 X1 g) C' m% a
    将人群分为两类:易感染者(Susceptible,健康人)和已感染者(Infective, 病人).
    ! m9 C+ c8 q( i总人数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
    ! h8 F9 ~6 m0 P, w* Z- d每个病人每天有效接触人数为λ \lambdaλ(日接触率),且使接触的健康人致病.
    $ q* K& D4 A. \% X$ c建模:
    # A+ ~! T  r. m每天新增的总人数为原有的人数乘以每个人可以传染的健康的人数,再乘Δ t \Delta tΔt
    9 l/ G) ?7 g: U& |- t9 [, q* P/ i1 F- T  ?' O

    ! `/ _5 ^; I8 ^& sΔ t \Delta tΔt除过去,两遍N约分得到下面,
    0 t/ q, V3 @! l' @8 h7 j8 X5 C; T  Q
    / l# D) `! f( p; h. d+ s
    MATLAB解一下这个微分方程
    0 I$ a. x. z/ Q. q# @; o) Q
    1 m8 ~$ U, w6 L1 ^3 y2 W$ X

    $ ?* o# p: j  T( q4 cy=dsolve('Dy=n*y*(1-y)','t');
    7 z8 g/ p$ r9 u+ l  l5 I* Y8 Z/ E+ K* v. y7 }5 |
    3 q; v1 t  D1 @% x
    y =: z$ G& k6 x) y$ Y, M! I
    -1/(exp(C1 - n*t) - 1)' [6 m- G( G2 c) p1 ~
                          0; ~# x6 P3 v' Y/ u, K( v3 }" ~/ d! y
                          1
    . n$ U# l! v$ p7 O- O- X8 W' l: Y4 g6 ?' d10 Z, \* O, y6 x7 f5 H! f" {
    22 s+ Y2 `2 N% b* {
    31 ~0 i; `3 ~& h( |/ \* e
    4
    4 o. p& }4 a# u7 W: |' T5
    3 @; v! G4 H$ Z4 T3 }# B% }% w6 A: Y6
    : `& o7 y) M& R+ e* w5 r写规范点就是这个函数
    : h, A+ `$ [* b% e' e1 d' f9 y$ A; C% l7 L
    ! |- e# X# b- l% r9 P, ^" W
    函数图像大致为
    + }* ~7 H, W0 j! `  u) X7 h" G( H' {$ r" B+ D( J( K
    4 z6 i# G( H& B! d; K! E1 t8 @# b( q
    可以看出t = t m t=t_mt=t 5 v4 h9 r* C8 [, ?- `
    m9 U3 ]1 Q/ ~; P2 K# I
    ​        2 r+ X7 l  [) c1 S! A( k! ]
    时这里图像的斜率有个最大值,其也就是传染的最快的时候,即传染病的高潮时刻,当然t m t_mt
    ( _* K5 e5 R6 X, q% E* Gm
    , M: N( d2 h) G5 U' r​        6 F- i! l- y6 y$ \4 t& `& @* |
    是可以求出来的. P' s0 h2 F# ]$ l- L* u

    9 P( n  t2 K3 b1 |

    2 _( f6 R0 p# N1 E" @再看原式,当t → ∞ t\rightarrow \infint→∞时i → 1 i\rightarrow 1i→1
    7 D' f( ?# q& M1 `* @0 b1 u病人的比例为1,当然这也是不可能的,因为我们还没有考虑有没有可能治愈,看模型三
    * h4 d) D. A+ k/ _& r8 V
    4 I& L/ P  `4 I& O, T

    1 ~! N: _* a, p$ y  o$ e2 ^模型三  R: B1 b$ n/ P" m
    假设:
    ( S0 U5 H+ f! D* ?0 }) z4 _# u. V6 X& i# D$ e- e9 B

    6 y7 J/ ]' _/ e3 w2 t! A* g* F传染病无免疫性如伤风、痢疾等——病人治愈成为健康人,健康人可再次被感染。
    * d& \* F9 n$ C% t  \3 v" K病人每天治愈的比例为μ \muμ (日治愈率),1 μ \frac{1}{\mu} / m- B+ x; j4 }5 \6 J+ u
    μ1 [" t  x( g* h
    1
    * Z4 a/ y1 \6 X9 w8 G# U) ^) [​          N! ]4 Z8 S, D# u, Q, O4 B6 f7 n4 @
    为感染期," u* g; c6 D/ V' v/ r* t
    模型0 \: x8 w- H  }
    这是减去了治愈人数之后的新增人数
    , j4 J" c! v; L, a# c) D
    # Y8 n9 P3 ~% x) k! w

    2 S. p* u6 X5 ~  k+ v/ |; m- ^. [: [$ C" @4 J- T/ ^
    6 O: c) v( R  m: }( q& _
    σ \sigmaσ 为一个感染期内每个病人的有效接触人数,称为接触数
    ' }5 t, P  U' X3 |5 [4 C& d; b7 D6 f
    3 }1 {8 q4 l2 w: x8 w) N
    可以画出上面的图形分析下( g" S6 h6 T0 `' D1 M, h( a

    " \1 T4 p, U1 {" c, P" j# ]
    " r1 O) o; Q% S2 }
    对上面的公式进行分析,可以得到,当i = 1 − 1 σ i=1-\frac{1}{\sigma}i=1− $ y8 K0 c1 l' B0 G6 E0 G
    σ
    ; b. ~* K8 X, g$ l1
    2 {; F$ |" r; }​       
    6 ^( `5 C: X* L+ J 时,i ii对t的导数为0这也就到了i ii的最大值;当0 < i < 1 − 1 σ 0<i<1-\frac{1}{\sigma}0<i<1− 0 c  u7 n3 `/ H8 \7 b! H. i9 B: [% _
    σ
    6 s% w* g/ Y8 s  a  Q) z, d! o# v1( C+ g3 D$ O5 B/ I' Q3 v, C6 [6 G
    ​       
    0 g% |# F; k7 C 时,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− 3 k; Z& V+ V4 |8 `
    σ1 Z# E4 K; }$ s* b
    10 t- ^# `% O! y, S. p- R6 {
    ​       
    6 o1 Q5 \+ w/ n& e$ L' d ,d i / d t < 0 di/dt<0di/dt<0,i是单调递减的。$ [0 y  x# J/ i3 Z. p; c2 N5 r  C

    - h/ g1 W0 g2 J. j% ^* D
    ) d! b" }( |; Q0 j- E+ B
    当然我们也可以画出i ii随t的函数图像
    ( a/ u1 o. U1 p- j  O8 h# m4 _9 Z; V

      S, D9 [5 p% {7 p& F- w3 @先看红线,若初始条件i 0 > 1 − 1 σ i_0>1-\frac{1}{\sigma}i
    ( ^$ R* g" B' f6 N: B. u0
    4 R/ ?5 w# p  ^- M3 N​       
    & O/ d; s: P" H: j5 h) X: _ >1−
    ) M6 [( t' p9 ]" n, j6 T' K  H4 Uσ
    0 ]+ T* ?- V" v16 Z( C7 P; W3 e0 V1 I
    ​        ! w) w, D6 b. Q* a* I' Y
    d i / d t < 0 di/dt<0di/dt<0,i就是单调递减的,
    # @! |  L. w' z若若初始条件i 0 < 1 − 1 σ i_0<1-\frac{1}{\sigma}i 8 }# h' l/ X& S, ^
    00 q' T5 w8 t! {6 f6 K6 }4 w
    ​        * X7 o4 Z7 k( j  i
    <1− ! @- x6 Q$ v! x
    σ
    6 W$ X5 z6 ?- N3 }; j' W1, s" a7 h# ^6 o5 v9 k& T
    ​        7 e, i- W" V5 P+ M# z- c
    ,i就是递增的,可以看到i对t的导数图像有一个最大值,下面的黑线就有一个增加速率最快的一个值,按S形曲线增长
    " {) [- P; `' F* Q9 A* U' g% U" s8 Z5 v+ _# K# [0 B
      E2 D' F! e+ N) z1 x. f
    σ = < 1 \sigma =<1σ=<1时d i / d t < 0 di/dt<0di/dt<0 i肯定是单调下降的,最终降到0
    , L2 [8 ~9 f( t( T3 m0 b: y  W% n
    : y6 D% r9 c$ J" Q! k) P
    % T' V* G& q: ~. k; F
    ) X6 E5 J" J# M& o, v1 |' }: F
    综上:: C* G- z# Y7 }1 X1 `
    想让患病者越来越少,σ \sigmaσ必须小于等于1,即感染期内有效接触使健康者感染的人数不超过原有的病人数.
    , X! c" O! Z7 e' k4 F- b
    % t5 S, @" x4 G7 N' }; i
    " J3 L& N7 w( `, w7 t
    这里我们分析的是感染之后还能感染的情况,但有些病毒感染之后会在体内生成抗体,就不会再被感染了,下面我们分析这种情况。  y: W, O0 c( S
    " }: A+ H( J) s2 H

    ' a# d* Y5 L1 \2 y7 H2 r: B模型四 SIR模型
    , }4 _5 o% b) f5 m8 S2 j7 g6 o1 V8 gSIR模型是常见的一种描述传染病传播的数学模型,其基本假设是将人群分为以下三类:! L* i, A3 @& X# L/ q4 T

    / E3 r$ w5 q9 d! w0 U) O

    - _  R. x* k. K1 易感人群(Susceptible):指未得病者,但缺乏免疫能力,与感病者接触后容易受到感染。
    * N! w9 }# X$ t, U0 ?1 @5 U9 E. E( }( m7 K4 f
    4 f0 }8 q5 f0 c! c
    2 感染人群(Infective):指染上传染病的人,他可以传播给易感人群。
    0 n  }) R2 |2 `! g( v, B1 ^/ v+ ^" q

    $ s) f1 f- _1 t! l% C3 移除人群(Removed):被移出系统的人。因病愈(具有免疫力)或死亡的人。这部分人不再参与感染和被感染过程。
    8 ~2 o# k- y; J. Z9 B7 O# ?
    4 j  J, _$ x6 T5 H1 B* `# {

    9 H, P4 y! {, M/ e/ ?) }假设:' @9 T1 Z+ Y( S; U! U2 \, u7 ^
    - v1 U1 e& G5 [2 w: x7 v6 g+ v
    : U2 g4 }- c" N0 x: g$ z( j
    传染病有免疫性如天花、麻疹等——病人治愈后移出感染系统,称移出者(Removed).1 E& o9 u2 J- G
    总人数N不变,健康人、病人和移出者的比例分别为s ( t ) , i ( t ) , r ( t ) s(t), i(t), r(t)s(t),i(t),r(t).$ Q. T4 L" s+ I  X; v
    病人的日接触率为λ \lambdaλ , 日治愈率为μ \muμ, 接触数 σ = λ μ \sigma=\frac{\lambda}{\mu}σ=
    2 |% m# l) r6 L  ^( pμ
    ; g) |- Y3 B8 cλ
    $ |- P% @& }7 `6 D% F​       
    . Q# T3 S4 E$ K. c1 f
    . P5 ^, X  w1 e- N4 |建模:( W# U; O7 ?/ T! X
    s ( t ) + i ( t ) + r ( t ) = 1 s(t)+ i(t)+ r(t)=1s(t)+i(t)+r(t)=19 Q. j9 G5 G* y: ~
    这个就是病人减去治愈的人,和上一个模型是一样的" [  A2 J/ t, n
    ' }/ b, R: Q  J  U2 F9 D3 n2 ]

    , `4 I: o" y* p4 o$ I7 f因为有治愈后是有免疫性的,所以可能被感染的总人数要减少,减去移除者就是0 H# m. s; [" x! W- [% \$ }

    3 V+ _& g% o3 ]

    : x& I# H7 ~" _4 U+ U$ {7 P4 s6 D: F4 @将上式化简为:: I, n, c, x7 c. q$ j

    ; E) W. R  m; L! z' D

    % ?9 P/ V3 }/ Y1 k: N3 k/ ?: si 0 + s 0 ≈ 1 i_0+s_0\approx 1i / R! C% E7 C1 d8 m4 u
    0% p0 Y2 s2 f: T, o
    ​        / y5 Z' n1 W, b6 S  P
    +s
    , B: s# _* f: N# [6 n% `0% t5 ]( f" _9 r& D5 E
    ​        + ^# Q( T6 Z4 G9 @6 y* R9 P, r  B
    ≈1(通常r ( 0 ) = r 0 r(0)=r_0r(0)=r
    + l. o6 B) K9 k0: ~$ ]. @/ ^& B- e
    ​       
    & O0 d2 m5 q$ C' ]2 \ 很小)9 c6 k. ~! N  A4 @
    0 G9 _: m* |1 D; v1 e  c

    4 f2 M; [: f/ d4 p关于i(t) , s(t) 的非线性微分方程组,没有解析解,只能通过数值计算得到s(t), i(t), r(t)的曲线,下面来看下曲线的数值解的MATLAB程序6 M# R$ U# B$ A' h

    8 t( d5 l2 J8 Y9 E- ]
      }. ^4 V3 _: z2 p3 G+ ~0 K' b
    这里我们先设λ = 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
    ' Z0 Z7 z3 Z- R08 G6 B2 j6 y1 q
    ​          [8 ^1 P8 R. c: N1 U; p
    =0.01,s
    2 _  V* W6 u2 [" f, q03 Z( H/ K3 c; \7 ]; Y
    ​        : x/ O4 |' e& V1 U" O/ Y0 H
    =0.99
    * k5 z7 \+ N% ]也就是平均一个病人人传染一个正常人,治愈率为0.5;开始的病人比例为0.01,正常人为0.99,设没有天生带有病毒抗体的人,所以r 0 = 0 r_0=0r
    2 K. R, e; x5 C- O. q+ D5 O" \00 J! @: V3 D; b4 G3 u( i5 `( k3 ?
    ​       
    # {6 H* v  C% Q( [ =0,之后若果病人被治愈,则具有抗体了,有抗体的人为:r = 1 − i − s r=1-i-sr=1−i−s5 D) \- r2 o  m# g. l
    . D3 Z+ K. h  i8 i/ K# p

    , ~" ~+ n' L: a) {3 B# f( Kts=0:40;) n- b: n% d& A  t, B. t9 b
    x0=[0.01, 0.99];2 Z! t  ]' B5 e5 [1 e
    [t,x]=ode45('ill',ts,x0);: R7 N4 k, l9 e: t7 V! g% W' l! Z
    r=1-x(:,1)-x(:,2);
    7 q: z) _5 k% F7 w. yplot(t,x(:,1),t,x(:,2),ts,r),grid+ o' t$ r! @1 ~& q  t2 W
    legend('i(t)','s(t)','r(t)')6 _* c; K. f) e; H& G+ b: Z

    0 M( l8 @( V) B# {8 N# L  j6 u9 Q
    $ f9 u1 L+ a- ?2 [! o8 l* y
    function y=ill( t,x)- w, B  s" Z# F, T! {
    a=1;5 n9 d* h1 b+ b
    b=0.5;
    1 ^7 F; s% ]* H% G0 xy=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];
    9 S0 B$ ]- m! [' j0 O) K14 O+ S/ d3 H4 ]! G+ f* f8 u% t
    2: S! u) ^& t% U3 }( }1 j. m
    32 E: S- j; ?, j6 f1 Z* s
    4
    5 h* T$ n# i' p( ~/ c5
    : R4 E4 H. ~  J1 c/ P2 z, M6 H6 S6
    ( a+ p4 _- H7 D. Q# F7/ }1 ?% V, e0 T# G: T2 J+ w
    8
    ( g9 t2 S! V( L4 r( \2 ]' J9
    # ?  y- x: G- Z0 w" I1 R103 V" ?4 D% ?* F+ h- i  H
    118 E/ B, S! L" z* T9 e: l; ?1 c; z& p
    ) D: d- ]; x- }% s; X
    ; |: Y& y: L7 ?) b( b# g( l
    可以看出:s(t)单调减,r(t)单调增,都趋于稳定, i(t)先增后减趋于0.6 e) }0 q/ V6 B, x, B
    结果分析1 E; N. Q0 r/ V' A2 T8 e
    先回顾一下参数; ~; R. u5 O6 K
    接 触 率 λ ; 治 愈 率 μ ; 1 / μ   平 均 传 染 期 ( 病 人 治 愈 所 需 平 均 时 间 ) ; σ = λ / μ   接 触 数 ( 感 染 期 内 每 个 病 人 有 效 接 触 人 数 ) 接触率 \lambda;治愈率 \mu ; 1/ \mu~平均传染期 (病人治愈所需平均时间);\sigma =\lambda/\mu~接触数 (感染期内每个病人有效接触人数)接触率λ;治愈率μ;1/μ 平均传染期(病人治愈所需平均时间);σ=λ/μ 接触数(感染期内每个病人有效接触人数)- A0 X8 I. J+ }# I* g* n( E
    可以分析出:0 @( s, v5 ^/ S* J

    8 W3 g2 x8 Y! J  ~
    # N+ m5 V' E2 ]7 |0 L
    随着卫生健康思想水平高,接触率λ \lambdaλ变小
    4 E/ g$ k6 k1 @" l1 {  q随着医疗水平的提高,治愈率μ \muμ增大
    " V0 P/ z- ~3 [6 ~/ s接触数σ = λ / μ \sigma =\lambda/\muσ=λ/μ减小——有助于控制传播.
    , I$ q6 s& @7 [& T& |我们可以试试稍微减少一下λ \lambdaλ,增大μ \muμ,来看下效果0 s3 Z: p' e0 x2 [2 I
    3 {1 E, z6 k; [( ~& Q
      L1 R( w) m- a
    ts=0:40;6 q1 {2 n5 ^" J9 l6 n3 {0 |: m: N
    x0=[0.01, 0.99];
    / j- q$ O* G+ B" N3 b' E[t,x]=ode45('ill',ts,x0);
    # F8 s8 D2 K$ Cr=1-x(:,1)-x(:,2);' o; F! `5 }8 B) V5 h% K/ p
    plot(t,x(:,1),t,x(:,2),ts,r),grid
    ; _& t- K8 i! w. h, @legend('i(t)','s(t)','r(t)')
    9 t. Q( C& }, l* {  j& t
    ' @1 Y, o( ]8 W$ t9 R( N/ {. t% M! N

    * `: U! w8 j0 Z: Kfunction y=ill( t,x)6 P" M# H" L: ~" a2 W, O- b
    a=0.8;  ^. B- j& A* \" a% T1 J
    b=0.6;# {7 }4 l  M# ^6 ?  K# y6 l
    y=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];5 \% r0 v! v+ S' ~: x. i
    1
    # m  F; P+ s" \  D# {2 t% J9 e& f2/ E* T2 @6 ^+ }
    3- _6 W7 P. Z8 \- i% V
    4% E/ u: {* }7 a: d8 E6 T
    5
    - U) V. U/ o2 x: p& ~! f8 b6
    : f* b- f" c! \2 @3 ?0 Y: H7
    / F# Y9 i& s7 p7 L) @  A8+ c, X/ R! B2 `  U9 |) m' {
    9
    8 P8 A  b8 M4 H; M9 ^7 F8 L10
    9 k7 T  t+ y- t( [* G8 v112 a3 Y& H3 `) S/ Z7 q' j- A. v

    & }/ [) ^  P  d/ ]# C* Q% n* v
    ; i' b9 G4 @) m
    综上我们可以得出结论:想要减少传染病的传播,我们就要在接触数σ \sigmaσ上下功夫。: F8 J: n* T0 q' o' B. N

    5 e( T/ t  {1 ?6 Z8 S; M- \2 n) \

    4 b- M: x8 c2 n/ K) A5 P6 U实战建模
      M  s- U2 j- L* j: c0 J数据处理
    . d' u7 {) m" V+ l2 D9 x/ m) ~
    : ?( I# C4 N( u7 O
    4 {# F" E2 M" t0 U. X% E
    首先,我用python爬虫爬取了丁香医生官方数据,一共5534条数据 特征包括感染、死亡、治愈的总数,当日感染、死亡、治愈新增,疑似病例,时间,省份等14个特征
    - ?% V6 J* f* K/ S7 I/ c; h- _1 s4 d2 ^8 t) o) F. t* p
    + m# W; v1 P3 s( @7 r9 w

    9 `2 S" r) A6 H5 c. D" O0 V% S9 n1 k
    $ E% ]7 R# V% B' v$ {9 a' O
    然后用python进行数据提取,提取了较为典型的湖北省的数据作为我的参考依据" x' s, U# ?/ a: }0 U0 L9 c
    0 z8 u/ G' q/ f3 }2 k5 ?

    0 A8 y8 |8 [% u+ |
    , x" T( @! }9 e* h, |

      H/ \% l5 ?: J然后用python对数据进行清洗,提取出了患病总数,现存患者总数,死亡总数,治愈总数,时间,省份这几个特征' x) @  g/ @) f; G4 {$ t" V

    - Z9 a0 ]2 ?+ L, _( q

    : J0 K6 J7 B5 n/ J8 H( M2 h对日期格式进行修改,值保留月和日,并与死亡人数的位置交换
    , R+ J" }- K: |* \, S% f' ~1 t/ |$ r. V. N

    4 E* O, i9 Q- I( A  Z这里我用python对提取的四个特征分别进行了数据分析(主要包括计算最值,平均值等,),并把1.20日作为第一天,7.02日作为最后一天也就是第165天,做了可视化可视化处理。
    3 ^% b$ A7 N) {% c4 t感染人数示意图# l/ Z( D) v3 T/ `$ i$ a" x$ L
    6 I" E; {6 G3 o+ S6 t, h) K
    2 e  M) L1 M2 ~6 `4 s8 G. R
    治愈人数示意图
    * k2 P* F( q, v) k
    $ q: H* \" a6 D; b9 U

    % `/ v, {8 ^2 F) X- N5 H! V5 b$ W2 |4 ?& k( S& v( t! t. s) q) J* c) P
    8 V* z( \( ?* N5 B' A
    现存患者数量图
    ; j; f5 E7 z0 ~# |" o; R5 p( E8 C
    , I5 W  Y+ O( m' ^3 U7 t' p

    7 p1 f% T. Y* W: t死亡人数示意图
    ! R) x! g6 X) _% q' D3 K. _" Y/ {/ t5 v" F

    ) S/ ^; T5 ]& j9 M: g; I" U/ I
    ' j" c8 I4 ]: ]- L3 Q
    9 R* r5 u* C0 p# q* a' D
    经过上面的图片与describe数据分析,我们发现有一天是异常的,患者多出了平时的十倍左右,经过查阅资料,这天因加强了检测标准,所以增多了很多。为了避免这个数据的影响我们选择将这一天删去(或者用平均数或中位数代替也可)' I1 e* E( n3 e
    将上面清理过的数据存放到csv文件中/ H/ A0 N, u8 u5 I- ^* ?& h/ M
    7 L  |8 T3 g" s; V$ e) U3 D8 t

    3 s9 F: b0 l+ W' @% V3 Y模型建立
    4 Z8 s/ D0 R& I, @& M8 _6 u/ f模型假设+ C! [9 d9 L, P  o' p/ p
    经过上面数据的分析,我们大体可以进行如下假设:' A7 {; B4 j! ~: R5 ]
    1.由于不存在封闭情况,考虑开放体系。5 B3 S  x  }6 s: J
    2.目前数据以天为单位发布,因此不考虑连续变化情况,只考虑离散的方程。4 q3 }( v8 P; Z. x
    3.新型冠状病毒的治愈人数和死亡人数相对较 小,因此只考虑 Susceptible(易感)和 Infected(感染) 两类人群。设易感人群总数为N
    / t  [0 R5 p- }( u- L: h4.经专家鉴定新冠病毒患者治愈后至少六个月之内不会再被感染,所以设治愈后移出易感人群。; b9 `# J' B: E1 g
    5.设每个病人每天有效接触人数为 λ \lambdaλ(日接触率),且使接触的健康人致病." a: N8 K2 {" c' h, t
    6.设病人每天治愈的比例为 μ \muμ(日治愈率)6 J6 _5 s( l# [5 z' Y$ ]; X8 O
    7.时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t).. F1 X' Z% m" @' L6 O1 ^
    1 J" _6 \" Y% G, }4 M

    4 f1 H+ ^$ \( g" J4 n模型一* [* I+ }: N& Y4 L6 S& m
      m" ]5 a/ M+ j) j$ l$ A% q$ g2 u, F

    2 J7 L8 o& K% ^9 R) f分析可以得到移出者r(t)=治愈人数+死亡人数" n- ]( V4 i/ N, u: M7 z
    通过python数据处理,我们算出了r(t)的值,并将其可视化! P. q. y2 F3 I& g# S
    ! V* E+ j9 H. a( I9 {) C0 q
    ! R( H* U1 h$ P/ D3 K8 A4 q

    9 K, Y- [6 n2 {4 ?
    3 [* P+ X% q& e' ]6 o2 C/ X4 P/ Z
    我用MATLAB对其进行了拟合,拟合图像为
    - q3 S- m, v6 s3 {' A6 f3 a' I, G3 B& q( {* k

    ; Q* }5 W& X* [; i/ Q% `2 [3 d
    + t) I' O) k8 ]3 k

    + c$ x4 A/ k! Z- k( J2 g1 q7 g* F2 _0 P8 f  T
    ' y; @; x- k/ e2 ~# T0 |# D3 D: h
    分析可以得到患者 i(t)=患病总数-移出者
    3 h( H2 I  X  Y可以通过csv文件的currentConfirmedCount 直接获得i(t)数据,当然也可以通过 i(t)=confirmedCountv - r(t)获得,对此我也做了可视化展示
    0 u& @' s1 I, u9 P6 R
      M! f4 u0 z: g" U, a: X/ C7 L( N
    6 N, c  C. ?4 S* \6 Q4 I: V
    通过MATLAB程序对其进行拟合,可以得到r(t)的函数图像大致为4 T2 w* n: ~9 Y( D! E3 y5 |
    ' i9 I3 t' E9 o* l- \% ?1 s1 b: x

    . f; `  k* h3 j9 m8 T# R7 ~& z0 k" M, `  x6 J
    4 x6 w7 ?$ {; X0 F1 J

      x' \, y$ Z  C/ R
    ( C1 g. w" w3 Z
    为了方便,利于公式推导,我们先设时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t). 所以有
    4 o8 i: S6 A0 c% V1 S
    ' h+ i9 R' ?( _( C
    ( B& z8 e. p7 t
    可以推导出每日新增病例的表达式' `7 Z. h& ]' w: x6 U1 v( i. A

    , w% c( Q! Q2 q7 c
    ( J% Y5 D- ~$ W9 B! ]
    " R* ?0 W; \& E- `. J
    " ?& l: o& O6 S! A8 [' W* ?
    & y+ n# W; b; @) X# S
    , S% J2 a# C6 |$ U& D
    由以上两个公式可以推导出以下两个微分方程' V  M# O! n" ^* s
    4 O9 \7 ?) k' z" Y$ N- |

    0 P! D1 x& F/ t  K
    : J7 J- q) T, F% I
    4 r2 ^# D+ k" E$ Y# V
    可以知道初值
    ) v# `7 g9 t, Yi ( 0 ) = i 0 . s ( 0 ) = s 0 i(0)=i_0.s(0)=s_0i(0)=i " W  o* u  i7 ^/ V' m& k
    0% |, U, q, v  i1 S; y1 t
    ​       
    3 v, h4 B9 g5 w' R1 m .s(0)=s
    . U$ S5 b8 f8 }* {" ]0 a1 j. e# T0
    ( F) z. c4 O1 s  C$ t0 q6 d​       
    3 t0 o; H/ x% P. t3 ]' W' v2 e
    . I9 s9 d. S8 ^+ z, \+ k因为一开始治愈的和死亡的肯定很少,所以r0可以看为0,于是就有:
    2 q- z1 ~: E# G! zi 0 + s 0 = 1 i_0+s_0=1i 9 M# p: X; M/ }- r2 `# I7 _
    0
      ^  R- m: H( C4 B" u2 R$ C$ v% m​        + s. }5 p2 b  `8 i  ?- I  S
    +s / a. a1 f  E0 p& {+ g
    09 ~" {+ M3 o; U
    ​        - I7 y/ h/ y: A1 E# Z6 B& ?
    =1
    3 g% p2 U. q: n6 L- s通过解以上微分方程我们可以根据经验假设λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)的值分别为1和0.5(也就是每个患者可能使1个正常人患病,患者可能有0.5的概率被治愈);由于一开始患者肯定比正常人少很多,所以我们设i0=0.01,s0=0.99。对其求解可以得到s(t), i(t), r(t),的变化图像
    + y1 R1 {( g- g  C/ A! H* z
    % n+ x2 G% M' v- B9 M2 v) I0 X8 E
    * i0 A/ n2 ]- M! q5 J
    : s; n' k5 n1 V: [! W' U
    4 v2 r7 U$ E/ A1 I3 z. E% p4 [; S
    MATLAB程序如下
    0 y2 c0 [3 i2 c* ?ts=0:40;
      O4 o" r$ p: ]2 o/ |3 \' sx0=[0.01, 0.99];
    * e* |* H, z# B. `: I[t,x]=ode45(‘ill’,ts,x0);
    & Z  I7 [# p2 k$ a) N7 _r=1-x(:,1)-x(:,2);
    3 X3 ?+ a  p% d. ^) T8 i: Hplot(t,x(:,1),t,x(:,2),ts,r,ts,x(:,1)/x(:,2))) k# K2 ~  Z7 U/ d5 s
    legend(‘i(t)’,‘s(t)’,‘r(t)’)/ i" E" {: a: {3 Q1 p6 }: I
    2 p! }' T0 f" `% S1 l

    ' X  ]/ `( I$ k2 b, T! h% T. `function y=ill( t,x)
    3 u; l2 s: k2 n4 E% s7 a& ia=1;8 }6 u1 C3 |% _. ]2 i2 |0 y% \* ^# o
    b=0.5;
    * A$ A; ^5 p" Q* T3 o7 Fy=[ax(1)x(2)-bx(1);-ax(1)*x(2)];
    ' _3 u: o; S5 o! e& n1 b- U! T1 F' r
    & U( z$ K6 [$ {" O2 ]
    结果分析:患病人数肯定有个高潮,但之后高潮就会减弱,并逐步降低为0。随着医疗卫生条件的不断提升,患者的 λ \lambdaλ(日接触率)肯定降低,μ \muμ (日治愈率)肯定上升,所以我们可以把λ \lambdaλ调一点为0.8,μ \muμ调高一点为0.6,可以得到以下趋势图。所以应对传染病很关键的一点是我们要提高医疗卫生条件4 w6 x. P2 B+ J7 V) |3 k9 f: U' D: A

    4 A$ k% u; r0 A$ c) w7 ]

    ) J, ~0 ]. p. D; |" y* [0 C0 u8 G  v4 k8 Z2 `& K5 D$ I% R. _) x5 U, d" V
    模型二* W. V# z0 h6 m: I* s& Q

    ) l  ?! n8 }5 V/ N* ?( X  @
    0 t1 F/ d3 k: I; C* ^
    实际上,λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)都是随着时间变化的,这里我们设s(t), i(t), r(t) 为第t天健康人、病人、移除者(病愈与死亡之和)的数量, s(t)+ i(t)+r(t)=N..
    3 C" Q0 C) k0 @5 Z8 j(t), (t) ~第t天感染率, 移除率(治愈率与死亡率之和)& v* ~! e# D+ }7 I( k; S- C
    有 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)0 v" }, k7 |6 H2 X) Q* o
    因为s远大于i, r,s(t)视为常数,所以有
    8 _& h2 x2 L( e9 U, P$ T
    0 P& y: A2 n1 J6 \1 M% h9 Q4 v
    - g" m  [: ~% V- e" _

    . {0 t- k: R" l: w8 D/ L
    0 ]' s" O/ D! S: ~. n
    取差分近似导数7 \" _$ t& B  t- O8 [# Q: ?
    ! N* l9 F0 k: P( X- Z. k- n6 f
    0 Z& E. F3 n  `) S6 j% Z

    , h; W# a* f- _: {' v. |
    ( z8 @6 y0 x& Z: v/ Y
    我们可以先用真实数据对(t)进行展示并进行拟合
    4 w7 O+ a" I3 N( N& K5 D
    7 v. p- a9 _/ `9 B

    * n% ~5 o2 d! z6 z! r$ J2 u3 {: f- G( e+ j, l( Y

    0 P! {  F( s& g9 |9 D当然同样的方法对(t)进行拟合
    . c1 W4 s( W) v. O3 l2 t: e' @: D; C5 K5 [8 |( |' i$ Y
    : k: w  `1 A% [
    做不出来了,好难,光这些东西就弄了四天,到了数学建模国赛得多难多累啊,哎,让我这个小白手足无措。毕竟还没有正规的培训,这个模型等期末考完试一定好好做做!!!
    4 e, _2 S9 O' d冲国奖! }# @! V' B" j0 ^( [7 K7 Z
    冲国奖" V' X6 y9 J( Q* B& i5 H. }
    冲国奖9 G# ^" ]1 z1 V- L
    ————————————————! p3 z  `- ~. Z' ]+ d2 U, @
    版权声明:本文为CSDN博主「小白不白嘿嘿嘿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    % B' v8 O9 q0 w2 N原文链接:https://blog.csdn.net/weixin_45755332/article/details/107094630
    6 S9 O  A9 l; p( n, e( u3 R2 a; q7 O% D
    ! G8 ^+ l% Y- w' S4 F  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, 2026-5-26 20:54 , Processed in 0.406556 second(s), 50 queries .

    回顶部