QQ登录

只需要一步,快速开始

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

      l: |) T! x4 F数学建模之传染病SIR模型(新冠真实数据); v$ [& x" B. t
    传染病模型的基本问题
    , g! p0 v9 j6 {描述传染病的传播过程
    $ c: q, L3 K' R8 I; }) `; j分析受感染人数的变化规律
    7 k1 d& `3 i3 k+ k6 U* S9 R  p预报传染病高潮到来的时刻4 K8 U6 V! a; ?( }% H
    预防传染病蔓延的手段
    * o( s, k5 h+ J  u# U: B% x按照传播过程的一般规律用机理分析方法建立模型
      h, u4 [! H+ }8 u: m2 b+ _注:我们这里是介绍数学医学领域中基本的传染病模型。不从医学角度分析各种传染病的特殊机理,按照传播过程的规律建立微分方程模型.
    - c3 H+ k% Z1 Q- [8 l- L
    8 j* ?4 ~7 Z& c4 Z

    $ _, a5 B* }3 N/ x- z& V% ?建立模型) f( y8 Z, Q1 B$ ~$ A) N( W3 ?
    模型一
    0 b$ o4 E2 `& \( r+ F假设:' b; b! {! W7 Y9 T) K7 c
    % I. ^8 V( R; S4 s

    9 S/ R- P* k$ f) H, _设已知感染人数为i ( t ) i(t)i(t)(病人数量随时间变化)9 ^$ c( M- M2 F  t) r" X' Y$ l
    设每个病人(单位时间)每天有效接触(足以使人治病)人数为λ \lambdaλ6 ~( ^5 p' c  T' x
    模型:
    ; e% r! L; C. C: |( i' h单位时间Δ t \Delta{t}Δt内,新 增 的 人 数 ( 现 有 − 原 有 ) = 原 有 的 × λ 新增的人数(现有-原有)=原有的 \times \lambda新增的人数(现有−原有)=原有的×λ,即
    0 X" |: E8 v$ D9 {/ Q. Q- W  [9 d0 T( X' t7 ~
    % L! q! w' u, I: C) b
    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
    % d8 [& x+ ~' k  }5 ]5 b* p, d  p一开始的感染人数为i 0 i_0i 6 a' {1 y8 Y. s9 _# b4 S- L
    0
      S7 {( J: r# M, K8 T% T6 b​        6 X, z/ {' j' ]

    0 {0 k& W. `: h$ T, b) S. ?* ai ( 0 ) = i 0 i(0)=i_0i(0)=i - r$ G; o* `: u0 l
    0
    - @+ k0 s+ ]7 d" Z- r​       
    ' X' S0 q1 ^6 i0 j5 M" b
    ( t0 l/ {" \3 p' g: l, b+ l解微分方程可以得到
    8 T) i7 Z* @3 X6 Ui ( t ) = i 0 e λ t i(t)=i_0e^{\lambda t}i(t)=i
    / n' t, Y+ x% Y05 s# ~1 w$ h9 G7 d- T
    ​        $ b, p& V2 r% d9 f7 ^( Z* o9 [
    e
    7 ~( ^7 u& o) a8 r8 L2 {' t& Bλt7 ]) G3 Q; S5 l9 f

    9 s. N5 i1 X4 ~0 G所以可以可到当λ → ∞ \lambda \rightarrow \infinλ→∞时i ( t ) → ∞ i(t) \rightarrow \infini(t)→∞
    2 C/ ^% k- ~7 K# W当然这是不可能的,因为我们考虑的因素太少了,首先一个是,若有效接触的是病人,则不能使病人数增加,所以必须区分已感染者(病人)和未感染者(健康人)看模型二来解决这个问题. f7 e1 Z" b& d% Y7 E
    ) b' u3 D# i4 |6 _+ z4 `

    + Q; l: {# t  o模型二
    ( m  l/ x1 q" }5 Q& |/ L% L; _+ \* v假设:
    " ~: i# ~: ]& ]: S3 w9 s% {
    ; o5 R/ {1 [. P! g

    ! d0 Y' }0 L% A将人群分为两类:易感染者(Susceptible,健康人)和已感染者(Infective, 病人).
    0 G8 c- E/ F3 }! ^  S3 r7 V总人数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)=18 ~' \) A( ], @6 [3 G, d3 B
    每个病人每天有效接触人数为λ \lambdaλ(日接触率),且使接触的健康人致病.1 |4 L/ A5 h- C7 v0 s4 K- U) t
    建模:
    , V/ [  f" ^2 [/ A, c& {& A  `每天新增的总人数为原有的人数乘以每个人可以传染的健康的人数,再乘Δ t \Delta tΔt. F' U# @; c) B/ N
    % N3 I; w' X1 A8 w% D8 [

    ' h5 y* F+ P# ?' N& J% ?- [2 lΔ t \Delta tΔt除过去,两遍N约分得到下面,
    % {  k; N! {9 _( K% i1 E& T% d* N- ^( q
    ) i/ Q$ M' u6 t0 D3 R
    MATLAB解一下这个微分方程
    / P, `( t6 U/ ~- D5 `' v5 A
    ( Q. z" D  Z% [# q

    $ W- l: e$ t* l: p. l2 Z7 w" t* Ey=dsolve('Dy=n*y*(1-y)','t');3 s, I8 q% j8 ~+ u0 e0 |1 K. j+ W

    ! U8 ~8 u7 D- |) P) m; U% W6 J$ h# ^
    - ?3 E) x4 M' }0 D
    y =
    5 J& E% G6 i# ~  ~. U -1/(exp(C1 - n*t) - 1)
    9 q1 ~0 Y: b  x0 m+ w: a7 ?- ~                      0
    1 z. {5 ~0 z7 c1 c, s" i                      1( a6 H% Q: e+ \5 U3 ~; s
    1
    ' J+ s/ a% ?6 D/ X  c$ T! D3 n2/ ]  {) W4 P% T. F0 y
    39 Z0 b, S8 t: u. g: j, M' `
    4
    / U: _/ K+ E) B# H) P( \5 ]5
    % C9 g  i! q8 G6 ]6
    1 m! a9 \8 Y. _& j6 I2 ?写规范点就是这个函数: z1 r* I) y# A: ^7 {% g! E
    ! ~8 Z, ~; f1 y, ^' ?4 {; x7 o

    # u3 G4 q/ b4 [7 e% b* o5 T函数图像大致为- ~& e  m1 L3 M1 h
    * M4 m& K8 i' W9 i' }$ M
    % j/ K% H1 N- m% u7 \. Q
    可以看出t = t m t=t_mt=t 6 ^% ?0 R( A4 e
    m3 g( v4 j& g: z3 x# g9 q: H& _
    ​        0 ^4 X9 x8 h) j
    时这里图像的斜率有个最大值,其也就是传染的最快的时候,即传染病的高潮时刻,当然t m t_mt
    ' e& G) Y+ d  j" i% S( t; X8 C" r9 Jm
    : s% Z5 V+ L& W* H# G) M​       
    ) n% W8 O- f7 q' e 是可以求出来的
    & P9 G& P# k. X, _, J$ V( y2 k0 R1 A, y5 J
    0 P) r, w, L- h- ^- I( K
    再看原式,当t → ∞ t\rightarrow \infint→∞时i → 1 i\rightarrow 1i→1* W* ]# s) E6 K: Y# G
    病人的比例为1,当然这也是不可能的,因为我们还没有考虑有没有可能治愈,看模型三
    / e# M5 v' p4 @9 L' d& o; Q* K2 {+ ?  v# S& ?4 J# N4 d
    : v3 B! G9 b  O+ M5 I; i
    模型三: I2 h# j8 c8 B7 n
    假设:! s, \4 C+ d8 Z+ d. O5 k& u
    $ ~* f1 P9 \  j( V6 C5 u

    ; x0 ?& Z$ |$ T1 W* A  V  I1 \传染病无免疫性如伤风、痢疾等——病人治愈成为健康人,健康人可再次被感染。% O  g7 n$ m% g/ c9 j! o0 W; Y
    病人每天治愈的比例为μ \muμ (日治愈率),1 μ \frac{1}{\mu}
    . e% o8 j4 t( @6 iμ
    ! }5 A7 l: e' }1* Q; s& a( K* C: U4 s! t
    ​       
    7 d# j$ p/ `0 Q6 A; H5 I 为感染期,
    ! x+ B& ?( ]! l' Z, S模型- w% J3 G  o8 a, ^: P
    这是减去了治愈人数之后的新增人数
    ( d# ?7 @. T, a) N! Y! o( C" ^2 _# m1 h$ ]" X

    # _, ~( z9 J1 \( u3 u  K9 `5 u3 N" V5 s# c6 X0 n1 Z

    $ c* s! s( r/ t  `- V" Y) d- iσ \sigmaσ 为一个感染期内每个病人的有效接触人数,称为接触数
    3 }" h$ |0 _" X' G& y* Y
    3 _' P- t* `( i  s/ n6 a

    . G1 Y3 e6 S0 B/ H可以画出上面的图形分析下
    & `3 f9 B6 c0 ~) T4 i
    - y' L- p- u! C3 v! N
    7 r+ D& t7 F& j" O
    对上面的公式进行分析,可以得到,当i = 1 − 1 σ i=1-\frac{1}{\sigma}i=1−   Q5 N2 m# P$ d
    σ
    3 e0 l* j& f2 Y10 A6 n) l6 U6 A  T
    ​       
    ! v  t3 w% Y# g, O5 d 时,i ii对t的导数为0这也就到了i ii的最大值;当0 < i < 1 − 1 σ 0<i<1-\frac{1}{\sigma}0<i<1− ! U# B/ J( B  `' Y3 \
    σ
    # I* e" U$ g) m2 A3 ]1
    . k' ?, Z1 n' u6 r​        1 I$ u1 }; ^& X' \+ `7 T0 V
    时,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− + y9 z+ \* B/ `1 V( u
    σ
    & z4 \& \/ K- A7 x) }- H: k1/ T% p) M4 t; b! p
    ​       
    ! N$ O$ ?' K, _4 } ,d i / d t < 0 di/dt<0di/dt<0,i是单调递减的。3 p" n( b* i; t. z9 b" L

    8 [% h, K' f8 r) u

    ) f  [# f/ f1 H2 \: @, q- q0 k  u当然我们也可以画出i ii随t的函数图像
    * O+ N& F9 p+ q4 v) \, t% [% ~1 O# @8 ]( X* `! s3 w# k

    & G3 y) b: z, g: t, M5 k先看红线,若初始条件i 0 > 1 − 1 σ i_0>1-\frac{1}{\sigma}i
    . H) v1 N& h! s0
    7 e9 O; O; m3 Q" x​        : ~1 a+ v% c; T7 p. w* D
    >1− ! Z4 P1 [" l, {
    σ
    . S( @1 B* `1 t  t: ~10 ]* u. P% t" V2 W, u
    ​       
    ' x2 C$ h3 Z# l: S% I d i / d t < 0 di/dt<0di/dt<0,i就是单调递减的,, Q3 Y, S& U( E9 D8 B- f; c1 Q
    若若初始条件i 0 < 1 − 1 σ i_0<1-\frac{1}{\sigma}i ! r# o) J5 v: s. x+ e2 h8 D% B
    0+ l4 l/ g0 a# m  B5 [
    ​       
      j% O( n4 _1 x5 E7 F% y% g <1− 4 p: S# j9 k) P( U& t* t. @/ X  Z
    σ; _# g7 r" i: g0 X7 v
    1% R$ W2 N6 o4 f( U- I
    ​       
    ( W' n4 c! k3 ]9 B. E ,i就是递增的,可以看到i对t的导数图像有一个最大值,下面的黑线就有一个增加速率最快的一个值,按S形曲线增长
    3 B( e$ A' Z! h# ~! _, v7 ~8 V; Y0 v; _) V+ J: W0 n

    & h! R& s5 K& S) n/ d9 H% aσ = < 1 \sigma =<1σ=<1时d i / d t < 0 di/dt<0di/dt<0 i肯定是单调下降的,最终降到0
    6 p" T& l2 H- t5 C4 s" L
    1 _! [1 Q7 M& l( L

    6 i9 [: K  U$ |( s6 W' b4 Z" _/ \. g* ?4 u! \2 F, g

    , [% y7 A5 H8 V, }9 ^( a综上:
    ! X* Y! V1 s% @& H想让患病者越来越少,σ \sigmaσ必须小于等于1,即感染期内有效接触使健康者感染的人数不超过原有的病人数.9 I9 p% i8 e& u2 b; b

    $ L- y% h4 N( T- W$ \8 \
    * @( R4 m, b8 @; `
    这里我们分析的是感染之后还能感染的情况,但有些病毒感染之后会在体内生成抗体,就不会再被感染了,下面我们分析这种情况。
    / s5 h- `2 }. m& ?0 j- d% D: X3 Y2 Z5 q
    " ]6 D; v/ h. ]* l: a9 J
    模型四 SIR模型
    ) I9 r& c* Q) O6 }9 D3 Z& GSIR模型是常见的一种描述传染病传播的数学模型,其基本假设是将人群分为以下三类:2 u8 ^' I# i+ ^
    ) X5 \  d2 P  u9 `# X
    2 e2 m" I0 ~' J% [( o0 M9 `1 R
    1 易感人群(Susceptible):指未得病者,但缺乏免疫能力,与感病者接触后容易受到感染。
    ' y  O$ y9 T5 E: Q
    : ^& U6 j" H- _% s
    2 M8 d" Y, m1 f3 N; [* u+ j0 o
    2 感染人群(Infective):指染上传染病的人,他可以传播给易感人群。
    5 z" b0 J' M5 t  [% \: D4 v* H: E. j2 e0 [( t' |! a: W$ a
    / z! L! Y/ @2 c9 j' j" x2 g- D! K
    3 移除人群(Removed):被移出系统的人。因病愈(具有免疫力)或死亡的人。这部分人不再参与感染和被感染过程。6 A6 x3 _+ f. O
    ; a4 X# d+ Y5 K$ M; Y
    ; d2 Y* F8 u5 c- T2 ^
    假设:
    & z: k) }- l3 o& o8 m) Y9 w, F/ m
    6 U! J- B& H' o. M

    : K3 b0 e4 ?9 Q3 L. T( `8 ]传染病有免疫性如天花、麻疹等——病人治愈后移出感染系统,称移出者(Removed).
    & N% y2 s, p" B# T! ~总人数N不变,健康人、病人和移出者的比例分别为s ( t ) , i ( t ) , r ( t ) s(t), i(t), r(t)s(t),i(t),r(t).
    ! ?+ n2 N$ M' @. k$ N. h( Q, V病人的日接触率为λ \lambdaλ , 日治愈率为μ \muμ, 接触数 σ = λ μ \sigma=\frac{\lambda}{\mu}σ=
    : ?6 P9 E/ X2 c! S4 jμ
    / q; N5 J, Q( k% E! ~λ
      [7 R4 [% U( P​        1 {8 Z& ^0 V+ B, z6 U8 W, G
    9 V. @) }4 t8 ^9 G
    建模:+ k" E0 R9 }# r' h; }  ~& M
    s ( t ) + i ( t ) + r ( t ) = 1 s(t)+ i(t)+ r(t)=1s(t)+i(t)+r(t)=1
    ) L/ y- \  X3 \8 V这个就是病人减去治愈的人,和上一个模型是一样的
    0 \; O) u4 o! |: J0 H9 J1 r+ W; a& |
    - A# v+ y* [4 c5 o# S
    " w4 O$ _6 b7 U2 @1 _
    因为有治愈后是有免疫性的,所以可能被感染的总人数要减少,减去移除者就是
    , p0 K, y# e' B2 w
    : {" g" c1 K! ]8 ^* j3 u5 L

    % H2 U4 d- q% T  C将上式化简为:" R- Z& K8 C$ s) f4 @6 d
    , Z) R. F7 I  T, ?2 P$ v8 f

    3 V0 E7 Q5 W1 t' V3 bi 0 + s 0 ≈ 1 i_0+s_0\approx 1i   Q7 g3 @: \! P8 J+ A# D
    0+ C6 m- [9 t* ^& T4 H, ^
    ​        ' U- v% G) w6 h& P  E8 Q( U; F) n
    +s   `6 @' n( u: \) ?3 |% c
    06 s$ {- c& f0 `6 D
    ​        0 s. \# k; b7 @' i5 I( |& H  q4 F
    ≈1(通常r ( 0 ) = r 0 r(0)=r_0r(0)=r 8 Y' P  \6 }" X+ G4 r7 k, {9 B/ L9 x
    06 f8 s; C( Z& c5 \) ^( [  o
    ​       
    . G/ C, d7 N4 R3 D* A$ \& G 很小)1 M; C9 g# {% m  K8 j. [* q
    5 ?) ]5 e7 h" k$ M" e
    6 f# h- s# }% B3 i: f0 s
    关于i(t) , s(t) 的非线性微分方程组,没有解析解,只能通过数值计算得到s(t), i(t), r(t)的曲线,下面来看下曲线的数值解的MATLAB程序
    ; i( U4 T) `* n6 y
    : M; D3 T5 `2 L0 |0 Q) v
    . w) P. G* ?+ i
    这里我们先设λ = 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
    # M1 N) \# p2 _4 i4 I2 V& w. `0
    + l0 u6 r! F* x- `! h( S$ J& Z​       
    ' X4 ^! K5 E8 o; |  H =0.01,s ; _: `- a7 X7 R! r  ]- p3 J4 f
    0
    6 i! C' y7 {6 d​        ' e3 ^" l5 _* e
    =0.99! d  K+ C& w2 E1 ^
    也就是平均一个病人人传染一个正常人,治愈率为0.5;开始的病人比例为0.01,正常人为0.99,设没有天生带有病毒抗体的人,所以r 0 = 0 r_0=0r ! ]7 |% u" n5 o) S+ }0 U/ k
    0
    ) ?% [. t  x( o; s2 J/ P- w5 K​        0 k/ k8 b& g' x) W6 Y* U+ }, \: ^( W
    =0,之后若果病人被治愈,则具有抗体了,有抗体的人为:r = 1 − i − s r=1-i-sr=1−i−s
    , Q/ h: u$ \, x8 g! d
    8 L- y3 L$ E" v
    " b: {/ g. K# i/ U4 S
    ts=0:40;( M  z& C! |) t" U5 c9 P
    x0=[0.01, 0.99];% [( f& m# _0 C$ [6 M
    [t,x]=ode45('ill',ts,x0);
    8 Q8 C; l1 h5 |& U5 L' Ar=1-x(:,1)-x(:,2);2 M, z: L2 y9 A
    plot(t,x(:,1),t,x(:,2),ts,r),grid
    7 o; [: e. E) H/ ylegend('i(t)','s(t)','r(t)')
    ! Y' d, i6 A7 D- r; ]4 J5 H! ^. Y+ a# k; ]
    4 R3 {& }5 p  P( D  {8 s
    function y=ill( t,x)) Q, K' e* d, ^( j9 k
    a=1;. B( b  z1 ~% u0 i0 j6 N; w
    b=0.5;
    " R7 Q6 l" x) v% T) my=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];
    . n! {1 b# x9 V9 M: N1
    $ x+ o! ~( P( ~/ _* h  s. [$ K" ~2$ a7 f7 {' ~5 Z. c- v) g% f
    3
    + A, b  d2 V: Z* ~8 q" I4
    9 A9 p8 u! X; u! o/ Z' E# ?5
    % u0 N0 k; y4 S4 w( l8 q# P  O6  \+ `  u6 n) y5 ~( m
    76 E1 o3 B* A5 d2 w: s
    8
    $ d! b$ Y( C( E6 {  s% }* r: D9$ l- ?6 J3 d  I2 P
    10
    3 C+ ]9 [) g9 C  ]6 g. O11
    9 W+ u, `; w$ I5 F8 @. P* a9 x  j( h5 W+ i7 p3 a6 i
    1 A' O/ {% j4 o9 ~. e
    可以看出:s(t)单调减,r(t)单调增,都趋于稳定, i(t)先增后减趋于0.
    1 u/ [* @8 i# W  O, h2 g" O+ B8 c结果分析
    8 X. A3 A/ P( b先回顾一下参数2 e1 i# C% h8 ]8 k- T
    接 触 率 λ ; 治 愈 率 μ ; 1 / μ   平 均 传 染 期 ( 病 人 治 愈 所 需 平 均 时 间 ) ; σ = λ / μ   接 触 数 ( 感 染 期 内 每 个 病 人 有 效 接 触 人 数 ) 接触率 \lambda;治愈率 \mu ; 1/ \mu~平均传染期 (病人治愈所需平均时间);\sigma =\lambda/\mu~接触数 (感染期内每个病人有效接触人数)接触率λ;治愈率μ;1/μ 平均传染期(病人治愈所需平均时间);σ=λ/μ 接触数(感染期内每个病人有效接触人数)5 Y( C; d1 p( P. G) ~1 i
    可以分析出:
    4 S- d8 B; }' N7 p* X- \9 C7 V
    ! n) |# O( U! ~4 e
    / D; h* ^- ]; E& V, x& i( z) x; r- G% N
    随着卫生健康思想水平高,接触率λ \lambdaλ变小9 k9 x- F2 _, ^9 m4 T( D8 `! X. x
    随着医疗水平的提高,治愈率μ \muμ增大, z2 `3 G; @; {* f3 }
    接触数σ = λ / μ \sigma =\lambda/\muσ=λ/μ减小——有助于控制传播.
    / ~4 k. w) N# H& Y% b5 ~我们可以试试稍微减少一下λ \lambdaλ,增大μ \muμ,来看下效果
    / y; ~0 E! c$ m2 {1 v$ s9 R1 y3 l+ ]+ u4 S' x3 Q6 L# v6 R

    2 }7 B1 i) K+ w( hts=0:40;9 _0 f+ F, j. `( z/ y
    x0=[0.01, 0.99];/ `. f. }: M/ D) e3 s
    [t,x]=ode45('ill',ts,x0);' r4 _* [: h, w/ m" T/ T. Q
    r=1-x(:,1)-x(:,2);
    # ^4 ^$ v: a" I" _2 r1 fplot(t,x(:,1),t,x(:,2),ts,r),grid( I7 N8 y  k8 b: v$ G8 z, V
    legend('i(t)','s(t)','r(t)')/ K5 v5 S  V: C% V& C: ~* [
    / u. B8 A9 B0 u  [4 T. P

    2 B! ]4 S0 W; Jfunction y=ill( t,x)
    9 P9 E- Y) W' @% b. Y8 J% V, ga=0.8;
    : M, u( F& M+ zb=0.6;( v1 A1 l) s7 ?0 _: M4 [
    y=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];
    " ~9 o1 x" Q0 `3 s6 {6 _1( u& D+ V0 f  U- s& @
    2! z& X, M- v% C
    33 |$ N* y+ d' c: y
    4
    ; A+ l) }" n5 N4 `5
    * t" f1 I0 I- h. x6* ]0 w8 U, X0 \' Y$ |
    7# O5 u& }+ E6 y1 n
    8/ v/ k0 ]$ h, c3 d# t
    9# v7 t7 ?0 B$ y  M1 O* p, E
    10" Z/ A8 J4 e* \8 |9 `
    11
    & w, S- o4 D$ `6 R$ g, a. D
    % R( U8 i+ B# x- d6 ]! n  g" B3 A' }
    ) j3 X% }/ ~1 i( i- o' J! e
    综上我们可以得出结论:想要减少传染病的传播,我们就要在接触数σ \sigmaσ上下功夫。
    & x" o6 i& s* A
    . P+ P" A% S% J' c

    " K  n: E* `6 u8 }: F/ Y实战建模9 c+ M3 ]: n3 v4 ^* S+ m
    数据处理/ B5 X) T4 g+ u* v/ @
    4 r" v' P: C' n1 Y) I
    ! E' N" E/ [6 T, p( O2 B
    首先,我用python爬虫爬取了丁香医生官方数据,一共5534条数据 特征包括感染、死亡、治愈的总数,当日感染、死亡、治愈新增,疑似病例,时间,省份等14个特征
    5 r8 ^( y, G4 F, @# N5 E7 c, J$ M: {& w) |* \; U$ Y3 L

    ( [" @& V& D( P) [) T' S( y; D! l; K- i5 B
    8 V0 B: D- e- y6 R; d( [3 d
    然后用python进行数据提取,提取了较为典型的湖北省的数据作为我的参考依据
    % V; T* g6 t4 h+ |4 B' J- R5 u+ k6 A( V  g! ]' ~; V
    6 h6 ~: R, A- I2 ^" K2 I

    2 B6 H7 U2 q8 ~" e: k% c; B7 X

    . Y( r/ S) n$ R- ]然后用python对数据进行清洗,提取出了患病总数,现存患者总数,死亡总数,治愈总数,时间,省份这几个特征
    : p& Q$ F0 B0 d5 Z; n* e# ]% @/ W! j3 h& G

    2 K; ], t: F. N$ r( C* Q, G对日期格式进行修改,值保留月和日,并与死亡人数的位置交换
    ) B) t& v: W1 y0 {$ T; C/ c
    ! P& \9 }$ m" b: k

    % D# ?6 v# ]3 N1 n+ f* Y$ e这里我用python对提取的四个特征分别进行了数据分析(主要包括计算最值,平均值等,),并把1.20日作为第一天,7.02日作为最后一天也就是第165天,做了可视化可视化处理。
      i4 T1 M0 h1 r  R5 o8 O# q. Y感染人数示意图
    & d; V1 F( k' E% Z+ r" z( P3 a5 T% a4 H. g" |8 s

    & l' H4 p6 q7 b2 p% L" J治愈人数示意图8 Y9 z. o2 N) z" C% b  f5 i

    2 ]! \" s) s: R. q: l$ G# x3 f( J

    7 @7 @1 Y0 E& E+ V) `
    0 {  l$ e0 y) U* u- i8 f
    : X, B+ F) T$ X- _# \
    现存患者数量图. n- k% O- ^3 [% e, G

    8 V$ O8 A* c7 r, j0 b0 f

    - _8 n! `- j4 G/ F* Z% ?7 L# I死亡人数示意图
    ; R' R6 y7 C! C3 J2 c( O6 [- K: o: Y5 O( ~
    - @& x: @8 B9 t8 ^9 o
    " e2 H! ^0 Y* U) i0 l' Z8 A

    / o0 v) V$ N# v$ x0 B, s, B8 w经过上面的图片与describe数据分析,我们发现有一天是异常的,患者多出了平时的十倍左右,经过查阅资料,这天因加强了检测标准,所以增多了很多。为了避免这个数据的影响我们选择将这一天删去(或者用平均数或中位数代替也可)
      o5 `4 E$ w, R2 G' V- t' o将上面清理过的数据存放到csv文件中. f/ Q* {9 P" B) ^5 M; j
    2 ^  Q7 w9 L3 n" O; n
    - x9 i3 K6 @, x
    模型建立# w) \4 r' p# g& K
    模型假设# ?) o% d- ^* J, N4 R
    经过上面数据的分析,我们大体可以进行如下假设:
    ( L+ ~- M+ A4 ^, H1.由于不存在封闭情况,考虑开放体系。
      D) Z* L5 r* y2.目前数据以天为单位发布,因此不考虑连续变化情况,只考虑离散的方程。
    1 B; x6 z6 D$ J$ q  l/ H3 B" I3.新型冠状病毒的治愈人数和死亡人数相对较 小,因此只考虑 Susceptible(易感)和 Infected(感染) 两类人群。设易感人群总数为N
    2 Y, J6 O4 I, w" J; d4.经专家鉴定新冠病毒患者治愈后至少六个月之内不会再被感染,所以设治愈后移出易感人群。$ W$ ?7 Z$ ^+ `( D6 W6 R0 b# y
    5.设每个病人每天有效接触人数为 λ \lambdaλ(日接触率),且使接触的健康人致病.' s$ H1 R0 I( a( g$ d
    6.设病人每天治愈的比例为 μ \muμ(日治愈率)
    % g  D5 O. w$ A, ^7.时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t).
    1 {, S- Q8 U9 K- L9 K+ o
    ' u0 `4 h& s0 T) R3 ~
    $ ^3 H) V, T1 m% E' Z; S  Y
    模型一
    3 {* E+ p# D- H* C  y' m9 G, J8 [3 R6 Z* F, j  T
    ' {, x9 H' K! A5 ?7 f- {( L* W
    分析可以得到移出者r(t)=治愈人数+死亡人数
    & m' |, i, ]. S, `8 r通过python数据处理,我们算出了r(t)的值,并将其可视化
    & f0 T- ~' [& q
    8 C" i8 J6 L/ k- s8 V. Z$ j( _

    2 @, h4 H8 X$ L+ B8 q7 A  Y9 J; V( x1 r# e9 C2 r

    " h8 f" \3 M6 C我用MATLAB对其进行了拟合,拟合图像为0 Q. g. b3 j+ J7 Y& f
    ) R( `1 o, B% {9 M# _) O4 h, K5 w
    ; j. P& w) K1 V

    $ K, ?) z" P/ `0 z
    5 y1 u# L( V; r( M: \! e( \# T% a

    8 o5 ]" p  M( C/ l7 C6 {+ N

    & L& m" @( \* f( I9 G) L分析可以得到患者 i(t)=患病总数-移出者( Z- z! h0 T& j2 n
    可以通过csv文件的currentConfirmedCount 直接获得i(t)数据,当然也可以通过 i(t)=confirmedCountv - r(t)获得,对此我也做了可视化展示
    1 m* `# n$ y. H( N' T5 x" Q6 l' ~+ Y8 U

    $ x  ~# L+ U* e8 E2 X7 T0 ^# Q通过MATLAB程序对其进行拟合,可以得到r(t)的函数图像大致为
    ) e5 P% u+ ~4 ?" ]) c2 T: a& N
    # `/ ~: O  Z6 l% {8 P( R. Z  {/ @2 w

    ( l; [) T1 J9 m2 Y& L( Y4 o4 ]
    6 D* l7 D* j+ f  l3 X' u- s

    0 X' o2 [: |. l# z0 W* n1 n0 K2 Q9 X. }# h8 d% M
    9 d! e* h( S0 `  P
    为了方便,利于公式推导,我们先设时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t). 所以有0 ^+ e8 n% x! V
    ' r* o3 y, `) A7 `6 N: E4 V/ \' L; G

      i; C8 h/ A5 f$ n可以推导出每日新增病例的表达式2 g$ e# m$ B2 R* J

    * s& ~; k" p& j/ [! p7 ~

    4 i  N4 f8 r) y# g% Y7 R- ^" Z, q3 }! i; l

    # q- h& P& ]7 f* y& l
    ' v6 E# G# k) K9 _0 F6 j

    * G. B8 N, n% V' q7 b8 j5 N由以上两个公式可以推导出以下两个微分方程8 f' }3 ]  e" W1 K" C
    . a1 Q7 b3 t3 ]3 J0 c4 \2 r
    2 E. k/ ?# m$ X" [/ ^8 C! s
      {* h! I, e/ h& P9 B
    5 r6 Z' _, R- _. k
    可以知道初值. t2 {! l; b, V& \% S2 a* @
    i ( 0 ) = i 0 . s ( 0 ) = s 0 i(0)=i_0.s(0)=s_0i(0)=i ! R6 M4 q& _$ ~- I4 A9 [' ~
    0& z- F, G* _; d9 f
    ​       
    ' O! x' X! t+ [ .s(0)=s
    9 ~9 o* J" o+ @+ `" Z) P) N0! d6 c, o8 i  t  k
    ​        * N- Y2 g7 p" b; Z* z* x
    + x0 U- b+ ?% a
    因为一开始治愈的和死亡的肯定很少,所以r0可以看为0,于是就有:! Q" S. t% s8 U5 `! Z
    i 0 + s 0 = 1 i_0+s_0=1i / t# L: C0 E) U4 Q
    0( i% ~9 t; b2 C! C4 J- _- ?
    ​        : k4 V8 C1 O! O
    +s ; z' C5 P  w0 ^9 \
    06 K2 e& q% D' L( \
    ​       
    : {- Q0 a# h) q% d* b6 |" k =1/ P  m- T% |: h1 Z, j
    通过解以上微分方程我们可以根据经验假设λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)的值分别为1和0.5(也就是每个患者可能使1个正常人患病,患者可能有0.5的概率被治愈);由于一开始患者肯定比正常人少很多,所以我们设i0=0.01,s0=0.99。对其求解可以得到s(t), i(t), r(t),的变化图像2 _/ T& b$ y) Q/ b1 {( X

    8 {! K% p& S+ b) o* M- u2 m( z) W

    ( k. t; C* W/ i# d+ W( f0 a# R1 h& I
    4 W( L9 x" |( H, [: T7 ~4 \$ D
    MATLAB程序如下
    . ?; X8 p# ~7 w& `& ]3 [7 yts=0:40;, l, b' H( B- V& K2 n
    x0=[0.01, 0.99];7 w* W& N0 z3 G/ I" z  q
    [t,x]=ode45(‘ill’,ts,x0);1 }+ O  f: e! |8 X8 q
    r=1-x(:,1)-x(:,2);9 s- U; a0 r# Y  v6 b8 p* s0 w
    plot(t,x(:,1),t,x(:,2),ts,r,ts,x(:,1)/x(:,2))2 D8 E+ x4 E$ Y( U8 T
    legend(‘i(t)’,‘s(t)’,‘r(t)’)% r& X% m8 a3 n6 `0 S5 t9 T) j

    / `" p, u) m2 S* G$ d8 X. y/ }$ u
    : _0 w/ }1 ?* |7 s& @/ W% O) G- q9 u
    function y=ill( t,x)) ?; O7 A- k; J0 p$ \& K  a
    a=1;
    6 \, n: Q3 u! M2 Eb=0.5;2 v5 J9 m1 s  R, Z# l
    y=[ax(1)x(2)-bx(1);-ax(1)*x(2)];
    : Z$ Q6 F' f7 G) x# a3 l" _! F; ^' a* ?% K" U
    5 {0 p* S* X1 J. c  N9 c+ J
    结果分析:患病人数肯定有个高潮,但之后高潮就会减弱,并逐步降低为0。随着医疗卫生条件的不断提升,患者的 λ \lambdaλ(日接触率)肯定降低,μ \muμ (日治愈率)肯定上升,所以我们可以把λ \lambdaλ调一点为0.8,μ \muμ调高一点为0.6,可以得到以下趋势图。所以应对传染病很关键的一点是我们要提高医疗卫生条件
    6 P5 Y8 m& v; j+ X! C
    ; C6 \( l7 U- i0 w

    1 v: j& h% T: q: Y& q
    6 a4 }2 X3 E0 D: C3 k! l" _' T模型二
    3 t% ~0 l& G) i, D: P3 J9 ]( v8 F+ o' S

    0 Z1 x; U  v* J6 t, z; C* l' u实际上,λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)都是随着时间变化的,这里我们设s(t), i(t), r(t) 为第t天健康人、病人、移除者(病愈与死亡之和)的数量, s(t)+ i(t)+r(t)=N..5 @* v2 U. |$ w1 i! K
    (t), (t) ~第t天感染率, 移除率(治愈率与死亡率之和)
    ' }4 Y( J) S6 ~& p) l8 x有 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)
    3 s* J" b) S+ n% B, C因为s远大于i, r,s(t)视为常数,所以有
    $ L! {: ?( n9 E7 s; t0 G2 M. S* \) {- I% q& X5 q
    $ L9 y. G- @5 J4 D1 I7 [7 x5 g
    ! @" @- B) `# |( S6 r
    ( `6 E6 U9 M7 O) G. F* Z; `( i
    取差分近似导数: b9 A1 Y, O  o& E1 l

    " k2 M& Y1 j% U% M. |+ }6 D
    # v2 {" `; ^, S

    ) X2 b8 R1 C' N) _& L# h2 ]$ m9 d" l

    " ]! `' c  A* f8 r9 }我们可以先用真实数据对(t)进行展示并进行拟合
    + U* O6 _5 i9 r: v
    " h  ~7 h$ T, u) r$ Y6 P; x' x( _4 Q
    $ N& x/ e4 O1 o, B' J1 ^6 O
    ' v0 u$ W* `; ]6 j; E) |
    ' B( ^5 Y9 \5 m
    当然同样的方法对(t)进行拟合
      A: }9 C: e7 ?6 F2 c% l
    ! i) Z: ?4 f5 r0 n) I' x8 O: B

    . u) l+ f( r* V! s9 M3 |/ U做不出来了,好难,光这些东西就弄了四天,到了数学建模国赛得多难多累啊,哎,让我这个小白手足无措。毕竟还没有正规的培训,这个模型等期末考完试一定好好做做!!!/ Y4 G2 {& j; E; |( y3 L
    冲国奖
    4 x6 j1 U7 T# H- I/ k/ c冲国奖
    2 Y. `" N0 n" z/ P  Z冲国奖5 A; e) [' l/ U) S+ ~
    ————————————————
    5 Y9 ?* r" ]( J' H版权声明:本文为CSDN博主「小白不白嘿嘿嘿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    ) P  p" T% m# \) p  g原文链接:https://blog.csdn.net/weixin_45755332/article/details/107094630
    + X0 s- p1 C* h6 L3 Y3 g3 T+ J$ n" n( D! i$ j
    0 O6 k, g- H3 L0 Z4 ~
    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-4-23 21:03 , Processed in 0.390183 second(s), 51 queries .

    回顶部