QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5555|回复: 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
    9 ?& ]0 \+ n  f7 C$ Z/ ^
    数学建模之传染病SIR模型(新冠真实数据)
    2 H  z! Q% L0 Y传染病模型的基本问题
    / j7 Q0 S) r* z. Z6 u. G3 d描述传染病的传播过程
    % P5 o: ]+ }2 C1 L# R/ T" p分析受感染人数的变化规律
    4 ?3 @+ _9 \: C预报传染病高潮到来的时刻
    3 R5 @- P" ]& r' I+ ^! _预防传染病蔓延的手段
    9 P$ I( z8 t& @4 q( \. ]7 m0 R按照传播过程的一般规律用机理分析方法建立模型
    $ u/ V" c, f* |# m注:我们这里是介绍数学医学领域中基本的传染病模型。不从医学角度分析各种传染病的特殊机理,按照传播过程的规律建立微分方程模型.& h3 s0 h  m! I9 {/ j- u

    & w. c) q  f6 [* b
    1 m. `: H. E& a4 C7 K: n, r
    建立模型( ~7 Q$ ^& ?" S, F; k
    模型一9 n+ b; M9 ?0 t  l1 I8 Y2 D
    假设:
    $ T- e5 |# O, j$ d
    . ]% R. P; ~, k' ]; z
    8 X& U/ E3 C' r1 R& R4 l
    设已知感染人数为i ( t ) i(t)i(t)(病人数量随时间变化)- e' g) @1 l5 z0 X+ N2 F: M+ S
    设每个病人(单位时间)每天有效接触(足以使人治病)人数为λ \lambdaλ
    $ M6 l  }6 l$ r& Y1 V+ F模型:; \) L% [. e1 _2 N- \- H5 `
    单位时间Δ t \Delta{t}Δt内,新 增 的 人 数 ( 现 有 − 原 有 ) = 原 有 的 × λ 新增的人数(现有-原有)=原有的 \times \lambda新增的人数(现有−原有)=原有的×λ,即0 G5 d3 i' Y3 _* B

    9 a/ t. s: g# `. y4 S( n
    , u* i* g3 \1 C( o7 M
    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)Δt8 n# u. d+ J5 D) b( i/ e# V6 r# R% P
    一开始的感染人数为i 0 i_0i ! O, E2 t$ n0 Y& Z/ N
    01 `( D2 `2 V9 P* @
    ​        1 _$ B! i4 {' X( G9 ^; n

    ' Z! A0 C, v! O; si ( 0 ) = i 0 i(0)=i_0i(0)=i 4 o7 e% w9 E9 q: P1 o  _2 g
    08 \& u$ L$ d9 R  d4 c7 l3 _( s; A
    ​       
    - Y  n- I( y/ b  y1 v: b- ^ - t! `4 |; s+ M9 X( j# ?2 l. y
    解微分方程可以得到
      a4 U; V' q/ @0 ]! P. [8 g8 Fi ( t ) = i 0 e λ t i(t)=i_0e^{\lambda t}i(t)=i
    $ q3 {5 w0 ^4 z4 Z# S$ V& }0
    0 K  X3 Q( w4 m​       
    ) B* }4 N: H6 a+ s e . k2 p( b7 C. S8 m. }9 v4 H
    λt
    7 Q. ~* P  i) t' Y* Z : w& t; {  T9 j: ^5 K1 i6 X
    所以可以可到当λ → ∞ \lambda \rightarrow \infinλ→∞时i ( t ) → ∞ i(t) \rightarrow \infini(t)→∞/ E. A& S3 q2 v% q  m
    当然这是不可能的,因为我们考虑的因素太少了,首先一个是,若有效接触的是病人,则不能使病人数增加,所以必须区分已感染者(病人)和未感染者(健康人)看模型二来解决这个问题5 J2 t/ y2 Q# G& {; y- K1 g7 B

    ) y* W. k* @0 ]6 T" ~
    8 M# L& d& W5 g0 K3 j
    模型二
    4 z% D9 r! h. N假设:9 c2 {, r, f  w% P5 @6 W4 \. Y

    6 d: Y$ s( b. _8 q

    ) H8 C8 V, \# l# q' C将人群分为两类:易感染者(Susceptible,健康人)和已感染者(Infective, 病人).) V1 V# r/ K6 E, _9 `+ |
    总人数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)=10 r/ J! ]3 Y, [! w# o$ }% n
    每个病人每天有效接触人数为λ \lambdaλ(日接触率),且使接触的健康人致病.' N3 q/ ?: m- ^
    建模:
    % r9 B8 ?9 s) \5 j+ G, v& X每天新增的总人数为原有的人数乘以每个人可以传染的健康的人数,再乘Δ t \Delta tΔt
    4 e. @7 z/ ?/ u- ^: \) }
    ! \- }1 I. d; Y! d! ^' ]2 z
    ) t6 d$ `5 K/ x# G1 K
    Δ t \Delta tΔt除过去,两遍N约分得到下面,
    ; q' X! y/ c# [- E7 a" U8 F7 i& H+ B( }! e; x

    9 P8 o# b; j& _9 SMATLAB解一下这个微分方程8 o8 m% m; ~" y. I$ d8 X3 T

    + x2 p$ `8 |9 U* f1 v
    5 q" x; ~, I5 w: O* D, ?
    y=dsolve('Dy=n*y*(1-y)','t');4 {' ]% l8 z. M

    , ^' C: W' f% Z# k& l

    , x. j1 s- \8 _y =
    ; Y) T6 j5 X. t* y. E* W( G# k3 D -1/(exp(C1 - n*t) - 1)) o" ]- C: {% U# A8 k; ?8 L; Y) l
                          05 c7 T( v- S) q" R
                          1
    : W. i8 j- K8 O4 e1, o& D1 H& G" f1 S" K
    2
    . U0 Q: x0 e. F8 B& i3
    ) m% c) L0 R2 v# b4 B, n$ K, J" W3 ]4
    2 L& N% D9 Z0 A/ Z8 @( V  U5+ H# @, P  g% s" t' ~9 B! Y
    6
    7 B- {& }- \! Z$ {写规范点就是这个函数
    " u. e6 |2 g% m* k" @, `2 n0 Q# ~% M; t3 d# z: c2 g) v

    3 x) S9 F, \  h( f4 P. h函数图像大致为
      C" f/ ]3 J9 r4 [: _
    1 X; o3 }% C5 ^0 ^6 ]; e

    # k: n. Q- ?% C可以看出t = t m t=t_mt=t
    2 H* H. F; `' I+ `: Q/ J/ Cm
    - J; c- L' g* S) s8 [+ e​       
    - X" j# w$ K' J5 z9 C- ` 时这里图像的斜率有个最大值,其也就是传染的最快的时候,即传染病的高潮时刻,当然t m t_mt 4 ~# R7 h* D8 z
    m
    1 R* S) I2 j; k7 Z* X6 O​       
    5 `, C  E0 K6 B8 |  E8 W- h9 f, {3 w 是可以求出来的
    ) ]$ D3 L; g/ e# w6 Q4 O7 G9 O6 W& E8 X. @  p6 K% X4 n! ~

    7 b( i* u( _8 `# A9 A* K6 j再看原式,当t → ∞ t\rightarrow \infint→∞时i → 1 i\rightarrow 1i→1
    # h# R" C/ v0 Q% t/ F$ W病人的比例为1,当然这也是不可能的,因为我们还没有考虑有没有可能治愈,看模型三
    ) \7 O1 m0 _3 M8 N
    . y) ]! X$ u1 a) U/ k, c

    - Q8 W1 i& W7 S4 w2 ^3 `9 r+ e# y/ t) x模型三
    8 B# e2 O% A8 V3 X: m1 n9 L假设:
    " D6 Y- G4 a! |5 q
    ! _, z  ]% r) h) C
    0 D$ c9 Q" ^* V+ L7 [2 p
    传染病无免疫性如伤风、痢疾等——病人治愈成为健康人,健康人可再次被感染。. c% [! S1 ~: r
    病人每天治愈的比例为μ \muμ (日治愈率),1 μ \frac{1}{\mu} % y% l  ^& W; S
    μ
    * s. N9 O7 `0 Z& Z1
    ; @& }( ?) X& O5 @3 l​       
    - }0 G! F- \/ K& E) s9 r 为感染期,
    / S0 g7 `: `# a- d8 A  e9 O模型. r2 O' |; ^! |* ?+ G
    这是减去了治愈人数之后的新增人数8 w% ^* _% t! d, Y' h' A2 y! b

    % q5 [2 D& x- \& U* X5 c9 c. p
    2 z1 E1 E0 B& v8 l

    % K% `5 a' Y% e' w
    9 L: g( r& [- u4 C7 ?# h! l
    σ \sigmaσ 为一个感染期内每个病人的有效接触人数,称为接触数4 P: y3 ]% O8 d; o4 i% ~3 e

    & I1 I% r  H+ k) k: d5 m

    3 N0 C8 Q$ @5 V7 J% [- R可以画出上面的图形分析下
    : {- o- q0 L) i. O
    ' m4 w8 h+ X0 E' Y* H1 {3 E/ n! ?

    0 G4 T' `8 M6 I: Z. s: }4 x8 y6 G对上面的公式进行分析,可以得到,当i = 1 − 1 σ i=1-\frac{1}{\sigma}i=1−
    6 _* d0 S, W, J' kσ5 r4 N! o# P4 p* u/ Y# k
    14 U1 p& t5 ?$ r% J6 f4 W' r
    ​        ( Z5 n# H. z  k3 B4 W+ A/ D
    时,i ii对t的导数为0这也就到了i ii的最大值;当0 < i < 1 − 1 σ 0<i<1-\frac{1}{\sigma}0<i<1−
    4 ~7 n4 H- g" hσ) c2 E1 F) I0 e& ]- n; Z
    1
    3 ~3 I! d) _( s$ M  [​        + Q" _1 Y4 t4 D2 M1 N/ x; P& T
    时,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−
    . H' d/ k0 j4 t* _  O" a, lσ
    " f' \* A  @! G" Z1
    ( O; N. g  R" Z5 y* d8 s​        - a( ?. u4 _8 l$ v
    ,d i / d t < 0 di/dt<0di/dt<0,i是单调递减的。# x' g7 c4 y& a$ Z% u
    4 q! t- T  W3 t0 P5 r5 \
    ; C4 P, b9 A& A8 r( q* p/ w
    当然我们也可以画出i ii随t的函数图像
    4 X* c: R: y: {4 O* ~5 S( y2 {
    " M  W2 |% n% t8 W* t" w3 C

    & K* Q) g9 d2 _4 [) k先看红线,若初始条件i 0 > 1 − 1 σ i_0>1-\frac{1}{\sigma}i
    4 Y- u7 m5 r$ u# p0
    ! K+ c9 `! f' ^' k( D+ a/ B​       
    $ l' @' w* d3 V/ K >1− ; u/ ]) m+ U6 \& i, Y% l
    σ
    9 z- q# e% H: ]6 p2 y8 |4 \1
    , }+ R6 t/ d3 O​       
    9 E( l+ |. M4 ~ d i / d t < 0 di/dt<0di/dt<0,i就是单调递减的,9 e9 `7 n) `3 W
    若若初始条件i 0 < 1 − 1 σ i_0<1-\frac{1}{\sigma}i
    8 |$ v, e0 a3 n0! N/ v0 r  M4 B; F
    ​       
    ! G7 F& |! d: f, v6 ^4 S <1−
    3 T4 a* ~4 e! k' A, s! c/ J) gσ
    # g8 P9 h/ k7 l  \- C12 U; ~8 _+ s. j& k3 S+ K
    ​       
    ( q; h' A# F- R: ~: F. w( r/ x ,i就是递增的,可以看到i对t的导数图像有一个最大值,下面的黑线就有一个增加速率最快的一个值,按S形曲线增长
    % P$ |  @; h1 g% o4 Q0 s; b
    : k$ ~+ h3 h8 I4 B7 _  u+ j! `
    4 W9 S, I/ Y2 Z5 w" r
    σ = < 1 \sigma =<1σ=<1时d i / d t < 0 di/dt<0di/dt<0 i肯定是单调下降的,最终降到0; S1 P# q7 C& z2 f  _1 K, Y

    $ C- ]: P$ p' ]5 o. j. G

    5 F8 n! u  A+ L! U" n  w4 _3 N
    0 C. l2 i3 j5 Y1 `' n

    ! |7 z# Y( D& b& H" E综上:% a2 ?- W0 d6 i4 Z* N
    想让患病者越来越少,σ \sigmaσ必须小于等于1,即感染期内有效接触使健康者感染的人数不超过原有的病人数.9 A9 j: l" ]( w9 ~  X
    2 z# O/ k+ V' H  Q7 H

    . I( Y# l/ d; F! T- F9 N5 s0 R( l: c这里我们分析的是感染之后还能感染的情况,但有些病毒感染之后会在体内生成抗体,就不会再被感染了,下面我们分析这种情况。
    " f; ]8 s" `( _7 i6 E6 E/ \
    # T. s" X1 [% R0 S5 R9 `
    ( X4 a. Q3 Q4 y# p9 d+ {
    模型四 SIR模型; |' J5 E% Z9 p$ Y) f+ @
    SIR模型是常见的一种描述传染病传播的数学模型,其基本假设是将人群分为以下三类:
    & ^5 q7 D$ ]" p! _& i6 a
    : n$ s. s& Y- j+ R8 D
    6 W6 z  A5 A* i+ X! r1 ]5 W
    1 易感人群(Susceptible):指未得病者,但缺乏免疫能力,与感病者接触后容易受到感染。
    2 u& ~# p% k  f, f* j; h( R9 _+ F: ^
    3 f1 G# z+ _2 O# Z
    2 感染人群(Infective):指染上传染病的人,他可以传播给易感人群。( I  P4 `" V1 x7 j0 s' u
    1 _# J" `/ r7 x. R
    9 N# I. Y" t  O8 _- B3 D  k
    3 移除人群(Removed):被移出系统的人。因病愈(具有免疫力)或死亡的人。这部分人不再参与感染和被感染过程。8 h) \8 ~. f, r
    0 c3 b/ c8 K, _/ R
    . L( @& U; J! _! d" ~6 R
    假设:
    5 O+ E# D; \# l+ _$ R: l% L+ `& s5 K% o. G6 p; S! j* `& a* q

    % s; g, k, q3 p. N传染病有免疫性如天花、麻疹等——病人治愈后移出感染系统,称移出者(Removed).
    6 F/ s6 X9 m3 t! Y总人数N不变,健康人、病人和移出者的比例分别为s ( t ) , i ( t ) , r ( t ) s(t), i(t), r(t)s(t),i(t),r(t).
    - @3 W$ W- \- U4 [9 A" ~! h0 y病人的日接触率为λ \lambdaλ , 日治愈率为μ \muμ, 接触数 σ = λ μ \sigma=\frac{\lambda}{\mu}σ= & @0 z, f( i! q
    μ
    1 i* p5 H' p. G! U7 I" L4 Pλ
    / u3 y" g# i. q. |/ r' W% y5 h) b​        - L$ a2 x5 t6 l6 Q: f" B
    6 B3 j1 N0 |- ]1 x3 G4 s
    建模:  R! N1 b4 N8 J8 f: u
    s ( t ) + i ( t ) + r ( t ) = 1 s(t)+ i(t)+ r(t)=1s(t)+i(t)+r(t)=1
    ( N5 J- u% ?: c6 g8 n这个就是病人减去治愈的人,和上一个模型是一样的5 `+ q/ n5 a% a; o6 q) b

    / U4 {% @) o) u1 M. S0 [

    4 C% I+ f# v5 [+ M因为有治愈后是有免疫性的,所以可能被感染的总人数要减少,减去移除者就是
    5 \! [/ u+ h0 }0 N; N0 l7 E/ w4 _6 f" x7 m

    , c, ^' D/ k+ ]6 h将上式化简为:
      c( ^# l( R$ b' x9 C3 m( {/ U9 }- D% p+ `* K
    ; W9 Q0 a2 E4 K) n
    i 0 + s 0 ≈ 1 i_0+s_0\approx 1i & _% G  ^- D) j7 H0 ?
    0
    : ~1 k( S7 `- v( x; H) |, }​       
    . Y3 H8 ]* r% ~5 ` +s 1 Q9 P: c& G5 F; u
    0" X% a. K. ]+ A. ~9 ^* w
    ​       
    + @" q: Q/ l' f# W! l; d9 l# s. { ≈1(通常r ( 0 ) = r 0 r(0)=r_0r(0)=r 5 {- w$ V- g. q6 `7 |7 a% D
    0
    $ Q, S$ n# `6 L" k​        1 i* R, ^6 P# F( p
    很小)
    - ^/ F+ u1 n5 I" l
    % `: S. M* w% Q2 [  C6 u
    , C  I, q5 {2 a+ w
    关于i(t) , s(t) 的非线性微分方程组,没有解析解,只能通过数值计算得到s(t), i(t), r(t)的曲线,下面来看下曲线的数值解的MATLAB程序
    / y$ I) m8 D/ }; r% T6 j9 h: Q# t
    : Z. b& h5 V1 O: i5 ]7 @" _' w

    0 S8 W/ Y0 r9 h' V" k# Q这里我们先设λ = 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 * z# w/ o3 X+ v2 i: e4 ^- c# [
    0
    4 d/ N$ s$ ], k2 L. e​       
    8 i" R4 [; n( s7 c. I- g =0.01,s
    # c9 J- I1 c& Z  k0
    # I, i5 @7 T- `; r3 u! C- q, S0 B( R​          _; K  {/ v7 ?
    =0.99
    - k2 V3 W4 [/ I' m, ]* w* N5 X- D也就是平均一个病人人传染一个正常人,治愈率为0.5;开始的病人比例为0.01,正常人为0.99,设没有天生带有病毒抗体的人,所以r 0 = 0 r_0=0r 4 E" M8 a$ `; L# w" H. k
    0
    5 m3 B, g0 n7 Y# D​        5 A2 b5 y, I2 T, f4 t
    =0,之后若果病人被治愈,则具有抗体了,有抗体的人为:r = 1 − i − s r=1-i-sr=1−i−s$ O8 V+ B7 [& F! N8 p

    ' V) o+ O) j0 D1 I7 I4 N6 t4 n
    0 O" u. C# d: N9 R5 z
    ts=0:40;
    6 q  S: c1 P& t  P" I7 X. Mx0=[0.01, 0.99];( Y* \% v" q0 {0 X/ I/ M& I7 C' ?
    [t,x]=ode45('ill',ts,x0);0 o5 A1 }4 O' b
    r=1-x(:,1)-x(:,2);( e6 I8 E8 M# Z! H. m1 o
    plot(t,x(:,1),t,x(:,2),ts,r),grid
    8 M! b5 \" u* y$ x5 @3 _) V( u7 Xlegend('i(t)','s(t)','r(t)')
    ; }* ]& X/ i& I" ?' Q- b5 X1 Y9 A$ b4 S/ {
    ( D' ~& [$ f5 ]- C+ Y. O# L0 l
    function y=ill( t,x)9 y& y" h  E- s) [& r% m7 ^
    a=1;
    0 a0 X2 t' l5 @9 K, ib=0.5;7 H/ i/ Z+ Y/ N; P- @) w6 ]2 T
    y=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];- t3 E2 H. T, M/ Y- R
    1
    2 s) L' @9 S" p/ B9 [! _2* [2 H: Z4 E: r: \8 z$ j
    3/ z; E9 n" _+ f  d
    4
    ; E- i4 j5 S. X5
      _# S. }& i0 Y0 P6
    # X# J5 K+ q* S( B0 E* D& }7
    $ B. h# z, h' o8 d87 ^: E3 Y# k; n0 H# d
    9
    $ O1 U1 W, Q7 K) J7 v0 P/ S" W" U! t10* Y# f3 f- B: @' ?; `/ \. }
    111 e8 C2 C6 P; v) o
    ! F3 S& d8 t: c) C& u& C7 \
    1 S# ~5 h# W& e; D
    可以看出:s(t)单调减,r(t)单调增,都趋于稳定, i(t)先增后减趋于0.% Z' J, f+ X$ K. g: O
    结果分析. y  m' g# _" f9 Y/ w3 N6 |
    先回顾一下参数) N6 }- _4 D% D* {  \' }3 P0 z6 M
    接 触 率 λ ; 治 愈 率 μ ; 1 / μ   平 均 传 染 期 ( 病 人 治 愈 所 需 平 均 时 间 ) ; σ = λ / μ   接 触 数 ( 感 染 期 内 每 个 病 人 有 效 接 触 人 数 ) 接触率 \lambda;治愈率 \mu ; 1/ \mu~平均传染期 (病人治愈所需平均时间);\sigma =\lambda/\mu~接触数 (感染期内每个病人有效接触人数)接触率λ;治愈率μ;1/μ 平均传染期(病人治愈所需平均时间);σ=λ/μ 接触数(感染期内每个病人有效接触人数)
    # e6 a9 E1 a4 ~! s( Z3 h! s7 D可以分析出:- v: J: @7 n' |/ A7 L! _5 s

    ' K% d% W7 I& W3 H+ z
    1 b6 z' y! y& b3 f: M) S) I
    随着卫生健康思想水平高,接触率λ \lambdaλ变小
      Y" l7 W3 A, L随着医疗水平的提高,治愈率μ \muμ增大) R: C* R6 Y% ~# y
    接触数σ = λ / μ \sigma =\lambda/\muσ=λ/μ减小——有助于控制传播.
      v/ q1 T. q  Y" ~1 @2 g我们可以试试稍微减少一下λ \lambdaλ,增大μ \muμ,来看下效果
    ( t( b3 Y9 h: L8 i; b) L# @# t& v
    1 g0 j: g. {, |

    & t' k4 m4 f2 W+ Hts=0:40;
    / L1 U5 j6 m6 q: O# }x0=[0.01, 0.99];
    7 k3 J7 \: J+ l" Y; N0 i& c[t,x]=ode45('ill',ts,x0);
    " \' _, c1 m- d- _  w/ \r=1-x(:,1)-x(:,2);, H/ ?- D/ b% |; F
    plot(t,x(:,1),t,x(:,2),ts,r),grid
    6 ^, ^- d- ~$ W' p5 r1 E4 W8 c. j, klegend('i(t)','s(t)','r(t)')5 ^/ ?/ S# k* p# M* g7 @
    & W4 v: K4 Y: C5 [4 O- T

    ; i) J& I/ T8 F9 Z& pfunction y=ill( t,x)' o& }; B& J1 g4 p7 Z4 J
    a=0.8;9 M0 F' g* w, S, v# E! n
    b=0.6;! h1 o" n% f! _$ j3 x
    y=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];/ O- d/ j$ T$ [" M$ M
    1. f4 ~* z/ J9 _: a' e; D
    2
    + _) m9 t$ ?; K+ Z- U3 K2 f3
    1 c0 a; E  {9 M+ T+ J) _3 \4" c. N( I" s' c
    5
    . G# o8 a9 ^6 `" Q% g6# j- ?$ e: ^! s$ E
    7
    ! W6 F- w% q$ n) R- A8! u! w& `+ d. H: S- n7 p
    9/ R( W. G$ Y# ?/ c/ N4 F; H$ H
    10. f  Q  ^9 `' w) T; M+ A
    119 c3 O8 @; f) g# K; Y, v

    5 C9 R; H: v2 Y9 o% H0 ?8 b
    6 ?7 Z8 x2 A' u6 I1 g6 Q
    综上我们可以得出结论:想要减少传染病的传播,我们就要在接触数σ \sigmaσ上下功夫。" D7 h5 ^9 v! U3 B$ v* T' N8 H
    4 n" D: Z" w6 E9 y) D/ W  w8 R
    1 M1 g: w0 ^1 i% T" X% G  {/ U
    实战建模; }6 p" F; a& x; s
    数据处理: t3 t3 R8 ^8 |6 F' g

    - o3 x" N6 y; A
    . P9 c' E! E+ h9 J
    首先,我用python爬虫爬取了丁香医生官方数据,一共5534条数据 特征包括感染、死亡、治愈的总数,当日感染、死亡、治愈新增,疑似病例,时间,省份等14个特征4 ?: ?2 e1 @9 w, r; k; }, ^; Z
    ! e( H: m- m7 b7 i+ Y6 k

    6 x" a# Y( F# z* N- u
    ! K" f3 o& U6 P" }2 u) Q

    , I4 H% {9 g- @7 Z1 V& V4 U+ e) B然后用python进行数据提取,提取了较为典型的湖北省的数据作为我的参考依据6 ]( a* P* q4 b. z- e. P. S6 e

    4 Q6 b0 t5 @; J; o
    + O# b: P6 L3 g+ ?! @5 r1 K8 R
    % b, F8 G. p3 R( j
    1 Z: g* ]. `! k: q
    然后用python对数据进行清洗,提取出了患病总数,现存患者总数,死亡总数,治愈总数,时间,省份这几个特征
    - i3 i3 s, c$ H2 m9 c! ], b! C  i3 i! {1 ]. \- R
    ; d% R1 i& A. n/ v* T
    对日期格式进行修改,值保留月和日,并与死亡人数的位置交换# v' j8 F& P* |4 S' x5 o; i) \

    ( f. w& j7 l2 Z! Y( j

    8 |& H" A  c* l4 @( B. o) o8 k这里我用python对提取的四个特征分别进行了数据分析(主要包括计算最值,平均值等,),并把1.20日作为第一天,7.02日作为最后一天也就是第165天,做了可视化可视化处理。* i4 o8 H0 A  j' ]: {7 A  U3 O4 [
    感染人数示意图, n8 M' m/ e% {' _- ?) X/ n% [, B
      c% `7 H! ^0 e) h8 ~( L9 B& k, ^% g

    / s" A7 P. s& u: g6 y- ]" A治愈人数示意图
      w/ j, z+ F% K: L6 o# r2 A9 \% G( c7 S: c

    ) g; F* A! F% T# x0 l1 A1 B9 O/ B. q3 j6 F6 r

    0 I/ J+ F2 `/ a7 J; q* Z现存患者数量图' I4 m# a! k) n# q4 [; I/ a$ R

    3 M, S3 J, z* ?6 {: g/ l/ Q' `& g# l
    6 ?4 P1 [1 y, [2 Z
    死亡人数示意图+ g1 N( K/ c$ ]2 N& U
    0 J  ^, i7 q# s3 B7 s6 u. f) z

    8 M" }' @$ c! ?. v' C, W- A" g' t; H+ C* ^8 {: D

    - ^8 ~/ v* G/ {7 R  w经过上面的图片与describe数据分析,我们发现有一天是异常的,患者多出了平时的十倍左右,经过查阅资料,这天因加强了检测标准,所以增多了很多。为了避免这个数据的影响我们选择将这一天删去(或者用平均数或中位数代替也可)1 o. [  L) a! J" d
    将上面清理过的数据存放到csv文件中+ Y% X1 K/ ]- u8 {0 G

    % p$ i8 F; U  f. V8 \' u1 D
    ( z+ j1 u$ @0 L# |5 y& g" n1 _; ~5 d
    模型建立/ x# s' `: G0 ~3 b( R$ J
    模型假设
    6 }) g+ a2 D" k, m! g7 s9 ^  |! G经过上面数据的分析,我们大体可以进行如下假设:
    - v4 U) d/ j% v8 M1.由于不存在封闭情况,考虑开放体系。
    3 v3 V! X. s+ i! @2.目前数据以天为单位发布,因此不考虑连续变化情况,只考虑离散的方程。/ _9 w8 a0 O& B% A+ U3 p
    3.新型冠状病毒的治愈人数和死亡人数相对较 小,因此只考虑 Susceptible(易感)和 Infected(感染) 两类人群。设易感人群总数为N  v% s! M" V# {7 t) @' b1 Q5 X
    4.经专家鉴定新冠病毒患者治愈后至少六个月之内不会再被感染,所以设治愈后移出易感人群。: e+ C+ q. [8 V3 x! f
    5.设每个病人每天有效接触人数为 λ \lambdaλ(日接触率),且使接触的健康人致病.: P, m  d5 h7 V- @: q
    6.设病人每天治愈的比例为 μ \muμ(日治愈率)' r# p% S: Z. c5 e1 m/ `
    7.时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t).
    # Q" T; Y& ?5 P' j, O. y  q2 H- s$ e4 L
    3 t# R# }' a7 p2 X/ {2 Q; _
    模型一
    : `' G* L: \7 }% g+ V8 O
    * c/ Q2 I) |* o/ m. j* C

    8 l% R: b9 _8 i2 m: Q7 F分析可以得到移出者r(t)=治愈人数+死亡人数
    2 I4 W/ n8 j0 x# _0 K通过python数据处理,我们算出了r(t)的值,并将其可视化
    8 A9 K& ~/ o2 [( o( g$ {8 q+ I4 F* P, `1 W/ w2 F! m
    # J2 n7 o6 \' G7 D+ Q8 n$ \$ b$ s7 O
    / V8 `8 \8 `! z4 O  v6 T7 B& s

    5 C0 \5 @6 A5 c0 ~" e我用MATLAB对其进行了拟合,拟合图像为
    & j9 y1 }3 y) O$ o) [0 s: N5 T( N' ~: O  N

    $ J0 Q+ R+ K+ H/ ^  A' Y; \* z3 B" D+ c- k& E( H3 G5 ]

    2 h3 ]) n# T9 p. I4 |6 a+ u0 _& B) z

    4 f' ?9 r6 {9 X$ M  k2 ^8 a分析可以得到患者 i(t)=患病总数-移出者; Y( E9 t- }& l* H5 f
    可以通过csv文件的currentConfirmedCount 直接获得i(t)数据,当然也可以通过 i(t)=confirmedCountv - r(t)获得,对此我也做了可视化展示
    9 M6 P+ |7 R1 J: i8 p2 B  Q, f( }
    # i4 ~5 o% z. x% |$ ~7 s% V' a

    6 B0 q, H2 n) h1 I; c. q& l通过MATLAB程序对其进行拟合,可以得到r(t)的函数图像大致为
    0 p' |" }( g! y: X' S5 b% g/ Y; L: t
    $ x, a( Q0 M+ h6 v$ c; [$ k

    3 l( ~( z' ^9 U3 ~: l$ N' ~! d9 @" ]
    ' \- j5 q4 x+ M9 Q1 }( a
    7 Y. t# E0 }5 t7 Z2 ^
    9 {. p# g$ x& `9 e! ]
    为了方便,利于公式推导,我们先设时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t). 所以有5 ]: B0 S) u* L8 _7 M) z: w
    8 W9 q8 z( s6 o7 U

    % L. Y) V2 [6 p* J3 l% C+ U可以推导出每日新增病例的表达式
    4 I4 f( b' B- P+ r, o
    . u/ }0 Q  f5 v0 b$ i% a

    & W1 p  p9 ?6 S& n+ n
    , d( U* v# P/ t% ~8 f. Z& V

    - V# P, T, y5 _- k! G; K
    $ Y7 ^2 E. E" `/ j. `+ T
    ( z7 ]0 q$ v% u  p* p+ S" U/ m1 H4 A
    由以上两个公式可以推导出以下两个微分方程# y% G1 Y/ v  ?
    / e6 T6 `) M  w
    % q6 K. i5 J; u9 v; |7 I1 W
    2 g7 ?+ |3 }* u  q& |* l( @

    - p, Z+ ?: a( j; J8 C% ]可以知道初值
    . }$ Y: J" Q$ T: T1 V2 Q" J9 ^i ( 0 ) = i 0 . s ( 0 ) = s 0 i(0)=i_0.s(0)=s_0i(0)=i
    8 j% p' W* o: `4 C; D  s1 b0- U, d4 q# W' L! Y
    ​        & ^# S1 f1 b- h4 Y. s: W: p) P
    .s(0)=s
    / I3 j/ F/ n$ `05 n* V. g! @% c$ a7 s* ]
    ​       
    ( @9 W) I$ E2 P' o$ R* x% ? " i* i' N$ s8 ~, b0 |( Q
    因为一开始治愈的和死亡的肯定很少,所以r0可以看为0,于是就有:! x" c7 z; B( k
    i 0 + s 0 = 1 i_0+s_0=1i % G% m/ u4 F% ^# {& P* h9 F
    0
    * T% n( {' W. t' I2 D3 T  z9 v​        $ ]. [! S! W) D" G
    +s
    % a% H) X& T, E' C+ b* C0
    1 k) [7 e! C9 C: f2 ?​        8 |8 o+ }& o- Z0 b/ t, z+ K
    =1% ^) {) q1 c& M4 E- |2 q1 o
    通过解以上微分方程我们可以根据经验假设λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)的值分别为1和0.5(也就是每个患者可能使1个正常人患病,患者可能有0.5的概率被治愈);由于一开始患者肯定比正常人少很多,所以我们设i0=0.01,s0=0.99。对其求解可以得到s(t), i(t), r(t),的变化图像
    ; s5 U1 o+ a2 f# p/ ~7 X& E/ ~: j' p: @1 s" S; L, ^) s

      v( u( M6 k# K
    4 `' G8 q, ~+ k; m9 [, `- W# D
    & D/ q9 ]5 H3 ~! ]2 t
    MATLAB程序如下* }6 r0 J; X2 |- H( F( P8 i3 C2 ~/ r2 J
    ts=0:40;% r! B( f4 g% \; W9 m9 S/ j+ X4 R1 X
    x0=[0.01, 0.99];/ a; g  p7 B- E4 {
    [t,x]=ode45(‘ill’,ts,x0);* ]5 B( C, i/ A
    r=1-x(:,1)-x(:,2);
    / D: m7 B2 f0 T* z. F: cplot(t,x(:,1),t,x(:,2),ts,r,ts,x(:,1)/x(:,2))
    7 t4 M3 E/ E  h3 _* Q. J1 Ilegend(‘i(t)’,‘s(t)’,‘r(t)’)* B+ T0 p( c# l3 k8 Q. p
    ' S0 d2 N) y& ]2 t+ ~; f7 B) `  E9 m

    0 h$ e6 s7 Z1 {! f1 R) Afunction y=ill( t,x); }( ]. o. E1 s0 Y/ _+ T7 D
    a=1;
    ; J: u) W% |/ ?1 X; `b=0.5;
    ; t( a7 t( h3 i5 ^* `4 ]y=[ax(1)x(2)-bx(1);-ax(1)*x(2)];# Q' F3 Y& `& Z! J' j3 O
    9 M3 b: G# W' g' W! e3 ?3 _
    $ [5 U% C7 d% p
    结果分析:患病人数肯定有个高潮,但之后高潮就会减弱,并逐步降低为0。随着医疗卫生条件的不断提升,患者的 λ \lambdaλ(日接触率)肯定降低,μ \muμ (日治愈率)肯定上升,所以我们可以把λ \lambdaλ调一点为0.8,μ \muμ调高一点为0.6,可以得到以下趋势图。所以应对传染病很关键的一点是我们要提高医疗卫生条件
    0 \' _3 m8 m2 l& E0 i" l* r
    & u. D" u  M/ a; I' f7 C" Q' z

    5 o$ u8 R9 m  s7 m5 m) Z0 N6 a$ F, j
    , a5 R# }9 g7 Q1 y- t& b; _模型二
    * l5 h, ~  D6 e, n: C. r& J2 w; q3 S4 _3 X! q
    - G2 o: H0 ~$ m1 Y# ^
    实际上,λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)都是随着时间变化的,这里我们设s(t), i(t), r(t) 为第t天健康人、病人、移除者(病愈与死亡之和)的数量, s(t)+ i(t)+r(t)=N..' Z3 s  j% i! f4 ]+ J* E
    (t), (t) ~第t天感染率, 移除率(治愈率与死亡率之和)% e6 w+ z" G$ e; ]  h1 s
    有 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)1 U' q3 g7 e% ]+ M
    因为s远大于i, r,s(t)视为常数,所以有2 u4 Y4 [, Z4 k) S! Y) X. p
    " \+ F# Q, V8 d7 Q3 \: I( B+ d) \
    , X- E3 s. T2 c0 m5 M* B

    6 E) x; R  B. ~& Q
    1 n6 |. M9 U! Z7 M
    取差分近似导数9 F" I% u- c; W$ s; I
    ! {* p: N' v) i( V# s( A/ w
    ) _3 Z+ ]1 p/ v9 y" W4 [5 y' O9 q
    4 g# j9 ^+ o0 X: Y2 B/ B5 M/ f
    2 T! ]& Y, E7 D3 M" {! ~+ K. `" _
    我们可以先用真实数据对(t)进行展示并进行拟合
    + F% e7 C! P! i+ K* Y
    : W9 f: C5 ^) W/ i* t1 \
    1 n0 c& r0 D" b3 l9 M' `

    ) X+ S* b0 N8 C* ~  m

    . B+ k! i" y$ Z8 A, r$ v当然同样的方法对(t)进行拟合5 h, B5 A" b$ D, S4 W6 ~
    5 {, \& V4 b0 z' Q+ P, e3 n

    & W- R' A  x4 p! F8 u* m% A) W做不出来了,好难,光这些东西就弄了四天,到了数学建模国赛得多难多累啊,哎,让我这个小白手足无措。毕竟还没有正规的培训,这个模型等期末考完试一定好好做做!!!4 h2 D- y) w3 _
    冲国奖
    : X. L0 N0 A, R( p2 U1 c冲国奖" L, K3 d7 b1 L) f0 `
    冲国奖( k; t+ Q' u* w5 F: [
    ————————————————
    8 S. `/ `3 ^- P版权声明:本文为CSDN博主「小白不白嘿嘿嘿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    . r4 j' O  w3 \0 H  c原文链接:https://blog.csdn.net/weixin_45755332/article/details/107094630
    % w& B& M) J+ Z. q$ B$ c, ^
    4 c. k. Q2 _$ f0 h+ T# Y+ M, L/ I" g* @+ X4 _! ?
    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-13 14:49 , Processed in 0.450044 second(s), 51 queries .

    回顶部