QQ登录

只需要一步,快速开始

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

    2 z' T) U- S% h( s. Z' s5 C数学建模之传染病SIR模型(新冠真实数据)
    & A. }. }; O* K4 x传染病模型的基本问题* ?9 x8 A& P/ j- n: D5 X
    描述传染病的传播过程
    # y0 \8 H( {4 E" b分析受感染人数的变化规律* f; a/ w4 W% y  ~- a7 Q: F2 |+ _
    预报传染病高潮到来的时刻
      [; @, ^; b% h% K9 ]9 m预防传染病蔓延的手段, [' X- T2 Z8 V! \0 a: ^
    按照传播过程的一般规律用机理分析方法建立模型
    ' M6 _* w" W% X7 o6 }6 X' Q" @; d注:我们这里是介绍数学医学领域中基本的传染病模型。不从医学角度分析各种传染病的特殊机理,按照传播过程的规律建立微分方程模型.* c: t4 P  e6 y+ u& ^: Y6 \

    ) W& w( K! w+ C" v

    + t( y& J+ b( Q( v* T0 a7 {建立模型
    - A" o/ H0 X1 j模型一
    8 ]' c6 B9 w2 E, r5 q: S6 ~" W假设:% k# a1 _& N* l2 M! e
    2 c: f" |& g+ v7 ~

    2 f/ S$ L: e- O3 e5 V设已知感染人数为i ( t ) i(t)i(t)(病人数量随时间变化)
    : d9 v0 V: K7 }8 o: p6 E设每个病人(单位时间)每天有效接触(足以使人治病)人数为λ \lambdaλ
    $ r, n: B2 c5 F8 z模型:
    * q5 v! z  I% [( i, t/ b! ~/ f单位时间Δ t \Delta{t}Δt内,新 增 的 人 数 ( 现 有 − 原 有 ) = 原 有 的 × λ 新增的人数(现有-原有)=原有的 \times \lambda新增的人数(现有−原有)=原有的×λ,即9 h* `4 {! G. H- m! \' t

    1 f( f+ ?2 j6 X) M8 X" t9 A

    0 W% c; j: ~( b* b! g/ f8 Ii ( 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& M& ]8 s/ n) n9 ?/ ]( F
    一开始的感染人数为i 0 i_0i
    : j  l: f1 D8 a8 C0
    4 P  ]3 ~" d" p, K; e​       
    5 T$ A# N' U4 U! T" x + q( c$ H+ Y  N: W+ W" z* y
    i ( 0 ) = i 0 i(0)=i_0i(0)=i 1 y+ v' a: \0 L6 c1 L; u2 r0 o
    0- ~: b$ h0 @% c
    ​       
    : h$ N# a$ ?$ ~. K1 t2 w : j9 }* p5 t& G
    解微分方程可以得到
    % F" l. Y3 W, D3 Y# |2 ji ( t ) = i 0 e λ t i(t)=i_0e^{\lambda t}i(t)=i
      v/ d$ G/ K1 T" J# V+ `! m$ `0& p3 m  [3 J2 h0 |: {! k6 q( W5 d9 |0 }
    ​       
    $ N6 Q7 \' H( e5 S; ~ e 6 `! H, i8 p$ e# u$ s: r! [2 X
    λt
    6 o9 r9 z5 {( a, W ( S8 y, x( t2 O
    所以可以可到当λ → ∞ \lambda \rightarrow \infinλ→∞时i ( t ) → ∞ i(t) \rightarrow \infini(t)→∞
    $ ^6 J2 V% F' E7 Q% c" S/ z9 K( ~- {当然这是不可能的,因为我们考虑的因素太少了,首先一个是,若有效接触的是病人,则不能使病人数增加,所以必须区分已感染者(病人)和未感染者(健康人)看模型二来解决这个问题
    2 E* u3 S' y8 v% Z) S1 q0 C+ G. g  j5 H& o
    0 ]* D- V' V' \5 j
    模型二
    : [" j5 v# y" c, h假设:$ [# j7 c2 c  P" u( i
    " _- d* M  E! p
    3 ^; p. U- a/ r/ z- S" ?0 \
    将人群分为两类:易感染者(Susceptible,健康人)和已感染者(Infective, 病人).: W# i6 W! r) j: m  Q2 ~5 e6 u
    总人数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# g; i7 t& ]4 ^6 ^4 R1 O) p
    每个病人每天有效接触人数为λ \lambdaλ(日接触率),且使接触的健康人致病.6 _. I4 \# u6 m" |7 k- \0 \+ h+ m
    建模:3 ~4 z4 Z3 P% h$ J3 B* F. A
    每天新增的总人数为原有的人数乘以每个人可以传染的健康的人数,再乘Δ t \Delta tΔt
    . W& J/ X9 q! K: H- v- z5 P3 x# Q) s1 _
    ; W0 Y# d0 W# N* L: a& G

    2 W. |( x4 I$ N8 }Δ t \Delta tΔt除过去,两遍N约分得到下面,/ i$ o6 P5 R  j
    0 Q( L; |, T: z7 V0 E# |( M$ ]

    ' T: U2 L; }* {' U- eMATLAB解一下这个微分方程
    1 S  H/ q- a  x1 ^! G) s7 ^7 Y2 B& n! z4 X3 I. D3 h' q
    4 _9 Q+ Q( J, f
    y=dsolve('Dy=n*y*(1-y)','t');
    0 D7 |' S& x! F8 |: n5 g3 n$ K4 k' [

    ' \  C7 K7 R' Z! i" Xy =
    , M/ e8 i  W, v8 f" w -1/(exp(C1 - n*t) - 1); z+ |2 J# L9 G8 s& C
                          0
    3 ~4 t6 g) H) I; C* p" ?2 V                      1
    ! a/ }  U# Y; H1
    - e, t& P$ N0 O% c8 n3 l2
    + \7 p0 Z4 }) f$ T$ j8 `3
    5 i3 b9 P5 `' Q" k+ x( n4
    . L; v6 {. g+ ]/ D& ~5 g5" h7 n8 n' N0 M- E- R7 a9 o  W" w
    6
    5 j4 I# o! J8 x; X7 A写规范点就是这个函数+ [8 v( R9 Q( H1 w2 ^

    6 R0 i% _" x; _" V& [

    + ~  ~4 t/ U/ U5 Y  R- \函数图像大致为
    0 F! L. n: L: s& p  ?5 d* O3 T9 A% ]( t; ^8 L* _6 t

    + }: i: M7 G  S5 ?, x5 h可以看出t = t m t=t_mt=t 4 `8 I% E- }* q. O" t2 @+ G- G7 h
    m
    ) `4 F$ {5 |3 p9 k/ V1 E​       
    . S' C7 o5 D/ m, h6 v3 D0 ] 时这里图像的斜率有个最大值,其也就是传染的最快的时候,即传染病的高潮时刻,当然t m t_mt
    : E5 L$ `8 n" ?! h: V) Fm! b  A9 y$ ~! B6 A
    ​        9 z8 r( a1 m) |2 y! `
    是可以求出来的. p3 J- N) R  D) z) y" D" H; m. Q
    * [7 G( C) a) D& y+ P7 j5 b: L8 h

    1 V0 l! c& g, w6 C- p再看原式,当t → ∞ t\rightarrow \infint→∞时i → 1 i\rightarrow 1i→1; x4 v7 I& v# u2 d, q
    病人的比例为1,当然这也是不可能的,因为我们还没有考虑有没有可能治愈,看模型三- s' m) B4 O% ?! R! u, ?$ h

    ' H( e: t% w; I: g6 z$ e( Q; e

    , a4 Z/ k; O- ~6 f% y模型三/ X/ x  H3 c2 Q3 S$ m+ `
    假设:
    2 }. @8 S. f% R5 r0 @- j7 F
    2 t+ o/ p3 a9 k( ]& X. Y- V/ E/ p
    , n$ E" a# |6 W( T' `
    传染病无免疫性如伤风、痢疾等——病人治愈成为健康人,健康人可再次被感染。
    0 H9 I, C. H1 f/ \  ^病人每天治愈的比例为μ \muμ (日治愈率),1 μ \frac{1}{\mu}
    5 f: O0 w- q* z! \6 }μ
    2 S1 I0 I  D& K1
    1 r/ }1 x& I  E1 e) e' M​        5 M9 @% c" i: q" d1 {3 K
    为感染期,: w0 a# u: x6 L7 r- u8 v
    模型
    & P9 z% {' q1 x* B这是减去了治愈人数之后的新增人数' u: T/ P+ i4 X! _5 Y. V
    6 X# s  y! o8 V$ S; Y8 L2 b$ ^7 `

    % Q7 {. w/ I0 M1 P  A# P% @( `' x, y" b. ~
    % B/ {+ s# ~9 m8 U, |
    σ \sigmaσ 为一个感染期内每个病人的有效接触人数,称为接触数7 u" {$ l6 L# U

    9 [9 x3 f3 W, V7 L

    4 _) j0 {0 \$ ]9 A2 f. B可以画出上面的图形分析下, p/ D) q" x7 h& m. d

    ! o3 }, I' b3 k
    8 {, a6 J& q% l+ _
    对上面的公式进行分析,可以得到,当i = 1 − 1 σ i=1-\frac{1}{\sigma}i=1−
    6 P% F: q* S& L1 v' e* |6 ^σ
    " D- J2 @. N: ]1' l) ~; X7 Q8 b0 k: A
    ​       
    9 p7 E6 a9 k% }0 z6 j! f 时,i ii对t的导数为0这也就到了i ii的最大值;当0 < i < 1 − 1 σ 0<i<1-\frac{1}{\sigma}0<i<1−
    ' i( f( f& z: {' lσ
    ! a- ~+ K- @5 |1 X3 J) E/ Q% [1
    0 n0 v5 {2 E% {* G+ o​       
    4 v( R4 _3 a+ T# W/ }* ^  s 时,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− " m' d9 p0 R. c* V" G7 V5 ?
    σ3 C! ~$ E) j3 L7 a* g
    1
    - x4 ~' h1 e3 n; @4 x% ?# b​        & ~! b8 L: O9 M7 b. @4 b
    ,d i / d t < 0 di/dt<0di/dt<0,i是单调递减的。8 ?/ k% S8 x- e% {. N8 @
    5 \7 l- u* ^3 ~; R

    ! I" b6 i  d- R. D6 a1 Y+ @当然我们也可以画出i ii随t的函数图像
    9 X  R5 B1 k4 E8 L- o( l2 X
    $ m" K+ X. i; |# O6 }" j( ], ^
    4 m, |4 B: q5 F, o
    先看红线,若初始条件i 0 > 1 − 1 σ i_0>1-\frac{1}{\sigma}i
    - i: I& Y/ |+ F5 R& A7 h) ~/ x+ H/ ^0: B7 z. b& _8 k
    ​       
    & L' h% f: D* a& f, L# ]$ n2 l >1−
    * T) U. u9 `9 K6 l. S( dσ1 F! E- i% N' |# v
    1+ ?( ]0 v- _9 e" n7 }2 Y; ?; n
    ​       
    4 x5 w) z! W& e# P' d  A d i / d t < 0 di/dt<0di/dt<0,i就是单调递减的,
    3 C. }! _% @) }8 v7 Z若若初始条件i 0 < 1 − 1 σ i_0<1-\frac{1}{\sigma}i
    / w" z. s0 P( Z$ ~0: |2 p& m* L  B/ D) O' `1 c. ^( l3 a( M
    ​       
    * x& p# k% v0 J7 `7 c# u' @ <1−
    ! _4 ~8 H% Q3 Mσ
    & K$ r# ?4 m) |* A1
    7 I  t6 L4 K3 z4 w​       
    # i; j' p3 \( b ,i就是递增的,可以看到i对t的导数图像有一个最大值,下面的黑线就有一个增加速率最快的一个值,按S形曲线增长
    0 N! B4 o" \3 k3 v$ X) F2 @$ f3 w  R4 m! i3 b8 L# P! W

    4 K/ Y8 y% V; E; Fσ = < 1 \sigma =<1σ=<1时d i / d t < 0 di/dt<0di/dt<0 i肯定是单调下降的,最终降到0% ~& h8 U% {: e9 P# R9 f$ q: Z

    ( \( M$ d! J% G8 L; N6 V+ @! [* }

    2 Z4 R' O. a: B: g$ N( A0 y) M- N! C: s# v

    ! j( |. H  l: d综上:1 ^$ @  ~% o5 ]" s7 m" q" W3 T
    想让患病者越来越少,σ \sigmaσ必须小于等于1,即感染期内有效接触使健康者感染的人数不超过原有的病人数.
    : ]2 c8 C' Y& F6 {- W. l7 F' P
    8 [: N" E; ?, E7 R
    / B- V/ P0 Q, X2 ?( i5 I# h
    这里我们分析的是感染之后还能感染的情况,但有些病毒感染之后会在体内生成抗体,就不会再被感染了,下面我们分析这种情况。9 E3 Q- U+ u" N, x% [! u
    " ~- R0 j/ A/ b6 Q' u+ u

    $ \+ R( T' E8 K0 `模型四 SIR模型
    & O8 i0 o" w  q/ A8 B, [SIR模型是常见的一种描述传染病传播的数学模型,其基本假设是将人群分为以下三类:
    7 A, y( J, z4 j# e# k( V& I4 w( n% \1 w& Z% G% S

    ) [7 i0 \% X* W0 B# l! g- F) Y1 易感人群(Susceptible):指未得病者,但缺乏免疫能力,与感病者接触后容易受到感染。
    6 S$ H, r2 G3 i# T' P8 u) r* t  o( N0 I) r, x; F

    1 J5 j' v/ D7 f2 Z2 感染人群(Infective):指染上传染病的人,他可以传播给易感人群。/ E- N, b3 i) a% S1 `' _/ V0 t

    * L7 c4 @+ T9 l- j# C

    3 q! k: q6 y8 z5 F7 M4 ^3 移除人群(Removed):被移出系统的人。因病愈(具有免疫力)或死亡的人。这部分人不再参与感染和被感染过程。* ], {. D% e  d& _: U# R
    ( b( b7 @' `% \# D0 x
    * M- B# ^1 v9 y: B
    假设:
    ! c- b& C% o. M' y0 P. K; S
    # v0 S% ?& @9 e- l/ V6 [  `. S

    # W0 t4 ]# T4 P: ^. O& Y. d5 f( t传染病有免疫性如天花、麻疹等——病人治愈后移出感染系统,称移出者(Removed).
    7 @% L2 J9 Y8 E- v6 }: v总人数N不变,健康人、病人和移出者的比例分别为s ( t ) , i ( t ) , r ( t ) s(t), i(t), r(t)s(t),i(t),r(t).
    7 B1 k$ D0 E! C* ?  _病人的日接触率为λ \lambdaλ , 日治愈率为μ \muμ, 接触数 σ = λ μ \sigma=\frac{\lambda}{\mu}σ=
    7 ?, N/ |, B/ ~+ hμ
    # D& j' g& j" \λ+ q8 {9 B( ^- {
    ​       
    9 D) g& h  ]: B9 g) C# L+ o # j! a% w  Y, L. N2 b
    建模:0 Z* r. Y% m" ]2 T8 C
    s ( t ) + i ( t ) + r ( t ) = 1 s(t)+ i(t)+ r(t)=1s(t)+i(t)+r(t)=1
      c) i3 |7 q, ^7 J2 Z这个就是病人减去治愈的人,和上一个模型是一样的8 [% U2 t3 y2 h. G) ^/ T; ~
    , p0 |' @3 P+ c$ H

    1 f, F) Q& g: K& K1 E( Z# B因为有治愈后是有免疫性的,所以可能被感染的总人数要减少,减去移除者就是
    5 \6 X2 T! s4 D/ q8 M) X- I  l" ^! ?6 c1 m7 Z+ H

    ; t; \9 w8 m' T7 x. R9 p  G  J将上式化简为:
    7 n+ |1 n8 d. ^' E$ F' d6 @, Z
    0 ~! @0 i, {1 d

    7 F; x; C. w: N0 @i 0 + s 0 ≈ 1 i_0+s_0\approx 1i % k  T; f4 Q5 g# A' ~$ b
    0" b, G/ f( r8 m! C
    ​        ! Z- f% J& g( ]% w
    +s
    & c, w/ i1 p: r$ W) x0
    * ?+ b0 D. p3 z& f​          [& ~! r  l! X; x8 ]: N
    ≈1(通常r ( 0 ) = r 0 r(0)=r_0r(0)=r - _' v; J9 Z" Z5 A% B2 ^
    0
    1 |+ d! m& H! j​        : N+ F0 G9 v9 I3 T
    很小); `& p2 L; u" B. {' e" T5 c) p
    ) [# C  D( k! |) g

    3 F, b+ |6 g6 g+ f4 L) R: T  q关于i(t) , s(t) 的非线性微分方程组,没有解析解,只能通过数值计算得到s(t), i(t), r(t)的曲线,下面来看下曲线的数值解的MATLAB程序9 a6 Y9 }7 P" ~8 V4 p. `+ m

    6 I5 G8 x, v% B3 H& T( n
    & Q+ U. K7 N( e% @
    这里我们先设λ = 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
    : Y. r4 Z( j- L! t0
    - n1 `6 N7 A- @; D​       
    4 Y  ^5 Y' O* l' H0 a" z =0.01,s
    * T  S6 C! Z- d1 T0
    ) R( o" H) |! a( s​        1 W! w6 C# G3 `3 E/ I  @
    =0.99+ ~: W  o* d8 z- H( `$ A
    也就是平均一个病人人传染一个正常人,治愈率为0.5;开始的病人比例为0.01,正常人为0.99,设没有天生带有病毒抗体的人,所以r 0 = 0 r_0=0r % f  c% z# @3 {
    0
    : O  |9 P* U) v​        : A2 E" e1 S+ ]0 w. N! d
    =0,之后若果病人被治愈,则具有抗体了,有抗体的人为:r = 1 − i − s r=1-i-sr=1−i−s
    7 ]8 l6 a2 J- H2 G
    4 F; @: p3 Y! T  q
    . |+ @$ w' p% S$ y, s8 g% o0 G0 e) S
    ts=0:40;" A$ _4 l: y8 z/ ]
    x0=[0.01, 0.99];6 t/ o/ X1 T# y5 {4 S7 ?, E
    [t,x]=ode45('ill',ts,x0);/ Z5 S& Z9 d/ x
    r=1-x(:,1)-x(:,2);
    ; C& j% P5 i* A: B" nplot(t,x(:,1),t,x(:,2),ts,r),grid
    - v7 H7 U/ o- K0 j- W. B& o8 m: Alegend('i(t)','s(t)','r(t)')& E* U$ L. P( B$ b
    0 R) g4 J" H8 Q2 P

    , d% \* N( j( ^6 y3 F4 y5 Hfunction y=ill( t,x)7 Q. ~! V0 ^# H9 P$ _( B4 [9 {
    a=1;. u! p% f* L; y4 \1 M. t
    b=0.5;
    6 j! h) I: o# D6 z2 Sy=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];7 z& N$ Q. x: U$ z
    10 n. i, [6 }6 r
    2( I) V. c- V6 _1 a% B* V; ^" S
    3- `* ]( l9 W& o" O
    4, l% k  j1 b2 J& c; T: q( ^
    5' Z8 U9 F. I2 _2 @1 Y/ s
    6; d. R9 N# p! p( ^
    7
    : Q8 V" m% F% w8 f' J8
      |1 f# B! Z3 K. F& t$ _9
    4 U- {  D$ X  v10# Y/ f, G" B% `: H5 T8 M
    11  T2 k" k9 S7 G! |
    ! M% P3 |1 Q8 C! J* x
      q% C: T! e# V/ q# y. |- |/ e0 F
    可以看出:s(t)单调减,r(t)单调增,都趋于稳定, i(t)先增后减趋于0.. ~( m& m% E5 p
    结果分析% J/ l( o( h/ n& o& O
    先回顾一下参数  ~- W7 S- M# u6 J
    接 触 率 λ ; 治 愈 率 μ ; 1 / μ   平 均 传 染 期 ( 病 人 治 愈 所 需 平 均 时 间 ) ; σ = λ / μ   接 触 数 ( 感 染 期 内 每 个 病 人 有 效 接 触 人 数 ) 接触率 \lambda;治愈率 \mu ; 1/ \mu~平均传染期 (病人治愈所需平均时间);\sigma =\lambda/\mu~接触数 (感染期内每个病人有效接触人数)接触率λ;治愈率μ;1/μ 平均传染期(病人治愈所需平均时间);σ=λ/μ 接触数(感染期内每个病人有效接触人数)8 P* \" O1 h& N( s/ C* O7 h* P' g
    可以分析出:( }& g- N2 R7 F( W
    7 c$ R! a$ @& E. R* h3 W
    0 r  T2 t4 U1 E0 Q9 m+ p+ B5 `; i
    随着卫生健康思想水平高,接触率λ \lambdaλ变小
    ; F3 V4 J8 e- P3 Y: ]2 @随着医疗水平的提高,治愈率μ \muμ增大
    # U9 O3 D# ?" K+ f& f接触数σ = λ / μ \sigma =\lambda/\muσ=λ/μ减小——有助于控制传播., ~8 P3 M0 }5 ?1 g" M2 Z7 a
    我们可以试试稍微减少一下λ \lambdaλ,增大μ \muμ,来看下效果5 Z/ t5 k3 r/ T3 E

    3 C. P; I- l/ {& M

    , B/ |1 Q* \0 L" P8 bts=0:40;+ C$ e2 z( X. C5 P
    x0=[0.01, 0.99];- Z# ^- I* `& L1 p/ s% G
    [t,x]=ode45('ill',ts,x0);
    " E5 j- F; T& \! g  Fr=1-x(:,1)-x(:,2);
    $ x, T4 E3 V% }" ]/ [plot(t,x(:,1),t,x(:,2),ts,r),grid
    4 H, w6 `2 L2 klegend('i(t)','s(t)','r(t)')
    5 i, H* a% K2 v: t- F& b/ G2 y' R* S  I
    5 H2 F. Z9 n( N
    function y=ill( t,x). a% P& ]% V8 S& n
    a=0.8;" S, D9 H% Y% L0 q8 J
    b=0.6;# z1 \3 f7 [: o* K4 S) e! C' P# \6 \; c
    y=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];
    . A7 O% X" A0 R+ o) {6 |: S11 N+ |( u  c/ H& g/ h+ l0 M( {' @) {
    2
    ' M* D4 ^1 t; l* Y5 I3
    & D1 d! ^# x. ]; p5 {  X6 m  L+ e6 E43 V& W) ]/ X9 m* t* X* _) D
    5
    # J7 ^$ f- s" n- x* j4 d) Z67 V& J8 J! \5 G* a( Z) c
    7
    . r! B3 n/ O- G& a$ j. e1 Q86 `  w* h* g! U
    9; x8 p8 B9 U* k6 `* |; z6 t0 W
    10! z& V' d- q" p) k' H
    11
    ' r! Z! ~) Q( p& y% H2 Z1 @  V* K7 t, G0 j* s3 s' }# z

    1 n) o0 D, B: I9 N3 x0 C综上我们可以得出结论:想要减少传染病的传播,我们就要在接触数σ \sigmaσ上下功夫。
    - F9 F$ x$ Y, v. x! N# |3 U* _# h
    & t! K# ~) \& ~" C( C8 Y( l- I

    1 N' R1 z0 Z  Q& Z% q3 B6 J实战建模0 Y5 U7 l: z! _. [
    数据处理+ m9 e7 z5 o! e) t
    6 A. p0 n- |. @5 R1 g8 k9 R
    + f6 ?: W* [# g! R; J4 i- h3 t3 U- [. v
    首先,我用python爬虫爬取了丁香医生官方数据,一共5534条数据 特征包括感染、死亡、治愈的总数,当日感染、死亡、治愈新增,疑似病例,时间,省份等14个特征. A' Y' U, l7 |. ]' o7 s9 R
    ! S" b+ `1 w  ~
    . J, \$ }2 _9 o1 e7 P

    ) }7 D( n3 n: C4 T  @

    + G  Y& U' d0 N; m5 ~! z& U然后用python进行数据提取,提取了较为典型的湖北省的数据作为我的参考依据
    - n% n) P) [; E7 u# h
    ' b7 W6 [1 b# S9 Y

    ' W1 f  j: v# N9 d; r. c# m7 b* n( y) B8 Y

    1 @- s" n7 p) h, F3 r" u& ]然后用python对数据进行清洗,提取出了患病总数,现存患者总数,死亡总数,治愈总数,时间,省份这几个特征
    . L: x/ k: ?1 ]& d8 e; b2 V8 W* g% Y  a, r/ z# S# k: U5 D

    4 r( L' T+ m* U对日期格式进行修改,值保留月和日,并与死亡人数的位置交换" y( a: ~  D$ c

    * M; i1 K3 r* Y( U: ^

    5 L" Y- f% F7 N/ O4 p这里我用python对提取的四个特征分别进行了数据分析(主要包括计算最值,平均值等,),并把1.20日作为第一天,7.02日作为最后一天也就是第165天,做了可视化可视化处理。
    ) [! C6 ]* s6 p感染人数示意图
    + R0 _4 ]( v$ [1 e+ J& }$ e6 H( G2 S4 C. {/ j+ W
    5 X+ Q( S8 {, o% w5 Y
    治愈人数示意图
    : K+ W8 O, c. k, g* w5 [9 H8 i% X/ X
    2 K* d) T/ H; ^# Q3 V: w% ~9 b9 t
    # a5 x7 d4 t( G5 m
    2 f" D; U# a' O: L" D) R% H7 y
    现存患者数量图
    ' a: ]' O1 w4 [4 E- ~& z6 A4 q8 O$ x8 X  G6 y. Z
    . J' G% r5 |8 F! O; y# c5 C) t
    死亡人数示意图
    ; Z* i3 s$ K  O! g2 E
    * `" P6 C$ E, C  l$ Q* F

    & T/ u4 h) }/ L1 Q& ]& d) ]; @! k
    1 G/ C) U6 [, w! c

    ; m# v" B" I* u& f8 w经过上面的图片与describe数据分析,我们发现有一天是异常的,患者多出了平时的十倍左右,经过查阅资料,这天因加强了检测标准,所以增多了很多。为了避免这个数据的影响我们选择将这一天删去(或者用平均数或中位数代替也可); G/ c' K1 X+ e% q7 t9 B" G8 |
    将上面清理过的数据存放到csv文件中% ^8 w: }% N5 d: m

    + v4 K% r7 _; }! f# Q

    8 V, ^' l8 r( \6 Z模型建立
    8 j/ ^7 I  _+ d* a3 Y* k' ~1 [模型假设3 q" }0 J- c- m) E& T7 _3 M
    经过上面数据的分析,我们大体可以进行如下假设:9 \" |% H& q8 X4 \9 Y7 i' K: _
    1.由于不存在封闭情况,考虑开放体系。
    7 Q/ Z5 H( n0 E. b# a2.目前数据以天为单位发布,因此不考虑连续变化情况,只考虑离散的方程。" d0 x% D$ i& U; d5 D# l
    3.新型冠状病毒的治愈人数和死亡人数相对较 小,因此只考虑 Susceptible(易感)和 Infected(感染) 两类人群。设易感人群总数为N
    2 U, x: L- ^7 ^4.经专家鉴定新冠病毒患者治愈后至少六个月之内不会再被感染,所以设治愈后移出易感人群。
    ' u# u, c0 ~" S# P( E5.设每个病人每天有效接触人数为 λ \lambdaλ(日接触率),且使接触的健康人致病.& |3 O6 n7 B9 S6 {% U
    6.设病人每天治愈的比例为 μ \muμ(日治愈率)
    , O  I9 E: T& ~# r7.时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t).
    ; `" {" c- J2 f9 [" _, N, @, A9 {) k$ J1 b2 n6 Z
    % O4 B  A' H. N" _3 Y9 w6 l, f; ^
    模型一$ m& X: k3 Q" Q! w  q  h

    ; N: q' _/ N4 {# F) `* ~  r

    # c* y+ D- ^7 e9 Q/ ~分析可以得到移出者r(t)=治愈人数+死亡人数
    / T! g& W. D/ U9 O2 V1 \0 Y通过python数据处理,我们算出了r(t)的值,并将其可视化
    5 b7 R- r. d4 R; F) P; L8 G- Q% |. B$ w$ b6 g
    . [+ W, G2 Y2 W8 I

    / |$ H! H. m; j+ }1 v/ i

    , @0 g2 J+ L. ~, _. w1 H我用MATLAB对其进行了拟合,拟合图像为. |; {$ j; n7 ?9 ~; X, B

    . b* h( i* S4 T4 P+ ^
    7 \7 |: Z8 f* m6 W7 X+ q6 Q
    # O$ _" a; |& ]3 ~* Q& B2 e! X

    1 l& N% k$ T7 v+ Z: D- l; x( U( |" |7 q5 u( @7 B
    5 M- n' @! G! J6 h% O* K+ J
    分析可以得到患者 i(t)=患病总数-移出者
    % B5 g# R& I7 H8 y. W8 f" X可以通过csv文件的currentConfirmedCount 直接获得i(t)数据,当然也可以通过 i(t)=confirmedCountv - r(t)获得,对此我也做了可视化展示( A1 |6 P# o- @& y$ e

    ) {$ R' g- o' f4 g2 E4 C8 R
    " x0 ?6 k* I' R# Y
    通过MATLAB程序对其进行拟合,可以得到r(t)的函数图像大致为$ K4 A. }$ o2 I

    , \3 c% X+ A$ h
    4 d8 Y3 L0 y5 k7 d% u* m% y5 b

    ; E2 |8 {) F5 v: F

    5 |$ F) \* K+ F7 M8 E( c9 b: R/ \8 W; u) P3 F6 U* t! j
    ) Q' Y- S- O& {4 ^' R
    为了方便,利于公式推导,我们先设时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t). 所以有
    + R+ c! D  a" _( Y7 ^6 X# M) I5 a8 V% _

    + @$ C% }+ o6 u- ]& {  u可以推导出每日新增病例的表达式; D: ?* v; G; ?/ P
    ! v" ^* z5 A8 ~' {2 T/ o
    + W  d' G8 `+ z: W' j: g* i  }# T
    7 Y) U6 T; m9 i) L

    % Y, j2 S3 K2 X7 z' }' i3 S5 |% z6 Y' r0 h. l/ N

    ' t' H/ ^) {3 `" I# D* X1 \由以上两个公式可以推导出以下两个微分方程
    " _3 \% e2 Z( b
    ) i( \% T: q, n+ _, ~3 A8 H
    ! d4 M- m: C2 I9 l0 R/ m7 l
    ' K& V. T, O' y1 x

    " n, X( w7 Y7 j+ e可以知道初值1 x. ~$ O+ e+ ~  s5 d) r
    i ( 0 ) = i 0 . s ( 0 ) = s 0 i(0)=i_0.s(0)=s_0i(0)=i
    * h5 x' v, R6 N. q' `7 _# G, o0
    + B% }% w( y5 X% @3 p​       
    - ?2 {7 W! P, X' ?: e/ P .s(0)=s ; w- y* \4 W4 K9 z' p! k  Y
    0
    ) ?" g" ~, \5 l- Y​        ( u: k; M. k! K$ @* W

    5 ?# E) B5 R* \( T( b/ u因为一开始治愈的和死亡的肯定很少,所以r0可以看为0,于是就有:
    ; M% m# C$ k/ q3 Ri 0 + s 0 = 1 i_0+s_0=1i
    : B( A& }9 x. a( t$ U0
    + G3 g& {7 C2 }0 p" _​        : q. W; M/ L9 t! L$ R! a/ K
    +s
    / ~- \. Q; Z' T/ x0$ w3 ?/ ^( E# x& P7 O, ]# ^7 q4 {8 e
    ​        0 R7 f5 ?# S9 d* |; m
    =1/ x1 q, N" E; D+ N8 ^3 x
    通过解以上微分方程我们可以根据经验假设λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)的值分别为1和0.5(也就是每个患者可能使1个正常人患病,患者可能有0.5的概率被治愈);由于一开始患者肯定比正常人少很多,所以我们设i0=0.01,s0=0.99。对其求解可以得到s(t), i(t), r(t),的变化图像
    ' f; M  n/ M- p5 u# L# V! M. K
    # c7 V6 {2 q1 s) q# `

    3 ~0 j3 ?, n/ W# ^8 @" w( a2 H- T3 |8 T2 E/ p

    * w/ j$ h! ~% N  c0 b4 ?MATLAB程序如下- m0 m; C: v4 E/ h. a
    ts=0:40;0 [0 l" }8 L. }  z9 T
    x0=[0.01, 0.99];" D! _+ C$ H% q- C" p8 F
    [t,x]=ode45(‘ill’,ts,x0);
    2 E2 e- d5 v% Br=1-x(:,1)-x(:,2);
    7 c! B/ y7 q6 j6 tplot(t,x(:,1),t,x(:,2),ts,r,ts,x(:,1)/x(:,2))
    5 K" i" u/ H, jlegend(‘i(t)’,‘s(t)’,‘r(t)’)
    ) z6 p+ L# }9 b- X6 P2 E* p
    : g9 m- e9 ~! s1 B- S
    ' A8 [' U9 c- S* T$ O, I
    function y=ill( t,x); i; ?% _$ J! g6 G
    a=1;3 L" ?+ v9 y( B" @
    b=0.5;7 o. f* R7 R. R# V, f" ~% v
    y=[ax(1)x(2)-bx(1);-ax(1)*x(2)];
    ) F: ?7 d, D/ @0 \* h. T3 f0 ]' Q2 C7 u

    & Y4 q' u* o( M6 E9 p9 r结果分析:患病人数肯定有个高潮,但之后高潮就会减弱,并逐步降低为0。随着医疗卫生条件的不断提升,患者的 λ \lambdaλ(日接触率)肯定降低,μ \muμ (日治愈率)肯定上升,所以我们可以把λ \lambdaλ调一点为0.8,μ \muμ调高一点为0.6,可以得到以下趋势图。所以应对传染病很关键的一点是我们要提高医疗卫生条件
    ) N: i) _' e) l1 ~! \6 h( K. m- E2 i2 p+ b9 n0 V

    * t6 K2 g9 i& x. r7 F- r
    ' z2 m: @7 S0 ]/ ^9 o; H模型二6 @* N  x, S# U- @

    * ~; x2 p8 C9 Z4 }7 }3 S2 D3 Z

    : D& I& {2 \, e: y6 P+ @8 `实际上,λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)都是随着时间变化的,这里我们设s(t), i(t), r(t) 为第t天健康人、病人、移除者(病愈与死亡之和)的数量, s(t)+ i(t)+r(t)=N..4 z3 N+ `) E6 t; H5 h8 k
    (t), (t) ~第t天感染率, 移除率(治愈率与死亡率之和)/ v3 h+ H# [% Z, G% k3 Y: r
    有 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 |! Y$ W) o0 Q. F+ r1 P1 o, t
    因为s远大于i, r,s(t)视为常数,所以有' O- d# b( g# @! H* S" c
    $ [2 ^! i" K$ Z/ p1 _
    , s' A) ^4 s) F+ J( @

    0 X, l/ ?1 m+ O3 U0 r
    + N8 @8 k2 i0 n5 h$ p5 d6 }4 J, w
    取差分近似导数
    ' }# C$ F. S) K" H. W1 ]1 ]8 Q3 J
    ( M# U. G+ l' ]' ~8 R( w4 N
    5 z% x+ a& V1 x3 ^  {1 t

    8 t6 Y+ {  _, \. }# h我们可以先用真实数据对(t)进行展示并进行拟合
    ; k, o1 U, Z, r- g
      z% R, Z' R4 I8 v9 Q$ _$ r

    % ^% M, x6 W* G: B) C6 V$ h2 @0 O1 `  r1 d) L/ z
    6 z4 j0 V8 `0 Y+ b
    当然同样的方法对(t)进行拟合% i: c/ I/ S% I3 ?3 j3 E' P9 \  g

    ' h# F; t0 J) ]$ n$ u, f) A

    - `- ?/ H4 `+ C  S# J1 |) ?8 @做不出来了,好难,光这些东西就弄了四天,到了数学建模国赛得多难多累啊,哎,让我这个小白手足无措。毕竟还没有正规的培训,这个模型等期末考完试一定好好做做!!!
    ( d* L- x! p3 y* p: J& F+ R冲国奖
    ' ?8 J8 }0 i' L1 Q冲国奖& m0 Y% v, {% P
    冲国奖
    * Y0 _/ K. ?" ~+ ~$ A————————————————7 c3 g7 [5 ]$ ~4 o" Y5 \
    版权声明:本文为CSDN博主「小白不白嘿嘿嘿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    0 Y1 t8 f$ n3 e9 f6 G% Y8 O( q0 }原文链接:https://blog.csdn.net/weixin_45755332/article/details/107094630
    . y. M- M0 H& z. q) o
    % s! y/ D( {4 _5 J' @- t" N9 ~- g% V0 b2 T4 ^4 @
    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-9-24 19:43 , Processed in 0.423275 second(s), 50 queries .

    回顶部