QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5620|回复: 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
      R3 B# {7 \& W/ I
    数学建模之传染病SIR模型(新冠真实数据)
    & K3 \( H# L2 P  l! @& \! m4 U" ]传染病模型的基本问题
    4 q  c  ^1 n: S/ R4 y' A/ n描述传染病的传播过程: @4 p0 S4 t: a$ U+ B! }
    分析受感染人数的变化规律# [7 E; h( @9 g1 p: g. m, b. g
    预报传染病高潮到来的时刻: E4 [; V" z$ M1 O
    预防传染病蔓延的手段: l5 l7 }" c+ c6 @& w
    按照传播过程的一般规律用机理分析方法建立模型0 _& Q! h8 {6 m
    注:我们这里是介绍数学医学领域中基本的传染病模型。不从医学角度分析各种传染病的特殊机理,按照传播过程的规律建立微分方程模型.
      f8 L, q8 C2 f3 Z: ?
    ' h/ r6 }  Z6 s* s9 E6 H( y

    - A! z5 I" I3 O' m7 j建立模型
    & g3 x1 m) a/ W% U' ]) \+ l7 e模型一/ W8 l$ E3 Z6 [" w
    假设:
    ) ~2 E; R1 t9 a1 w9 L8 f+ z, n2 E; }! p4 V& s  j8 U
    * k9 I& H- t4 l( s+ T6 {7 K' s5 X( P
    设已知感染人数为i ( t ) i(t)i(t)(病人数量随时间变化)' F, O  m& @/ ~2 A
    设每个病人(单位时间)每天有效接触(足以使人治病)人数为λ \lambdaλ" J% i# G9 H' h" m
    模型:* H* }$ \( T7 i4 t
    单位时间Δ t \Delta{t}Δt内,新 增 的 人 数 ( 现 有 − 原 有 ) = 原 有 的 × λ 新增的人数(现有-原有)=原有的 \times \lambda新增的人数(现有−原有)=原有的×λ,即
    % l& R; y! o, a( p* {
    8 Y; r& i& W  c& H/ e
    4 `8 d/ S, y4 G  h+ w4 }' @3 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
    1 y' k6 W- C% b, m6 w& k一开始的感染人数为i 0 i_0i / n, x; n# p6 t; j# F# ^" n2 j. G
    00 D7 J; r3 l! Q* @1 Z" S( \0 w6 F
    ​       
    # H4 p" b8 w4 `  ~. T: ~! g  E& X   w8 l) M' s( E
    i ( 0 ) = i 0 i(0)=i_0i(0)=i + l/ z; b) G7 f0 T9 X
    0
    + i; r5 V4 s2 B# S. }​        % S0 e2 ^+ o& x
    ) P* S. J3 g+ V* W$ V' |
    解微分方程可以得到
    ) n! z- j/ I4 ~! `# p' g( Oi ( t ) = i 0 e λ t i(t)=i_0e^{\lambda t}i(t)=i , c5 C5 {+ K$ q9 V: t
    0
    . {7 q% p0 c9 H, T( d6 N6 H) ~​        " r- @" M( A  X1 X* Z3 @" k. F
    e # g4 ~+ u, D9 `' [5 {, [
    λt
    / A+ V, ]7 |! V
    0 P/ q9 r& R! k* c5 q6 q7 v8 A4 _所以可以可到当λ → ∞ \lambda \rightarrow \infinλ→∞时i ( t ) → ∞ i(t) \rightarrow \infini(t)→∞4 S/ @% [8 o/ x+ @, j/ B0 L1 R
    当然这是不可能的,因为我们考虑的因素太少了,首先一个是,若有效接触的是病人,则不能使病人数增加,所以必须区分已感染者(病人)和未感染者(健康人)看模型二来解决这个问题% ^9 Q. I( E% l8 y/ \5 d1 |3 E

    3 m$ G" I* T* t" \8 ~
    ; c7 K. W( ^( i4 T* _5 R6 v
    模型二
    6 m' `  w+ Z6 o* q1 J假设:
    , Z  P8 h8 ]6 k1 X/ o9 D( P7 ?  l$ C4 R8 C4 W

    $ g5 {' W1 o7 J0 ^3 |将人群分为两类:易感染者(Susceptible,健康人)和已感染者(Infective, 病人).0 t, C* T. R2 X
    总人数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! S- A7 X0 S/ h. U+ [
    每个病人每天有效接触人数为λ \lambdaλ(日接触率),且使接触的健康人致病.
    : U, Y& K8 h6 T8 \% b建模:$ W9 y% ~5 l: K" N- r
    每天新增的总人数为原有的人数乘以每个人可以传染的健康的人数,再乘Δ t \Delta tΔt
    . {* ~' G6 o$ x( j7 ^: w' W2 e; z& |  s. o; O' ~
    1 U4 k( B& M9 `' r
    Δ t \Delta tΔt除过去,两遍N约分得到下面,
    ) ?0 l: x, u/ \+ w$ L2 y! V0 U5 N7 y7 O9 ]4 P

    ! G; R( m+ W! h* e/ Q: [0 m  _MATLAB解一下这个微分方程
    & {8 P5 K! }+ w; k& A
    : T. x3 M% h0 F6 ~  O" c4 `  {
    " @+ b3 l! l6 G5 l2 t" p4 z& g& e
    y=dsolve('Dy=n*y*(1-y)','t');
    / W4 I2 o) A4 ], n
    7 ]& K9 z& C& }: M
    5 @- C1 e$ W! A
    y =
    ! @/ N3 W$ N. }1 S( z, H7 k -1/(exp(C1 - n*t) - 1)" F) F; X. I8 d
                          0
    6 i9 f( j8 Z/ I/ L4 y9 v& K' F                      19 L& y1 Y5 @, {' y0 S7 E
    14 q6 d6 N9 \* m6 B! a: i& W
    2
    . a( [2 D2 y( T3 g3
    % D! Q; j, ^4 S0 J4) }0 |1 j: m* [- P4 m
    5
    , H! A* I3 Q0 v" R  ^7 f. Q68 v6 t. m, J, x. l' E# D
    写规范点就是这个函数
    " f. l3 k% ?+ w& \: r, K$ l5 g5 {3 y
    # `9 G5 u9 I, Z" V  L% t' H4 c

    : ~: D4 e3 D$ o( h  v! v  w. k7 n函数图像大致为
    4 Z5 b; i0 v. ?2 _) F) R( h$ {5 P3 j* T$ h4 A! b; B. ~

    2 ]4 v) p8 X$ U# Y% G0 u可以看出t = t m t=t_mt=t
    1 Z! L; l( L3 A5 j8 y1 Fm
    4 _7 Y. s0 X; A/ |# ?7 |1 E​        ) C4 ?: ]/ W8 W( [! R, j. d* w
    时这里图像的斜率有个最大值,其也就是传染的最快的时候,即传染病的高潮时刻,当然t m t_mt % u1 S4 ^2 L8 B: ]5 o/ ?. w
    m- [4 l# Q1 K2 E
    ​        : T! q0 I/ r8 H2 U! N
    是可以求出来的
    ) f2 L4 }& I8 k( d- p6 P  F! }7 Q; h& Y

    $ A3 U& g7 l, K1 p3 x9 z0 k再看原式,当t → ∞ t\rightarrow \infint→∞时i → 1 i\rightarrow 1i→1& G9 z0 I6 z+ `4 ^6 C( m8 T+ M
    病人的比例为1,当然这也是不可能的,因为我们还没有考虑有没有可能治愈,看模型三
    ! N4 y" x- e# c+ i# d$ V& h' O8 J6 L6 }4 r" V! e* o

    1 h+ Z  I0 j2 Z, {, O5 D: |# v模型三- e" s" W3 d+ `& D  I
    假设:7 I4 y7 F! G& e& @
    ; u* X* j, k' m. S

    * `' d' m7 @9 u6 ~- f  K  A传染病无免疫性如伤风、痢疾等——病人治愈成为健康人,健康人可再次被感染。, F; U( g  j( @4 h+ a
    病人每天治愈的比例为μ \muμ (日治愈率),1 μ \frac{1}{\mu} * x8 A# p: |" }) i& d0 N& e
    μ) W1 }" @: G, z4 m* w' V
    1
    ! T' X- [% L8 U  `​       
    # G2 w4 [8 s! L0 ^+ e; b4 ]2 h" ^ 为感染期,
    2 U& r+ c: W& p# L" M模型, T. @7 w5 u, D" W4 A# {
    这是减去了治愈人数之后的新增人数# }% i3 W* |# v  Q  V% M
    0 ~( ]2 Y9 `( e
    # }: K3 K* ~! Q0 S% u

    - k0 G+ y  k3 T1 m3 U5 f
    # j  v7 [( X# W
    σ \sigmaσ 为一个感染期内每个病人的有效接触人数,称为接触数8 h3 N6 K% C1 U+ U1 g9 m1 u
    # S! w5 Z2 k# v
      q* j' P- O. Q$ o
    可以画出上面的图形分析下
    ! N* i: I8 E4 w9 p' Y# ]
    . R5 K- c) J+ J9 _" A
    % |- T9 P2 u; c! Z
    对上面的公式进行分析,可以得到,当i = 1 − 1 σ i=1-\frac{1}{\sigma}i=1−
    # K* o' q* r) ~5 x  o0 Vσ
    ' w7 e. n3 }+ f4 Q6 v$ V1
    ; z+ @( f4 I* J$ {& C& k+ Z- i​       
    & V3 }4 i1 Q2 Z) M: c6 [, S% A) m$ T 时,i ii对t的导数为0这也就到了i ii的最大值;当0 < i < 1 − 1 σ 0<i<1-\frac{1}{\sigma}0<i<1−
    . {. {: P: @& z/ b! M; [2 Mσ! R% `( c0 W+ O" g, k
    1
    7 N8 B1 w: E1 g. L8 y! T/ w' b​          v# Q; F+ S: Q$ A& F. w
    时,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. F6 J6 F" s* Q2 R7 Zσ
    : [5 ^' K4 B6 S- H$ c$ d1
    7 g$ [, x' ~' [% I( h4 _) c​        + t. r# g# u1 U
    ,d i / d t < 0 di/dt<0di/dt<0,i是单调递减的。8 J3 k' b: C2 [9 @  i4 @
    ' ?$ C" S5 t7 U* J& {
    " F$ F- Z: r- u- x, d9 e# G/ f# i
    当然我们也可以画出i ii随t的函数图像
    # d& b) ]4 Z- B- S# v% i
    3 p3 j) O$ C/ u8 j7 q% R- k
    3 N: A7 D" x! P7 d/ `
    先看红线,若初始条件i 0 > 1 − 1 σ i_0>1-\frac{1}{\sigma}i
    , \6 u4 ^8 C$ a. Y/ u4 ]1 Z9 @0
    & L0 p0 l0 ^7 s​        3 P& e+ L. b( d- j) }2 p. w
    >1− , h$ x3 j3 R1 C5 U( ?4 [# t- r
    σ
    - K# h. R7 T' f! k2 |1
    0 s4 P+ ^. D( P9 V​        ; g6 t& k; I! b7 u3 e, n
    d i / d t < 0 di/dt<0di/dt<0,i就是单调递减的,
    9 Y5 Q9 L  i' R5 E8 I& P3 d. j若若初始条件i 0 < 1 − 1 σ i_0<1-\frac{1}{\sigma}i
    ) R" _0 d3 x% T! U: ]0
    * V/ ~" a/ n6 f1 D​        4 x2 j5 p, E- L) g1 c9 K( \
    <1− 4 h0 u5 H5 I0 }, v
    σ( w# V2 _  p4 Y9 Y/ w% J
    19 `# G. j. q" b  `6 \3 x
    ​        / V) D: a+ g" L0 ]- {
    ,i就是递增的,可以看到i对t的导数图像有一个最大值,下面的黑线就有一个增加速率最快的一个值,按S形曲线增长
    ; A8 V8 u8 S0 P: {( V6 b0 h7 i' p

    2 s7 f- N. G1 f, Q/ [) b5 rσ = < 1 \sigma =<1σ=<1时d i / d t < 0 di/dt<0di/dt<0 i肯定是单调下降的,最终降到0
    ) w; u: |: l9 `# @2 b1 B! r  b4 W5 ?6 t% J) p

    - G) S9 k1 d! b
    ) g( v! a9 X3 ]. M9 F9 o5 a

    - n& M7 P7 T4 ]$ j- ?- }综上:, `/ l2 {* x; @% y
    想让患病者越来越少,σ \sigmaσ必须小于等于1,即感染期内有效接触使健康者感染的人数不超过原有的病人数.
    * H+ h( M1 z' `* \6 M2 B1 Y7 m
    3 c" }% @3 Y2 F% D( P4 ?

    2 \* {/ f" e+ y) c$ V/ h; t' Y这里我们分析的是感染之后还能感染的情况,但有些病毒感染之后会在体内生成抗体,就不会再被感染了,下面我们分析这种情况。
      Y, t% h, `7 \, Z1 J* Y' ^* G4 b) M! G  _$ V' k
    % l1 Y( o' q/ C8 |9 z
    模型四 SIR模型& ?$ Z' }; z/ Y5 A2 c* W
    SIR模型是常见的一种描述传染病传播的数学模型,其基本假设是将人群分为以下三类:2 P5 M+ ?) ^! _. h9 c& d/ ?! d2 j
    7 d' Q; J" D- E5 h- g9 H( k
    9 L! P' a" X* _. y
    1 易感人群(Susceptible):指未得病者,但缺乏免疫能力,与感病者接触后容易受到感染。0 E% d5 M# r5 f. _6 G: C- [! H" Z
    : o# k& K1 H: Q' v

    9 H: @) g4 u3 E( s- _2 感染人群(Infective):指染上传染病的人,他可以传播给易感人群。: A: D4 |  {( k, |4 E- h

    " ~7 ~% v! g. K- c% f3 i
    9 }# d4 x1 G2 ?# n' k$ r
    3 移除人群(Removed):被移出系统的人。因病愈(具有免疫力)或死亡的人。这部分人不再参与感染和被感染过程。
    " y0 s/ {' w! R* y$ ^8 J2 c0 M2 B" a1 }% q; H" T3 G
    . v# ^) y: r% R6 U5 K+ f* e' E4 ^  M
    假设:
    4 ~( W1 J1 K# j  F8 J! T8 \. h: l0 x
    1 ~4 B2 r9 w) l6 ^) ^
    传染病有免疫性如天花、麻疹等——病人治愈后移出感染系统,称移出者(Removed).6 c# u3 _0 L! _, _: S, z
    总人数N不变,健康人、病人和移出者的比例分别为s ( t ) , i ( t ) , r ( t ) s(t), i(t), r(t)s(t),i(t),r(t).
    ' E3 b7 q! u- X+ U% R2 q3 ~病人的日接触率为λ \lambdaλ , 日治愈率为μ \muμ, 接触数 σ = λ μ \sigma=\frac{\lambda}{\mu}σ= / K+ s( Y6 M: p' `% g6 @1 K  ?8 q
    μ. R9 I' @# A5 N" B$ l& u! ^- [
    λ
    # G$ f; x8 i! E. Q" P- r​       
    0 I( S6 z' x" j! E+ m6 _
    1 @  R/ J/ v4 m) ^1 k建模:+ y' U: }+ o, j% k; q
    s ( t ) + i ( t ) + r ( t ) = 1 s(t)+ i(t)+ r(t)=1s(t)+i(t)+r(t)=1
    : V5 ^3 O+ ~$ Y' n这个就是病人减去治愈的人,和上一个模型是一样的+ c- e  D: v! o& M: V8 b! f- s* p

    7 |5 V7 b2 C& @6 i* X2 o- @

    . |( T; ]7 @! `7 f: Y' u因为有治愈后是有免疫性的,所以可能被感染的总人数要减少,减去移除者就是  q! _; {. q' i) m+ v

      J9 [9 K) T) H' o. i' w: t
    * E+ M* U8 ?7 N: u# e7 f
    将上式化简为:& {5 l" \2 k  h5 x' I/ Q
    5 \9 y$ m& C  H( o& p' ~" B
    2 U5 X- B8 n# P, _) Q% k3 j
    i 0 + s 0 ≈ 1 i_0+s_0\approx 1i 1 Z- I% T6 \5 i+ C$ @4 f: K
    0
    3 r7 w0 m. g, p* N​       
    4 P' w. y6 [) B8 H* y +s
    9 D; c8 G+ @. }0
    2 u9 F9 `$ t- n​        + s" z0 X: l: ^, l) B
    ≈1(通常r ( 0 ) = r 0 r(0)=r_0r(0)=r 1 W1 O" \, k$ ~1 k
    0* q% t+ g& j7 h+ `( _
    ​       
    , H" ^- _3 v. ]8 ?/ O9 d 很小)4 B$ Y5 `9 p9 l* v

    0 j3 O; H1 W. z& ?; U
    ! L4 I( T8 C4 q2 g2 Y
    关于i(t) , s(t) 的非线性微分方程组,没有解析解,只能通过数值计算得到s(t), i(t), r(t)的曲线,下面来看下曲线的数值解的MATLAB程序
    : p* [& E# n. I& Q) ^0 y3 P- B* t1 s% |" D  C
    + E" F- D0 X  M* j1 g; K+ P
    这里我们先设λ = 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
    # s8 a( x' }0 |& ^5 v1 \0
    1 T1 j) `, T) [- c- j7 A  @​       
    1 R" X  |2 V  `( U* f9 b =0.01,s # t+ r% ?, M) |& m. D' ]0 Z
    0
    8 F" N; F6 g7 N  j& T9 Y​        0 Y0 K: I9 V/ p
    =0.99
    4 p+ E) U( r7 Y' |4 F  G+ I也就是平均一个病人人传染一个正常人,治愈率为0.5;开始的病人比例为0.01,正常人为0.99,设没有天生带有病毒抗体的人,所以r 0 = 0 r_0=0r ; e  U8 i& ^$ x. G  r7 v0 q
    0' r* p$ Q7 J7 O. }, ~
    ​        2 H; z2 F7 n6 v
    =0,之后若果病人被治愈,则具有抗体了,有抗体的人为:r = 1 − i − s r=1-i-sr=1−i−s
    % R2 c1 K0 m2 J" @) h6 e. c+ I6 h% b$ |; Z. g

    , ^. N% a& D3 m7 ]ts=0:40;
    ) g- p' v$ Q. ]) Q) l2 ox0=[0.01, 0.99];
    4 B- n# X6 B6 q/ _1 I7 B' ][t,x]=ode45('ill',ts,x0);
    $ C& J9 ?4 G: a; p# xr=1-x(:,1)-x(:,2);* f! F, ^  X# e; H  _$ L
    plot(t,x(:,1),t,x(:,2),ts,r),grid
    3 Q5 }9 W( M2 wlegend('i(t)','s(t)','r(t)')2 O. I6 L6 [2 S5 {9 q) p* s1 T

      G/ }" P# I: _: L+ J" x# J6 h

    , s, g& x0 D9 P1 M5 n. L0 |function y=ill( t,x)
    7 r7 }/ q1 l. ta=1;
    6 l7 ^. m' L4 H) S+ l* B* ^/ Yb=0.5;
    ; Z' S7 Y, [# q6 b0 p# py=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];6 c  l4 k9 s- E
    1) h' f+ N8 M% t, E/ \1 r' ?
    29 x; e, [' g) U3 V' ], r
    3
    1 D: K; H; H. f  o  w0 g. R4
    ' a) n! Q7 [2 X" t2 W5
    2 Y( {! w9 ^/ f7 `+ ^8 H1 o6
    , S0 y' I, }0 ]+ J+ p+ C7
    & d; r8 d: r) v0 `) R: C/ w8( D) f3 J- |4 T& @; y
    90 a/ e7 m' `2 ?4 S
    10
    % [  B" e; d3 l- G. K8 W$ X# J11( C7 s; y' o& @) W9 Y6 F1 P, c3 F* b
    , k* A- b4 ]9 k4 i# L" V

    5 K6 r2 s. g) R5 [2 s可以看出:s(t)单调减,r(t)单调增,都趋于稳定, i(t)先增后减趋于0.
    6 D4 F1 M+ ?* b2 d  v/ U4 f  \结果分析
    8 ~0 Z4 f4 u; ?先回顾一下参数' i4 R! o* ^- C
    接 触 率 λ ; 治 愈 率 μ ; 1 / μ   平 均 传 染 期 ( 病 人 治 愈 所 需 平 均 时 间 ) ; σ = λ / μ   接 触 数 ( 感 染 期 内 每 个 病 人 有 效 接 触 人 数 ) 接触率 \lambda;治愈率 \mu ; 1/ \mu~平均传染期 (病人治愈所需平均时间);\sigma =\lambda/\mu~接触数 (感染期内每个病人有效接触人数)接触率λ;治愈率μ;1/μ 平均传染期(病人治愈所需平均时间);σ=λ/μ 接触数(感染期内每个病人有效接触人数)
    ' r% C2 i" L" A. s% Q: z可以分析出:  `+ }* {8 ?! h, E* I% ]
    . O% S" J) W5 w) ]+ B1 U

    8 ^' E& h; Q) O6 r随着卫生健康思想水平高,接触率λ \lambdaλ变小
    . b1 o* a' R  I' o随着医疗水平的提高,治愈率μ \muμ增大
      Z( ?* N" E- ?' c# l9 V/ V接触数σ = λ / μ \sigma =\lambda/\muσ=λ/μ减小——有助于控制传播.5 a: w3 Z# I5 K
    我们可以试试稍微减少一下λ \lambdaλ,增大μ \muμ,来看下效果
    5 {, P% d5 u7 e1 u! k
    9 l% i* `" @7 I
    8 K. G6 P5 U6 a' L. ~* c) |0 D! O$ u4 p
    ts=0:40;: a( J( L0 T% m1 h2 p2 l
    x0=[0.01, 0.99];" H4 ]9 s% W( O( x2 U
    [t,x]=ode45('ill',ts,x0);
    . k$ z( x& {$ r7 N  B" l) }r=1-x(:,1)-x(:,2);, j( q) I7 y# p5 o2 d' [
    plot(t,x(:,1),t,x(:,2),ts,r),grid
    " F) k  P7 f  q  N# l# ~legend('i(t)','s(t)','r(t)')
    0 I* M) K! p, i4 v$ C+ }4 G0 L! r, O) F
    0 R* d3 Z6 l; @  w( c1 `
    function y=ill( t,x)
    4 }! ?0 Q5 j) K  ?6 f! p* j: G5 D1 La=0.8;- C4 @7 O6 w& R1 g% [3 V
    b=0.6;) T6 d+ l8 Y& f( k& P# N- u, U' s# i
    y=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];6 |: }( b2 a5 x
    12 a" |( X6 W# Y0 W
    21 x# h6 v6 J7 l7 Q! i" x
    3' r# }2 p5 ~1 W% c1 z; b
    4
    $ O1 z, x- e+ B* w7 V0 V5
    9 |( a# K0 R, o. ]. u6! Y% t  I7 ]- y8 `! j, R
    7- N5 O0 G; z2 L+ x# f! i0 J3 w
    8
    ! Y2 n, V0 d$ K/ E( }& K9. e6 [; F  o1 U7 L
    10
    : r; x7 X0 E2 n0 N11
    ; n5 E& D; O% z, C' [& z: W8 V& `' u$ X( [% `( v

    ! ~* O6 P$ V+ x/ v- B& J. o综上我们可以得出结论:想要减少传染病的传播,我们就要在接触数σ \sigmaσ上下功夫。
    , ~1 K, c/ I0 R# e* P" U
    # D% b0 B" b$ Y# R# I5 i
    $ s& z, ~( }  Y/ h6 X7 M& G  ^
    实战建模
    4 `% ^8 m# E- K' l5 S数据处理
    6 S0 [8 E# h. K, ?8 [5 ^3 P( n
    . \  R' I, h9 ]# k9 w3 a

    4 P" y" B3 W" \' @. Y首先,我用python爬虫爬取了丁香医生官方数据,一共5534条数据 特征包括感染、死亡、治愈的总数,当日感染、死亡、治愈新增,疑似病例,时间,省份等14个特征
    $ @2 K, S- F$ c* n; U+ |& N
    7 f. G; A3 R9 T4 a
    : F  g( R* i. @+ y8 ~4 w4 P4 Z

    # q% B7 F% a+ g' q- D
    # G6 C8 W; L- b. Q( D; a
    然后用python进行数据提取,提取了较为典型的湖北省的数据作为我的参考依据/ x4 {1 j1 {8 c8 S- t
    3 X4 |  g( H+ }+ M3 `) L* g
    " i* c. A" x7 w# A

    4 a* a: I/ L+ b* S. v* h
    " N$ ]! C# ?, m3 v) q2 T
    然后用python对数据进行清洗,提取出了患病总数,现存患者总数,死亡总数,治愈总数,时间,省份这几个特征
      y( D! s; N: ~" f' ^- \% ?' @7 z" b9 m

    1 ?2 U4 D8 D1 j对日期格式进行修改,值保留月和日,并与死亡人数的位置交换. _5 q* {3 L6 s  p) [: A, @7 ]
    # ~* P) _* D8 g* u+ E, n2 r

    2 g% |7 x7 a- J3 \5 {6 j这里我用python对提取的四个特征分别进行了数据分析(主要包括计算最值,平均值等,),并把1.20日作为第一天,7.02日作为最后一天也就是第165天,做了可视化可视化处理。4 f8 o$ y( M& ^) V
    感染人数示意图
    " k  u  E) U. C4 P3 |% e9 @- u
    5 O& A* w2 d; P
    * W4 D, G# @6 _/ s- _) l0 ?
    治愈人数示意图
    2 y# |0 S/ W) M! j
      X& p# B) B* i
    # z5 c4 s4 J: D. R, x) _9 F

    % s6 q% i) e8 B1 n2 d9 ~; z( w

    3 S/ R7 j) Q8 v) A3 e7 S) t. \/ n现存患者数量图. S3 g* X# D6 I2 M& }

    % |* w/ ^1 P( R2 A# g: \! M4 F

    8 W& e5 h0 K" d8 a4 K( J死亡人数示意图2 y- R' H4 x7 C  V0 f! ?
    7 W( W6 c4 O  `5 c: A5 q- r) V- d
    + H8 e" f4 n' {/ x
    $ e' K6 s1 g! j% h4 B5 x+ \" f; I
    6 h" f" i3 j* ^4 G$ J* Y
    经过上面的图片与describe数据分析,我们发现有一天是异常的,患者多出了平时的十倍左右,经过查阅资料,这天因加强了检测标准,所以增多了很多。为了避免这个数据的影响我们选择将这一天删去(或者用平均数或中位数代替也可); C9 K: Y4 M; }+ g+ S6 q8 p: O1 T
    将上面清理过的数据存放到csv文件中. a3 T4 D( I7 i# v  D) `1 @

    . }5 l% s' a8 X+ m, k

    0 I4 Z- X& ~4 k1 j3 w模型建立- O! F+ s# k+ U  ]  A5 A( I
    模型假设4 K% t  k! [0 I' f# ?' n. ~
    经过上面数据的分析,我们大体可以进行如下假设:- T) m- o# W1 E, S* s- k
    1.由于不存在封闭情况,考虑开放体系。
    * i* R: V. \3 e& x' L4 U' O2.目前数据以天为单位发布,因此不考虑连续变化情况,只考虑离散的方程。
    1 b0 u6 ~8 _- g; J" u3.新型冠状病毒的治愈人数和死亡人数相对较 小,因此只考虑 Susceptible(易感)和 Infected(感染) 两类人群。设易感人群总数为N
    , h8 _  I3 w0 L0 s4.经专家鉴定新冠病毒患者治愈后至少六个月之内不会再被感染,所以设治愈后移出易感人群。
      a* G& @& n/ {* H( {- B5.设每个病人每天有效接触人数为 λ \lambdaλ(日接触率),且使接触的健康人致病.
    8 ?# G0 i. ^# W- \) g) c6.设病人每天治愈的比例为 μ \muμ(日治愈率)2 H8 N8 G6 T8 v7 v0 D5 A
    7.时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t).6 t9 ~# J: W6 n/ w6 o  J# a
    - \$ Y5 _1 `" R2 y9 |( q" v9 m& Z
    % O% B# \. K/ L* ^9 s7 l
    模型一
    2 Q5 x$ k0 Y: M! }4 X( \
    ) A5 f- U& X( R- v% @3 I4 f
    " I2 A' @5 d& `; B8 p7 }, j* o8 _$ R
    分析可以得到移出者r(t)=治愈人数+死亡人数
    0 ], m8 \( u9 c& u5 M. Y. t/ C通过python数据处理,我们算出了r(t)的值,并将其可视化+ @' @6 u5 l8 |3 |

    - g4 P8 q+ u, p  ~  F1 x
    % T: @# }9 G! q
    " Z( d+ i0 H2 e* E

    & g3 {6 h5 ]( l/ A& n我用MATLAB对其进行了拟合,拟合图像为
    8 [: X3 D+ K" \. `5 Q8 Z6 ]. m! [: q4 O# Q3 d

    5 u6 Z( L+ k) s- p2 F" L7 _$ y9 M$ b7 K! {# p; n! Z/ e
    * ]! }: X' d6 H4 a( ?

    6 F6 Q% U- A' v- }7 G! {
    % N# S/ ^8 E, V$ g0 R( w, v0 K
    分析可以得到患者 i(t)=患病总数-移出者
    & X# V- v3 \# w1 S可以通过csv文件的currentConfirmedCount 直接获得i(t)数据,当然也可以通过 i(t)=confirmedCountv - r(t)获得,对此我也做了可视化展示! h/ D( B0 D5 l1 ^7 M8 Y# f+ _

    9 l. @; s" j% c

    ) V( F- Q$ e5 I7 S* K( @' w0 i通过MATLAB程序对其进行拟合,可以得到r(t)的函数图像大致为
    ' D. R7 u6 _3 I2 m! e6 E8 T: a6 f2 A1 L9 Q
    8 ^/ V" Z6 {* _8 n  [$ w

    , _" K8 L) s& Q
    2 F, M3 k" u2 \" A3 }

    # c. ~3 C' `! f! }7 \( c
    & r4 X& G' l) H+ \4 A( |# u
    为了方便,利于公式推导,我们先设时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t). 所以有
    - ^/ i9 J6 Y1 @$ D  P5 }4 w4 S0 z$ |- x$ i' c
    8 I+ B& n0 K8 c6 ]  t2 G1 A
    可以推导出每日新增病例的表达式
    . i8 F$ a! z& c# b- l* ]
    . \; P) ~5 u8 R2 H- I0 M: Y
    5 q- ~% T& M' z2 ~! V: \3 H- h

    3 }! a; r* A+ Z
    : e* Q. z+ ~: w; ~, n& f
    * e# S: K. D- e5 d

    & w$ C* U/ r( t" s- {  I  k由以上两个公式可以推导出以下两个微分方程$ k2 @- Z3 j) Z7 F
    ( P  k& P' I1 N) V7 j& F
    " p2 ^9 j( R; w7 r9 i( I1 I, V: z' B
      I2 a9 Q, t1 m# l- V0 K
    9 k& T) S, o- o
    可以知道初值1 u1 R& D( D/ w/ l2 f9 W
    i ( 0 ) = i 0 . s ( 0 ) = s 0 i(0)=i_0.s(0)=s_0i(0)=i ; p/ w/ d+ L; u- A% V. X4 ^7 D( w
    0
    0 b% l3 x+ [9 L( J! ?​        / Y9 i# `( c7 X+ k1 U( N6 `
    .s(0)=s , H- q! Z3 t# P1 h' N, K9 V' N
    0
    8 ~. M( {: A6 d7 o$ I​       
    0 b# A" q! Y7 y$ |0 r6 g1 V5 |" i
    ) w& C$ q8 b3 e. I因为一开始治愈的和死亡的肯定很少,所以r0可以看为0,于是就有:. x% j6 R# \2 k/ e' O+ e$ l0 e
    i 0 + s 0 = 1 i_0+s_0=1i 8 ?' R; h  \8 j- D0 l' J
    0. a- @. _- r$ U/ k# q
    ​        ) _, m$ h# e5 O0 N0 P6 K& c
    +s , T1 P4 f) J' z+ e
    02 {/ c6 l6 ~/ M/ x  \
    ​       
    ! d. `) U! I' }- P- ?" B0 w# } =1
    . r% K8 M5 ^+ F0 V通过解以上微分方程我们可以根据经验假设λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)的值分别为1和0.5(也就是每个患者可能使1个正常人患病,患者可能有0.5的概率被治愈);由于一开始患者肯定比正常人少很多,所以我们设i0=0.01,s0=0.99。对其求解可以得到s(t), i(t), r(t),的变化图像7 J2 K# U2 K9 n8 Y- s8 @7 A$ [% |
    2 F( L+ j" V, e' m" }

    # C. R2 g! `! q, f+ ^5 G
    7 z0 X7 t* O7 A* D' l
    9 w. |8 t. _5 w6 ^
    MATLAB程序如下) g- x. M5 J6 }/ _
    ts=0:40;; n7 @5 R. |0 J$ |3 V) L# Q: Z
    x0=[0.01, 0.99];
    " [- C( m: ~& s[t,x]=ode45(‘ill’,ts,x0);8 u  Q# O% U5 d) K8 o; o# D( h
    r=1-x(:,1)-x(:,2);
    ; z! ]3 X" o# o: F4 tplot(t,x(:,1),t,x(:,2),ts,r,ts,x(:,1)/x(:,2))
    & Z- H- N& g6 j# {, jlegend(‘i(t)’,‘s(t)’,‘r(t)’)
    8 K% r1 c% W' V5 n1 i+ Z0 b  `
    % K1 p& d, \' _! t& _
    7 Q! _* ]5 E6 D
    function y=ill( t,x)& z. k& b$ B" v  Q
    a=1;$ U( n: `" ]6 e1 |
    b=0.5;  c# q  R, v8 D& K
    y=[ax(1)x(2)-bx(1);-ax(1)*x(2)];
    / B% D0 {! [2 ^& O$ i
    3 w$ T! ^# A. o8 w, [  |9 I; l

    . K9 D6 V2 Y+ B7 Z. P# _/ H结果分析:患病人数肯定有个高潮,但之后高潮就会减弱,并逐步降低为0。随着医疗卫生条件的不断提升,患者的 λ \lambdaλ(日接触率)肯定降低,μ \muμ (日治愈率)肯定上升,所以我们可以把λ \lambdaλ调一点为0.8,μ \muμ调高一点为0.6,可以得到以下趋势图。所以应对传染病很关键的一点是我们要提高医疗卫生条件
    9 x" e  s6 |3 M6 u) A- [+ N# g. g8 s

    : z* a/ n; _2 V& I7 K; ]1 v" b8 a" b+ H6 C' M* ~# B
    模型二
    2 B9 o8 a6 g8 K* k; x: n
    9 @; K9 A. o4 X2 }& E

    7 v( w# a, h% C) R+ T. o  {实际上,λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)都是随着时间变化的,这里我们设s(t), i(t), r(t) 为第t天健康人、病人、移除者(病愈与死亡之和)的数量, s(t)+ i(t)+r(t)=N..
    9 D7 P  {5 Q7 S5 `9 Y2 l(t), (t) ~第t天感染率, 移除率(治愈率与死亡率之和)% Z0 ^; @) E$ i# T; [. |
    有 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)% E) ~* \/ g5 j
    因为s远大于i, r,s(t)视为常数,所以有5 p  G+ I6 X" D  Y+ T0 `+ C

    / Z# Z0 i: D2 C6 q6 v

    ( j% i. H$ ?  \5 n3 t/ M8 t
    5 T* y! u. w8 q6 S* P* C

    ; f- s- y( u3 e: X8 _, o取差分近似导数6 L+ l2 @3 C; n* Q
    + a' v7 P* I) |9 m! ^* m0 u
    1 M  B, B8 ~) {$ r
    - @# l5 H, t6 B- B" ]% m
    2 e. g2 S/ w  t' R2 C9 b1 b$ ^
    我们可以先用真实数据对(t)进行展示并进行拟合
    3 g2 ]1 j1 y# }. m; O6 g
    4 i2 \% f3 e3 k
    ( \4 P  n9 J3 a
    9 f% Z, |) A4 c2 Y# L

    ! t3 v3 R# d( }* T% z当然同样的方法对(t)进行拟合
    . h/ I) ~$ G( o  a0 u* x0 I9 W8 h2 S' i

      U, }' A4 U. K  I4 n! _; X, i' r  B做不出来了,好难,光这些东西就弄了四天,到了数学建模国赛得多难多累啊,哎,让我这个小白手足无措。毕竟还没有正规的培训,这个模型等期末考完试一定好好做做!!!
    6 b. _5 h: e& ]7 `$ P冲国奖
    ! u, h% o4 |. O3 L冲国奖
    9 [- r/ c$ d; M' G. _* P* t6 t; [冲国奖
    . D4 T( L; n- P( k$ ]" h9 A( |  N0 u————————————————! P! V3 m: [% `9 B, z* ^
    版权声明:本文为CSDN博主「小白不白嘿嘿嘿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    : \5 y1 \; }7 y+ L原文链接:https://blog.csdn.net/weixin_45755332/article/details/107094630( a& Y+ z, c, E9 W$ [

    / X0 h) U( K% s: K) k" f. R+ o/ H- q1 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, 2026-6-15 18:26 , Processed in 0.407414 second(s), 51 queries .

    回顶部