QQ登录

只需要一步,快速开始

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

      O+ e* r* B4 F/ v数学建模之传染病SIR模型(新冠真实数据)7 ]; ~  V" _' j1 E( Y# W
    传染病模型的基本问题8 a+ c% a& R, L8 u9 r! N! \/ _3 A
    描述传染病的传播过程9 i- O& j0 j% E# A1 P
    分析受感染人数的变化规律
    - |" u* M5 [2 `+ ~预报传染病高潮到来的时刻* E. N* E: j& L5 ^" d: p( F+ W
    预防传染病蔓延的手段
    9 ^  q  ~: m  S$ U, U  O9 ]3 Y按照传播过程的一般规律用机理分析方法建立模型+ m' {3 n2 ?3 F. s, T
    注:我们这里是介绍数学医学领域中基本的传染病模型。不从医学角度分析各种传染病的特殊机理,按照传播过程的规律建立微分方程模型.5 X. a' v+ @$ j

    # \* o, d6 E2 q  G: D

    ' E  Y# H% q) }; a8 v( K建立模型$ E( p, D+ {/ |) {
    模型一
    " \- {0 i& M* f  \+ U) D0 f. }  S; Z假设:$ a& T' R% w) }% D3 ]) O; Z

    1 t/ o7 }  m# `9 T& [6 O

    0 a2 o  Q$ v# S( Q/ H5 w! X设已知感染人数为i ( t ) i(t)i(t)(病人数量随时间变化)6 ~: r5 A+ W5 Z6 c1 K/ Z8 L/ v
    设每个病人(单位时间)每天有效接触(足以使人治病)人数为λ \lambdaλ
    2 ]7 `" p4 q' G( s8 ?, L模型:
    " z+ [" T1 z7 T  f& y单位时间Δ t \Delta{t}Δt内,新 增 的 人 数 ( 现 有 − 原 有 ) = 原 有 的 × λ 新增的人数(现有-原有)=原有的 \times \lambda新增的人数(现有−原有)=原有的×λ,即
    9 z: p: U# y1 [2 v! t! a% L8 D' U( i& l3 t' C
    : f  j2 L5 a/ ]# 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
    " b" H  N% M  F. ^3 i. Z一开始的感染人数为i 0 i_0i
    0 q9 L, {) j7 \: f% o" A. A6 g" K0
    ) a4 Z, O* J& {) c) F, w5 e; Q​        : ~- Q( q; ?! p
    : v- F* l% `* |
    i ( 0 ) = i 0 i(0)=i_0i(0)=i / W' J( r5 Y$ y% k) Z1 {1 l- j
    0
      H7 q' M& N3 h5 Q2 ^$ B​       
    ! Q+ x4 p4 M7 ?
    % `, m7 r9 r1 w  M# E" x解微分方程可以得到
    0 O7 r" w# r% b1 bi ( t ) = i 0 e λ t i(t)=i_0e^{\lambda t}i(t)=i
    5 O- |( D- [: j- H0" e( f) N/ V1 L: k5 l
    ​        ; q' e- K0 o7 J! O
    e
    : ~. `- y9 L1 s* V4 U: U) oλt
    , \4 k# X# T; u& Z
    5 S1 t6 n  x- V$ z所以可以可到当λ → ∞ \lambda \rightarrow \infinλ→∞时i ( t ) → ∞ i(t) \rightarrow \infini(t)→∞7 Y: t, c% W9 A9 C  C& [7 ~" z
    当然这是不可能的,因为我们考虑的因素太少了,首先一个是,若有效接触的是病人,则不能使病人数增加,所以必须区分已感染者(病人)和未感染者(健康人)看模型二来解决这个问题2 o8 p5 S2 p% T7 b# @

    6 W5 N9 H" ?( {0 J0 |. l
    ! F) q, ?3 h0 \8 ]5 o- u' [3 t
    模型二
    1 ^# Z5 t* |" b2 L5 U: J假设:
    ; m( ?# C7 j! F  M4 @# K, ~3 }# [# t' a, L" o8 A- D# Y: j5 W

    , O0 R) C) z# m. Z4 ^7 q将人群分为两类:易感染者(Susceptible,健康人)和已感染者(Infective, 病人).: N+ o8 s& k4 F5 g8 M9 B
    总人数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
    2 U' ?. w5 X  ]" _" C, i& q& b每个病人每天有效接触人数为λ \lambdaλ(日接触率),且使接触的健康人致病.
      I; T: Q& T* u: i* M建模:
    0 G/ s4 |# i. X6 B7 [# O+ e% e+ M7 o每天新增的总人数为原有的人数乘以每个人可以传染的健康的人数,再乘Δ t \Delta tΔt
    5 X) a! C8 u# F' V9 g3 A+ x& q  |, a  @: f  m0 a0 e
    ( u# m4 q/ g' Y& b! d
    Δ t \Delta tΔt除过去,两遍N约分得到下面,
    3 z3 _! x/ J- v; J& j7 |% g/ A7 W! d( W  p; ]. Y/ H- ~# D, `

    1 B# z7 J. f( bMATLAB解一下这个微分方程
    * r( t1 |- j' ?, E
    - K) ^. n+ y0 b: M& Q
    0 y; T; I8 D' `+ T
    y=dsolve('Dy=n*y*(1-y)','t');
    ; U9 F" Q/ n4 G+ h" L4 ^- }$ T4 L" c4 K1 M) }2 U. t

    * }1 f/ O# z: L# ^7 iy =
    , u0 a3 G) n8 B; L- O2 i -1/(exp(C1 - n*t) - 1)" W$ x2 C) Y0 b* j! {8 \+ w, O. U
                          0( @$ U8 {5 M' B+ m1 u& r- m2 f' D
                          1
    9 n; p! N$ w7 v7 j* B1# ?1 y1 T. c& N) D7 w
    22 C+ Q8 U9 E+ v3 W
    39 @4 q# q" q5 m: v) `5 O
    4
    ' |6 F6 k0 @" b5 b# Q8 e( D" `5
    0 @( s9 N9 K: K* Y: D1 |; h% C! b' \- p6
    " Y0 [* p. {) D6 D写规范点就是这个函数
    6 w) E2 W- c% K
    . T+ l, d8 ?+ w: ~  P
    6 q( O( g9 ^" t0 y4 ^% G* I8 q
    函数图像大致为
    9 r7 `+ J0 E- K; A3 _& ]- X
    5 e6 c& p& u$ N& X1 G1 L

    0 v8 V7 o5 A0 A, C# H9 @" L可以看出t = t m t=t_mt=t + J# Q' J8 @5 k1 u2 d/ |( b; T* |
    m& |- \8 {+ |* {$ e
    ​       
    ) i; a# T1 Z" D5 d# z" r' X- H9 { 时这里图像的斜率有个最大值,其也就是传染的最快的时候,即传染病的高潮时刻,当然t m t_mt
    ; N+ u4 b8 G+ m0 D, jm
    0 M5 v& A$ l- a. S; j​       
    ( t! v; l* A8 C- A( @4 m 是可以求出来的: f  O7 t+ B# D2 m3 G/ _" I
    1 o( c6 D4 b: W6 C- Q: [
    ! V+ J5 p/ A8 P) v6 s% n) ]
    再看原式,当t → ∞ t\rightarrow \infint→∞时i → 1 i\rightarrow 1i→1
    7 o# p/ `! s! o: X. Q5 c2 s病人的比例为1,当然这也是不可能的,因为我们还没有考虑有没有可能治愈,看模型三
    ) b( E' M. I# o# i6 C7 x# p1 p; N/ {( U2 `

    , n+ g2 o; c8 A/ o- e模型三
    " g% [% o0 @7 |+ U假设:0 v& ~" L. ?: c# r8 x. O

    , H2 h0 d7 V, o( Z

    6 h/ G6 I& i2 j传染病无免疫性如伤风、痢疾等——病人治愈成为健康人,健康人可再次被感染。, r( u2 r. P: H# M
    病人每天治愈的比例为μ \muμ (日治愈率),1 μ \frac{1}{\mu}
    1 d. O6 ?1 V4 Nμ
    , }1 a* D( l  P. \/ `15 \4 g4 H7 a% I4 _! b4 Y% X, I
    ​       
    ; a; b0 T8 V' V( I0 o 为感染期,, H+ b) m8 D/ a: `
    模型! |: a0 k3 j  _  x2 i) L
    这是减去了治愈人数之后的新增人数
    3 x/ k) C1 d3 a. a
    0 l4 ^! e9 g+ [

    6 |: ^- f! F* j4 S( K
    " `! Y+ A6 u9 L
    : v! ?0 b# X( I% `. a
    σ \sigmaσ 为一个感染期内每个病人的有效接触人数,称为接触数7 R# a3 O% @) n7 m  E' V

    2 n* q- X) v/ M) P3 B+ R9 L
    # z  \4 V9 x' i& ~
    可以画出上面的图形分析下
    ! a9 c$ M5 p2 S" y$ {
    0 m3 ^* m/ x; _' |

    " i! t$ G7 Z/ ]5 H; ~对上面的公式进行分析,可以得到,当i = 1 − 1 σ i=1-\frac{1}{\sigma}i=1−
    0 w1 A( l$ ?2 r7 X! i6 Qσ
    ! w/ l9 D& M; ?( P2 r1 g1
    2 H; U8 f8 ?# G& B6 j$ k​        7 i- J5 z% k# _- R7 m
    时,i ii对t的导数为0这也就到了i ii的最大值;当0 < i < 1 − 1 σ 0<i<1-\frac{1}{\sigma}0<i<1−
    ' P& j2 |* [, E5 p2 J( @; tσ
    3 d- S2 \) `5 y1% P2 i$ @$ j9 M  A; `
    ​        0 P! J! d2 u) q9 {) p7 \+ u, j6 B
    时,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−
    / H2 k! a- B( h- Y' Mσ
    2 C$ B2 Q+ Q$ E! X6 D0 m1) V( y) B" n7 p0 Q
    ​       
    $ M% I" M& e4 v ,d i / d t < 0 di/dt<0di/dt<0,i是单调递减的。! u- \7 Y$ N9 y  v. {

    - K5 ?8 R. @& J- a4 w
    8 l- J" g5 S$ m3 K9 i
    当然我们也可以画出i ii随t的函数图像
    9 ?& ^5 g' L$ k5 T3 v6 E0 I4 @+ b7 S( W

    $ i) c# y, G* |# n' X8 g先看红线,若初始条件i 0 > 1 − 1 σ i_0>1-\frac{1}{\sigma}i
    7 t& j* d. Q1 O) B0
    - r1 @0 u% G  B" p5 O​        ' q3 h) I9 P3 n
    >1−
    " n! t7 }/ g& Z. Kσ: e' l- ~& X) q" ?
    1
    * q1 W+ F: _* O: i" G3 v​       
    5 v: S2 l6 C5 i- @2 k, ?- G. j d i / d t < 0 di/dt<0di/dt<0,i就是单调递减的,
    2 P. v2 L, F4 u$ P, e8 D若若初始条件i 0 < 1 − 1 σ i_0<1-\frac{1}{\sigma}i 7 z  e* ?  c( C6 [6 [! q
    0: H7 i5 t% q# F# ^3 C
    ​        3 M7 M% X0 d- u' m8 t% N
    <1−
    7 O/ f- w1 z2 p' Vσ
    6 C. F) U; X) H) y2 B/ ~12 R% Y/ P6 s: \
    ​       
    8 H* {6 J* \1 V- _& h1 E; V ,i就是递增的,可以看到i对t的导数图像有一个最大值,下面的黑线就有一个增加速率最快的一个值,按S形曲线增长; ^( L9 m2 X) D8 n- v4 A

    3 s5 p7 ]1 x  U: v2 d# T
    2 u3 _( k/ z2 ]7 }$ k9 _  n
    σ = < 1 \sigma =<1σ=<1时d i / d t < 0 di/dt<0di/dt<0 i肯定是单调下降的,最终降到0" c: @8 o' F% j8 h7 f4 p7 |( n

    5 H" u* I( W4 S- ]

    / w/ L, i5 Z% ]2 G# i/ y- Z1 c4 W, S  e5 L

    ; m9 @3 \6 u9 U* e' g8 x( G/ z* X  y$ h- V综上:$ l3 t9 k( J2 d# q
    想让患病者越来越少,σ \sigmaσ必须小于等于1,即感染期内有效接触使健康者感染的人数不超过原有的病人数.
    - o, W7 B( v7 x9 @7 ^- L9 N
    ; V6 l* n' F' z  B. u% M
      R" k7 Y5 R" L; r4 Q1 A
    这里我们分析的是感染之后还能感染的情况,但有些病毒感染之后会在体内生成抗体,就不会再被感染了,下面我们分析这种情况。
    4 W" b2 n, s0 z2 u* c0 j/ d. ]7 u, K! p7 X" W9 q
      E/ h- H9 T/ c
    模型四 SIR模型
    4 ]* }* ~5 z" nSIR模型是常见的一种描述传染病传播的数学模型,其基本假设是将人群分为以下三类:4 p$ T1 b. O* m. X5 P8 d; E+ P
    * v- @  V& g7 P$ t1 D
    0 F* z/ z- j9 r4 d
    1 易感人群(Susceptible):指未得病者,但缺乏免疫能力,与感病者接触后容易受到感染。+ N. H. K1 V, Y( }* o+ g6 g

    $ q* U$ g# `0 y1 U" L# G7 \
    3 Y- L; }3 z) ~! n9 X( |) y# n7 ~
    2 感染人群(Infective):指染上传染病的人,他可以传播给易感人群。  R$ c  H$ x% L

    . }+ p0 ?8 k$ Q2 E/ L

    3 p3 b8 q/ {' O) `) p% O: V; p: U3 移除人群(Removed):被移出系统的人。因病愈(具有免疫力)或死亡的人。这部分人不再参与感染和被感染过程。
    7 v# E+ E& T' w) d
    ) P+ O  g* N+ X% p
    % X1 o0 V9 i( y! W0 z. i- \
    假设:
    ' p  W9 b, h  R% s4 n% c# N; }# F7 b& ]  B5 }6 p9 k" D" G& d
    9 V. `7 W7 Z! d: T
    传染病有免疫性如天花、麻疹等——病人治愈后移出感染系统,称移出者(Removed).
    ( e3 h) _  B5 T& |: D总人数N不变,健康人、病人和移出者的比例分别为s ( t ) , i ( t ) , r ( t ) s(t), i(t), r(t)s(t),i(t),r(t).
    ! {% B. M( ]: Y8 @病人的日接触率为λ \lambdaλ , 日治愈率为μ \muμ, 接触数 σ = λ μ \sigma=\frac{\lambda}{\mu}σ= 8 u8 f1 K( D# L: L
    μ
    # C/ k* E2 k, ]2 Q/ u1 b0 kλ
    $ m# \. H1 J: c% {​        & F' c! ^$ w& M9 ?7 \( E
    6 h  D% F5 ^" Y) Y, p5 e2 p! c
    建模:$ f( @4 y, i' K& I9 q9 p
    s ( t ) + i ( t ) + r ( t ) = 1 s(t)+ i(t)+ r(t)=1s(t)+i(t)+r(t)=1! f- N0 G2 c( V6 J
    这个就是病人减去治愈的人,和上一个模型是一样的
    : ^. g( ?0 z3 x+ J8 N, w# n+ _8 r% \. U
    ' P# V& v! ~. {! E
    因为有治愈后是有免疫性的,所以可能被感染的总人数要减少,减去移除者就是" s! E" O' b" t* S  L2 r

    5 H# A" ^5 a' m0 F" N+ C/ h

    + J: ^  {# \! F/ l2 @3 e; r7 r将上式化简为:! x1 x. _3 N5 Z  d7 ?/ P

    6 [4 L+ W( \5 z0 Q, a  n

    5 c9 V# }; e8 Y8 q) f! c1 Z1 _( J( ?i 0 + s 0 ≈ 1 i_0+s_0\approx 1i
    ; @9 E$ r7 O) J  `/ c0
    ; N6 S8 p1 D! R# F  q0 O​       
    0 F6 K4 ?& M( G: Z- i +s ! m6 K' F& [2 l. J0 v/ Q4 W# E! H# [
    00 |( ?% R- s! v5 O8 I4 h  Z
    ​       
    # _1 g# N% H: Z; W& ?2 ]# z ≈1(通常r ( 0 ) = r 0 r(0)=r_0r(0)=r
    % x9 u- m3 ]- b  ^& s- y06 r* Y% r' s" b$ [$ x
    ​        , c8 [9 p- W  d8 H* l: j( t
    很小)
    % A1 o# D! C9 ^+ E) E0 ^
    3 N4 S. H. k1 T; T! L$ [/ v( I
    $ a' {! w9 u7 |
    关于i(t) , s(t) 的非线性微分方程组,没有解析解,只能通过数值计算得到s(t), i(t), r(t)的曲线,下面来看下曲线的数值解的MATLAB程序
    3 ^0 P' r4 P9 n. i' @* `8 p
    / [7 K% {# |1 G6 L' [7 ?5 O

    ! K1 y1 p' e2 C3 q' t0 j1 ?2 S8 a这里我们先设λ = 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
    9 f+ {8 C( B! w/ J5 E, |02 ~- d4 ]/ m7 z) F* \. a2 y
    ​       
    0 t9 P; S5 r/ e0 X1 g$ Y =0.01,s - H+ x; e) _* d4 p$ t
    0
    + Q- w5 e3 ?+ H- a0 Z/ Z​        # `$ j  {, Z! n  I9 Q3 b8 _8 m
    =0.99
    $ G6 ~3 l  ?' c+ r/ w% R: ?; {也就是平均一个病人人传染一个正常人,治愈率为0.5;开始的病人比例为0.01,正常人为0.99,设没有天生带有病毒抗体的人,所以r 0 = 0 r_0=0r 4 |  _9 l* l. d2 h
    0
    5 n: S2 x% o( B​        1 s$ ~+ Q) l5 c; j+ c
    =0,之后若果病人被治愈,则具有抗体了,有抗体的人为:r = 1 − i − s r=1-i-sr=1−i−s
    : H' h' l( A5 G0 R$ `
    ) w/ M5 A$ x5 y# B" q$ G% F6 a* q
    $ ?, {$ D& f+ @0 x9 f7 D9 v; ~% _
    ts=0:40;
    3 }/ Y0 ^, _& G& I- O9 G3 _x0=[0.01, 0.99];
    6 {& S+ b1 T5 Q3 V2 L4 H/ @[t,x]=ode45('ill',ts,x0);
    & i8 u! Q' G1 A/ v+ r. h9 kr=1-x(:,1)-x(:,2);
    ; I( `9 ^# U4 t* a5 ?" t: r8 s6 gplot(t,x(:,1),t,x(:,2),ts,r),grid
    ( g+ m* g/ u- }: f4 d9 i0 I% h+ U  v. tlegend('i(t)','s(t)','r(t)')
    + s" P* N+ j( W. p! v( H. @9 ^$ w* d* C6 g/ ]
    , \$ O$ u1 u  q9 c. Y4 _& o
    function y=ill( t,x)
    * h3 m( u) J- h7 ^% l& s! H7 a3 ?( wa=1;7 a4 V0 |0 O1 _0 Y
    b=0.5;4 ?! Z. \, d( T- q/ f
    y=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];  W! f/ F, I8 h" i
    1
    - l. N- j7 D' J2 {' d- [2
    ! J" i% S9 W7 V: Y3
    ( }  x2 Y8 H) c! R4
    $ d' Y9 u, \, ~# m8 s$ w5
    % v3 t8 A, N4 ?# t6
    ( Y+ z7 d/ Z. |& P7 e' t8 v3 r7% {; s, N0 }  d! j
    8, d6 g. D- v. E" J
    94 X. L1 {# Z! n; f: Q$ @
    100 E6 t% Z$ J( g$ Y( \7 D. d- o# b8 P
    11
    1 R5 g/ U4 y/ ?. x& D8 l6 j( K0 D: J6 |

    # T2 ^$ U+ }: ~可以看出:s(t)单调减,r(t)单调增,都趋于稳定, i(t)先增后减趋于0.& Q0 L, N, h6 G$ p# o
    结果分析
    7 z  B: \+ ]+ ~4 D( N+ Z先回顾一下参数
    ' X* O' l2 T# k0 l接 触 率 λ ; 治 愈 率 μ ; 1 / μ   平 均 传 染 期 ( 病 人 治 愈 所 需 平 均 时 间 ) ; σ = λ / μ   接 触 数 ( 感 染 期 内 每 个 病 人 有 效 接 触 人 数 ) 接触率 \lambda;治愈率 \mu ; 1/ \mu~平均传染期 (病人治愈所需平均时间);\sigma =\lambda/\mu~接触数 (感染期内每个病人有效接触人数)接触率λ;治愈率μ;1/μ 平均传染期(病人治愈所需平均时间);σ=λ/μ 接触数(感染期内每个病人有效接触人数)
    / a/ r, ?8 x& l$ {/ ]可以分析出:
    5 r3 O9 V4 a( ^' \
    3 p' {% _/ V5 H* S) c; Y3 S
    + _- z2 Z9 f6 G
    随着卫生健康思想水平高,接触率λ \lambdaλ变小
    : T9 P  a, L/ W! J' J: C5 h随着医疗水平的提高,治愈率μ \muμ增大- Y, d% B0 x: N1 J2 f$ d& D
    接触数σ = λ / μ \sigma =\lambda/\muσ=λ/μ减小——有助于控制传播.
    " J5 h: U6 o% V6 M2 W我们可以试试稍微减少一下λ \lambdaλ,增大μ \muμ,来看下效果
    5 A6 n& a+ \% E$ }( ]0 {6 D
    # E$ E5 U0 o1 |2 Q& x5 S, ~

    0 {# h/ w1 ~5 B% {7 r% cts=0:40;
      G- C% K/ c; m" q; G; ex0=[0.01, 0.99];0 n( X9 ?) G* p6 N
    [t,x]=ode45('ill',ts,x0);% g7 q) I3 J2 ~2 m+ b1 d6 [. `
    r=1-x(:,1)-x(:,2);. L. c5 B$ K1 l" v4 c3 ^! H
    plot(t,x(:,1),t,x(:,2),ts,r),grid! l. O! \& N- Q. M# R! `, O
    legend('i(t)','s(t)','r(t)'): s5 h" O7 v2 U7 j5 {& O8 L2 v
    $ l  s; ]6 t( I+ q
    % K! L* w3 Q6 d, G
    function y=ill( t,x)
    3 ^/ l6 I/ s5 P5 J/ l7 Pa=0.8;# y) B- G0 d, T
    b=0.6;+ ?0 r1 K- P+ n
    y=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];% Z! p' g( h. M, c) G! O: }/ Q# T
    1: u& {; ~9 V1 ]2 O9 q& ]
    2# m% p7 s( |% v2 a+ S1 Q$ x. j
    3; F  T5 Y+ I2 [- @/ `! q
    41 `- B# S4 w$ M  t( M7 ~$ v
    5; a" e. s6 F2 h$ M. a  M0 C
    6
    % n% s4 N# Q3 g8 l5 u6 m7' ]' U- i1 U$ V4 q" ?: H4 g
    8
    2 [/ p5 ]' b1 Q/ G5 t9" u. |4 `$ S$ S. y
    10
    & u2 J: ^! o" N$ ]; G116 O, g5 O' R! K3 I9 t" Q/ S6 a
    2 J" V* d% V+ h4 v" h

    & P, [% `$ {5 W+ P1 P综上我们可以得出结论:想要减少传染病的传播,我们就要在接触数σ \sigmaσ上下功夫。+ ^! {0 r% B: c: ^0 j# c( l1 S

    5 W$ Y1 m: u) ]" ^; i
    5 ~4 i% }' b3 m0 r4 T! `* v" \
    实战建模" S4 o5 }* o( R, b' A2 g  p
    数据处理
    3 B, y- H: A4 B/ U  l9 t  |) M6 r; J: Q( E/ Q

    0 h" h- x8 P& Y( n9 U$ s6 p, }4 h0 F首先,我用python爬虫爬取了丁香医生官方数据,一共5534条数据 特征包括感染、死亡、治愈的总数,当日感染、死亡、治愈新增,疑似病例,时间,省份等14个特征. S# ?. n. P( e, [: _& {

    5 E$ u5 Q$ q! z3 H1 }

    4 W  w; x3 o* ]# ~* L0 U" S3 y- ~/ \& s

    4 P  z& G' v6 \# {/ H然后用python进行数据提取,提取了较为典型的湖北省的数据作为我的参考依据
    / P7 }8 |1 f7 o9 L& R4 _- \/ j1 S# b: s. g6 S" A  I, m1 J
    ; y9 i) P6 O3 w) E5 R* n

    + ?! {/ }5 R( ?5 w  p, C
    / u& Y! p" p7 `: f/ k
    然后用python对数据进行清洗,提取出了患病总数,现存患者总数,死亡总数,治愈总数,时间,省份这几个特征/ L7 f. Z) x& s. H+ @) ?

    8 I% ~) `" j$ w& \1 u# r
    : E6 _  U0 }: K% @
    对日期格式进行修改,值保留月和日,并与死亡人数的位置交换& ]7 U( b8 A9 t- l0 T- P
    9 p3 g6 X4 ?* e3 N2 J
    + q, y! m- n( T5 B' U' i% E* \# ^$ n# I
    这里我用python对提取的四个特征分别进行了数据分析(主要包括计算最值,平均值等,),并把1.20日作为第一天,7.02日作为最后一天也就是第165天,做了可视化可视化处理。  @% ?" W4 `* W, B2 N/ g0 w  S
    感染人数示意图
    ! w7 p8 \# Y2 M, g  ^" d* L3 w2 P4 f* P
    / H# J$ K) i/ p" o# \% q' ?
    治愈人数示意图. d* U/ x5 W4 H9 q, I

    9 N' Y+ l, ?# A: K
    ! p# d3 [6 q* k2 n( w3 b

    9 U% A: g4 a3 }9 e
    5 o9 [7 I, n; ~$ v" t
    现存患者数量图
    % b/ s, h/ ]  }/ f# M
    2 F: f  S+ T4 X8 ?  t

    + n' G$ b2 R2 G: _) U' f3 X死亡人数示意图1 {) i+ Q5 v2 h: _$ S3 U+ f

    * `+ Q4 j) b* {2 W! t
    5 |+ }$ |7 e% U+ |8 B2 \2 \1 S% I

    & y/ c( \7 v6 u

    3 }$ e% J( @' ~! O经过上面的图片与describe数据分析,我们发现有一天是异常的,患者多出了平时的十倍左右,经过查阅资料,这天因加强了检测标准,所以增多了很多。为了避免这个数据的影响我们选择将这一天删去(或者用平均数或中位数代替也可)
    / o0 G! J4 t- \3 H将上面清理过的数据存放到csv文件中7 a8 }( v3 Q2 g/ I2 h  D
    ) N1 K+ Q* V; r* B4 G- f
    $ j! D7 U; _7 w, T! q% m
    模型建立' w# P+ s/ {0 c5 j* l8 [
    模型假设
      |3 ~! W7 v3 p% M经过上面数据的分析,我们大体可以进行如下假设:
    3 X( E3 \9 e0 V/ i$ Q( u" M) `1.由于不存在封闭情况,考虑开放体系。
    2 O+ M9 |' |  B. V2.目前数据以天为单位发布,因此不考虑连续变化情况,只考虑离散的方程。
    7 M) B% s0 o- o3 v. O+ P3.新型冠状病毒的治愈人数和死亡人数相对较 小,因此只考虑 Susceptible(易感)和 Infected(感染) 两类人群。设易感人群总数为N5 ]; O0 [1 y, D' L
    4.经专家鉴定新冠病毒患者治愈后至少六个月之内不会再被感染,所以设治愈后移出易感人群。; ]5 w/ v* i; K+ r
    5.设每个病人每天有效接触人数为 λ \lambdaλ(日接触率),且使接触的健康人致病.) `3 m2 L3 D/ x6 D: i
    6.设病人每天治愈的比例为 μ \muμ(日治愈率)* }& w8 |$ K( ?( I$ H
    7.时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t).* P1 l* h: Z2 Z3 [* s& V' H
    $ b$ `: m. I5 f
    ) \$ u. ^) r, D- T; L* p
    模型一- k: C: P0 w5 a$ @0 o+ F

    & T1 d+ d. a2 d' G1 H. w
    4 t+ H$ r7 W' u# j% p
    分析可以得到移出者r(t)=治愈人数+死亡人数5 }) D1 l# z' q0 T8 |# I
    通过python数据处理,我们算出了r(t)的值,并将其可视化
    2 ^* ]' M6 i: H2 \
    / U4 ]$ Q4 |+ Z! g: X! v) F7 d+ D

    5 U0 U, u( V: a. d, N  C* b; f# J7 h5 D# t+ L
    6 l6 }( G' T6 x& R+ W" x! y0 K
    我用MATLAB对其进行了拟合,拟合图像为
    + v3 l4 Y; C) q! \
    , m$ Q) |/ Y+ K
    * d! `& s* I0 W7 [- O) [+ ?( `

    ) y) J3 |0 c1 I" E3 J+ @. B8 `' B
    ) g* ~0 f  O8 G' Q7 w

    & H! V, i6 Y; h" I

    6 c+ |3 H8 e# ^1 _- f' x: w分析可以得到患者 i(t)=患病总数-移出者: a6 |0 f- h. o; G
    可以通过csv文件的currentConfirmedCount 直接获得i(t)数据,当然也可以通过 i(t)=confirmedCountv - r(t)获得,对此我也做了可视化展示  ~& \  J  m' F3 x' w
    1 U* v7 @7 x1 }0 y  O9 c
    # @# l& R/ x0 Y2 Q. ^
    通过MATLAB程序对其进行拟合,可以得到r(t)的函数图像大致为
    2 e6 K  C( p. y: g7 c. A+ R: O" C; @/ t( I
    * r5 M/ ^/ g  w" @) F

    5 z2 {; B7 x/ y2 C. D5 ?9 W  D

    9 Z0 B6 d' h4 c$ U
    ! V. [1 o" ~) N9 r
    7 v" i: m4 {9 ?" C( d0 O* f5 f
    为了方便,利于公式推导,我们先设时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t). 所以有9 R+ M; ^2 N! C# }
    ; N* n9 G8 q! o! M7 s8 j1 K. w

    8 u2 N& o+ g  O' ]2 Z- _可以推导出每日新增病例的表达式3 J7 Y" o/ P, c5 d/ I7 h

    / k$ l; C  Z. Z* j8 Z

    6 A; x+ o1 {2 R" X% e' |7 W* j, K" B* h
    $ c, z6 D5 @; D9 a( w5 A6 Z* m

    0 c* S/ V$ S5 q- k1 ?# }0 I  t2 X7 ^6 z: V
    $ E  n# Z5 [1 b" b9 U5 }9 a
    由以上两个公式可以推导出以下两个微分方程
    2 x* L7 D. Q6 }6 y. q% t" K
    ; }' o. d  B) [" a' ~' D3 }4 y
    * ?8 H5 B3 x, v2 ?5 b% O3 D; s1 o

    5 R; U7 N3 R( A- m) M3 a
    * f* H) M  q. I
    可以知道初值
    5 t8 H" \8 V1 J* e! v5 E8 Pi ( 0 ) = i 0 . s ( 0 ) = s 0 i(0)=i_0.s(0)=s_0i(0)=i
    & R; h/ f5 s- Y0 L  }/ Q1 D0& }- ~7 ]1 B) A( \. {  `
    ​       
    ) _3 j+ O/ Z+ W1 X) r7 V .s(0)=s
    5 Y# v3 F; @# j& y0
    0 t$ l, f( N5 X+ ~" r4 @​        ; J; K" `' a& v  E6 U/ d/ z

    9 c/ ~- z8 I  c2 M  h因为一开始治愈的和死亡的肯定很少,所以r0可以看为0,于是就有:7 [5 w: J( X/ T- S
    i 0 + s 0 = 1 i_0+s_0=1i
    * a0 e' q# L! Z4 \1 |* T0
    % c3 O; m" {+ ^' }- _9 l1 ]5 Q$ D( E​       
    2 v, j! _/ n* ^3 k2 Q( Z +s * \' j0 J9 X9 A( z) V3 b
    0& |+ J; z- n4 S8 i7 J, m
    ​       
    : V; y, `  u; `- @ =1% N1 x* {8 R* \7 {) x( }* b2 H' @
    通过解以上微分方程我们可以根据经验假设λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)的值分别为1和0.5(也就是每个患者可能使1个正常人患病,患者可能有0.5的概率被治愈);由于一开始患者肯定比正常人少很多,所以我们设i0=0.01,s0=0.99。对其求解可以得到s(t), i(t), r(t),的变化图像5 Z: o& p5 C# g

    7 e8 _& M+ C, m5 j) B6 i8 r. Z% i
    * d/ {2 y/ W. W% d1 j5 K

      `9 ^' x  a/ p% U0 }% ~/ l* c; y& j

    # h- V. {* U" i; k6 l! Z: dMATLAB程序如下
    3 C& l, o& X  S  I2 r; ~1 S3 yts=0:40;0 ?' u6 E/ ~) \- y" N, f
    x0=[0.01, 0.99];9 F" S+ {* u. k4 T- I
    [t,x]=ode45(‘ill’,ts,x0);8 I1 P9 t9 p) P
    r=1-x(:,1)-x(:,2);
    6 R7 ?3 u/ W! h% j1 N" Eplot(t,x(:,1),t,x(:,2),ts,r,ts,x(:,1)/x(:,2)): a5 W4 Z4 K. ]: j
    legend(‘i(t)’,‘s(t)’,‘r(t)’); c2 W, u5 _/ B  c
    4 ^- n2 j, T3 j& x/ B$ e( v  u
    2 P' }6 P+ t( m" O" t  U7 E
    function y=ill( t,x)
    # M8 M- E# d5 x" ?a=1;
    / p; [: w+ O& q9 d3 x& ab=0.5;
    9 x2 z7 `; q: `, i2 ]% wy=[ax(1)x(2)-bx(1);-ax(1)*x(2)];
    # \7 t3 \& C- w- w; k3 f, Y7 P
    8 ?5 u1 U2 [* s7 ]* \8 t
    9 ?; u& A0 V* y  \- z
    结果分析:患病人数肯定有个高潮,但之后高潮就会减弱,并逐步降低为0。随着医疗卫生条件的不断提升,患者的 λ \lambdaλ(日接触率)肯定降低,μ \muμ (日治愈率)肯定上升,所以我们可以把λ \lambdaλ调一点为0.8,μ \muμ调高一点为0.6,可以得到以下趋势图。所以应对传染病很关键的一点是我们要提高医疗卫生条件8 ]( l  F9 i/ l5 o/ k  M/ o
    3 Y$ V9 B  Q& e; V
      I- Z+ f$ o6 {' ?8 T: b/ C
    7 o! _! s8 ~, o& s; o! G
    模型二# n( g+ Q- L  U" X( y

      }8 X) `1 h" |1 ?' A
    6 Z* O/ J+ b3 }/ y
    实际上,λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)都是随着时间变化的,这里我们设s(t), i(t), r(t) 为第t天健康人、病人、移除者(病愈与死亡之和)的数量, s(t)+ i(t)+r(t)=N.." ?* c0 ?! j8 ^# T( b
    (t), (t) ~第t天感染率, 移除率(治愈率与死亡率之和)
    ; m) u! @* h0 J5 w有 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)) _8 k6 t8 c; L  Q; H: {+ A# P5 e
    因为s远大于i, r,s(t)视为常数,所以有
    # o7 }; J. G/ A% V8 u7 |1 P  |0 m9 e% G; d, X3 p- [7 P) C! N  j
    ! S6 B4 ]- k3 I& x

    8 {0 @+ j& C$ G) x
    " P5 w: R2 q# ^* B8 k
    取差分近似导数5 \) h0 @" |- i9 e- O
    " H% j, @) }" N* G( f! E
    * n+ ]+ ^( w9 Q2 @. w' K" {

    ; E: D, f1 a  I% B$ A1 ]
    5 D* H+ y/ V, h5 b# Z; D/ {
    我们可以先用真实数据对(t)进行展示并进行拟合
    1 ^: ^8 _% _+ w# l( A; q, K4 U0 i9 \2 U; f2 S  ]7 l

    - K% b& a  w* A7 |) y1 O. `
    7 @4 Z7 R# k& ~6 j
    ; D) f! i4 ^: @( H/ a# \
    当然同样的方法对(t)进行拟合! U( l9 h: ~$ G1 v2 V( f
    7 P7 h' z. L% l0 l

    2 W8 h; m9 @' s3 h0 ?( J  Z做不出来了,好难,光这些东西就弄了四天,到了数学建模国赛得多难多累啊,哎,让我这个小白手足无措。毕竟还没有正规的培训,这个模型等期末考完试一定好好做做!!!& n3 \2 ]8 |! U* p+ u3 |- d
    冲国奖# H- e, e5 z. ~# ~, X
    冲国奖
    3 k) E4 Y5 L& x+ d冲国奖( H; T+ V% f- ~8 u
    ————————————————
    7 a2 G; F" c2 B% [5 y版权声明:本文为CSDN博主「小白不白嘿嘿嘿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。( R% m3 ]* u! y1 c" Z! V! P7 F
    原文链接:https://blog.csdn.net/weixin_45755332/article/details/107094630
    3 \  A  l8 Z  O8 M( P3 G# Z, T, u3 w

    1 X& c! N1 ?( N2 G2 R5 ~$ Y
    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-18 18:00 , Processed in 0.429578 second(s), 50 queries .

    回顶部