QQ登录

只需要一步,快速开始

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

    ' \- |% B# g! X数学建模之传染病SIR模型(新冠真实数据)
    ) G1 J/ k# a1 ?: S传染病模型的基本问题
    2 r8 z% k# g* [, m描述传染病的传播过程0 ^& x" n) I* e, E
    分析受感染人数的变化规律
    , B( r7 z/ i, k' t预报传染病高潮到来的时刻6 \, _; _# Z, b" d+ v$ x  l& l, Q
    预防传染病蔓延的手段
    2 L  y7 ~# m5 A' v1 i) o3 {按照传播过程的一般规律用机理分析方法建立模型" A4 w# O6 W+ g! s" `
    注:我们这里是介绍数学医学领域中基本的传染病模型。不从医学角度分析各种传染病的特殊机理,按照传播过程的规律建立微分方程模型.
    2 Z( l" y, L" Y' ?8 E- a( Z3 c5 L8 E3 e9 T3 p, d) _
    7 A1 I0 i+ U- l+ L
    建立模型+ {& P% a) e6 w; `% |+ O& w
    模型一# B' |4 q+ z2 T* ^, ^4 s& y
    假设:. j+ Y7 O5 q8 T2 }
      ?3 b0 N) l; B+ n: k
    ( I( J4 `4 x# ]) v
    设已知感染人数为i ( t ) i(t)i(t)(病人数量随时间变化)
      Z0 l- A% M- e! f设每个病人(单位时间)每天有效接触(足以使人治病)人数为λ \lambdaλ
    3 p# F7 u- d0 {7 `; l0 e  i模型:1 n, H3 C, e, E5 s+ ~- I) T6 @7 o
    单位时间Δ t \Delta{t}Δt内,新 增 的 人 数 ( 现 有 − 原 有 ) = 原 有 的 × λ 新增的人数(现有-原有)=原有的 \times \lambda新增的人数(现有−原有)=原有的×λ,即
    6 f8 S( v' d. H4 c' {2 P6 R5 I) j! W$ x- `

    9 _2 B6 D2 c6 @2 m4 Y/ I( Di ( 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( L' J. o/ C( a
    一开始的感染人数为i 0 i_0i
    ) X7 a" l0 S( h5 Q0 ]" o( K( l* z0
    + Q# C" x3 g6 N& o​       
    # E, B! @% ?3 r5 q  g) I ! q( i$ t* K! }7 J
    i ( 0 ) = i 0 i(0)=i_0i(0)=i
    ! u' `: o' q$ M' h) N( c0
    7 k& x3 Y4 S; @1 K" z. s9 E​        # j4 Q2 |  `. H/ V( {: A

    " j# z+ a7 b5 |5 c/ ~+ {解微分方程可以得到
    4 P8 R( M  o; a! X0 c+ p2 [i ( t ) = i 0 e λ t i(t)=i_0e^{\lambda t}i(t)=i , M" I+ P: X: u; Q! D  t. D
    0
    , o' n& O; n6 o3 h​       
    & L( ?8 P$ a+ u" F2 Z5 j) n e 8 G2 r, p0 ]5 k, w  p1 K9 z
    λt* r2 [1 |+ ~$ r6 C! \0 k
    ( ~( U8 S  z/ A1 F8 V, f- W
    所以可以可到当λ → ∞ \lambda \rightarrow \infinλ→∞时i ( t ) → ∞ i(t) \rightarrow \infini(t)→∞  m- _( `# Q3 \/ t
    当然这是不可能的,因为我们考虑的因素太少了,首先一个是,若有效接触的是病人,则不能使病人数增加,所以必须区分已感染者(病人)和未感染者(健康人)看模型二来解决这个问题) g) u' J4 S' j0 U/ z5 G. t8 s
    ( [1 f, c$ N3 ]' v

    ( y- R0 F+ z& v4 V7 g0 Q) J8 M9 A6 m# x4 ?模型二
    * D: X1 V( I. \3 g4 I假设:
    2 l( Z6 m% ~9 H  f9 C) ^3 |$ x& N9 }, l* j; D3 T

    + @8 \2 Y0 D# W. P  ~将人群分为两类:易感染者(Susceptible,健康人)和已感染者(Infective, 病人).
    . f$ V3 y# o, n( ~总人数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* v5 e1 \9 [  G$ G, ?, Z( M* c
    每个病人每天有效接触人数为λ \lambdaλ(日接触率),且使接触的健康人致病.
    5 H2 K+ a0 }* L9 C  b3 i" A$ ^7 p, r建模:
      |1 g2 x2 P( d& v" d. v* M每天新增的总人数为原有的人数乘以每个人可以传染的健康的人数,再乘Δ t \Delta tΔt5 O( t6 N+ r  p1 P# J+ ?

    , W+ u5 Q$ ]" v5 Z
    " {7 r/ D$ g8 a. x
    Δ t \Delta tΔt除过去,两遍N约分得到下面,  z* h5 L5 w. W* x
    3 T. Y& j; N4 Z( O! P( w& y

    + m" H& ^2 O3 e) J- t# o, b* ^MATLAB解一下这个微分方程
    ( {! }* |/ F6 p5 [2 Q+ k
    + x4 m9 s" q  X5 `
    + L8 s8 P6 @2 X  z4 }
    y=dsolve('Dy=n*y*(1-y)','t');/ L3 b( g) p% R6 b2 r

    * s5 B; k3 m* Q

    " [! z' l; R& V2 T$ |1 Ny =
    * W% \$ j9 ]& |8 z. j- ]+ C -1/(exp(C1 - n*t) - 1)
    9 v4 b/ G4 r6 ]3 V- t/ U: l                      00 ], j* ~- G0 ?
                          1
    + |5 g# _7 _% @5 a- j* j1 g' _1' V) q. t- i: ]2 J% f" K3 T  z. A
    2
    ! n+ e4 Z1 x% E7 @# H) i3' H; y( F3 n$ M, U, ?8 R
    4
    % I# L' {3 |" F6 T- }5* V+ y+ H' }; n, ^9 {$ h6 z
    6" z( |6 ~5 Z' N
    写规范点就是这个函数
    3 N8 h1 [8 e9 r9 e' A4 D0 f! n+ b3 u" |2 ?
    : J. P/ O/ d. l* Y9 Z/ F
    函数图像大致为
    " J  f/ X3 `7 |6 S, N) _/ n' g4 O% _5 M0 e0 O8 ?+ }
    ( b. h& F9 H8 A; b7 w8 i5 G2 j
    可以看出t = t m t=t_mt=t
    $ u6 U' y; M6 q8 Ym( S! t& n$ p: s5 n* H7 r- c2 S: {
    ​       
    $ p, q( v' h) k1 s+ X 时这里图像的斜率有个最大值,其也就是传染的最快的时候,即传染病的高潮时刻,当然t m t_mt
    6 J' H4 G: q# l2 I) E( rm
    / v1 @) d2 o  \$ t1 C​        ; z4 i- R7 @# U
    是可以求出来的
    ; H" O* Y5 q1 X! U2 N8 S1 t6 i9 _& O- G

    : \  [$ }5 w! K& T' m0 `6 E5 e再看原式,当t → ∞ t\rightarrow \infint→∞时i → 1 i\rightarrow 1i→1( G  b+ j( B' j/ d7 V( M5 F$ I! `
    病人的比例为1,当然这也是不可能的,因为我们还没有考虑有没有可能治愈,看模型三
    5 k( F$ q4 j# S( J4 |
    4 _9 p4 l2 }9 ?3 b9 D2 B5 a3 D: M
    $ L5 j3 ?+ A0 q8 q! K8 a
    模型三; Z/ ^" X9 H0 _; o" ~6 e! I: C9 T
    假设:
    3 K6 B7 ^! H; o/ ]; `# N' i
    ' ~. ^/ U& X7 m. @( e; V; S
    & Y+ L: y4 M" T; v7 r  m0 D, Y
    传染病无免疫性如伤风、痢疾等——病人治愈成为健康人,健康人可再次被感染。
    $ P3 q6 H9 ?8 L, W" U病人每天治愈的比例为μ \muμ (日治愈率),1 μ \frac{1}{\mu} * W7 Y+ J  V) _6 V! ]- c
    μ
    0 x2 ]3 K, c8 L% p1
    ) @: h# |6 j& S: p​        3 y8 s  m9 p; s" g
    为感染期,5 ~5 A, z! f% l/ L
    模型
    9 T# ~7 }# Y4 F: z9 C这是减去了治愈人数之后的新增人数
    ( K( \" R- F9 i. N6 S5 W/ Z# B+ Q
    . t4 V$ }4 {: w0 d" {: [

    - j4 x' T# L9 L. j# K% ?+ x" i, f
    8 M8 u5 C8 h0 G2 ~( ^% Q
    ) d' U" _8 p% e2 e
    σ \sigmaσ 为一个感染期内每个病人的有效接触人数,称为接触数
    . x( ~- Q7 s3 c9 ]: L! V  c! s) L0 H& d5 w& n* ?7 v
    % j9 ?5 T, L+ p4 f1 _8 k) {/ E
    可以画出上面的图形分析下
    ! }% r  j1 S2 M; y: s* T& B, ]5 l' C& _; r. J7 |6 t
    / _4 _9 R6 w) L. r$ E% u: R
    对上面的公式进行分析,可以得到,当i = 1 − 1 σ i=1-\frac{1}{\sigma}i=1−
    5 |- E5 Z& r1 Q6 s' X6 iσ% m- Z+ ]( o. {  p7 H
    1$ x0 N5 P+ a, [& T8 g
    ​        ) @- ^6 U1 x9 \: g7 z: \( S3 N0 m
    时,i ii对t的导数为0这也就到了i ii的最大值;当0 < i < 1 − 1 σ 0<i<1-\frac{1}{\sigma}0<i<1− 4 w2 N" e* Y8 Z3 F
    σ
    # H6 j  m4 {  F$ `  f, \+ B9 K! n1$ U: o2 t. v+ d; X  `7 A
    ​        2 L# i0 {. [# _5 X6 G- 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−
    ' \6 y: v/ R+ z' p2 Q& t: t/ pσ+ t5 d: S" U8 A' d
    1
    * r( u) b, E& t​       
    - @7 W% A  W' i9 O ,d i / d t < 0 di/dt<0di/dt<0,i是单调递减的。
    8 e! P4 d; n9 o! e: i
    ! B  q( d5 j- K/ E: G

    : d' K4 I8 H8 Y8 d当然我们也可以画出i ii随t的函数图像3 L: K) n9 W- B3 i) G( L8 a0 a
    + b! D. P, K( Z/ Y, ^0 ?! ^
    / Q3 R$ _+ j: M. H0 B- L% K
    先看红线,若初始条件i 0 > 1 − 1 σ i_0>1-\frac{1}{\sigma}i 3 K: b' g. b+ D
    0: V; p% g2 h: [3 r/ o
    ​        - h" v* P  Y5 _: [- n9 @0 A" q
    >1−   s5 E4 q) ^$ Q3 h8 W
    σ: l3 J* Z% K) m' n' o
    1% c' o9 R+ s$ s7 C% Y- F; u8 X
    ​       
    : R; @$ u; r* q, M& C/ U) q7 s* } d i / d t < 0 di/dt<0di/dt<0,i就是单调递减的,
    - E7 V% o4 Y8 P若若初始条件i 0 < 1 − 1 σ i_0<1-\frac{1}{\sigma}i . G# O3 G+ _$ M. [
    0
    9 a; I% K& k& q! f' S- A​        9 @0 v8 I+ y) Q. D
    <1− 5 V" [. x, b5 {" c: U* Q
    σ
    % m8 W0 i' Y2 s4 U5 f) R$ B, V! J* y17 @' P2 R6 _6 {0 [5 _" o
    ​       
    2 L! y3 H0 v* c8 m, R( K( H) M ,i就是递增的,可以看到i对t的导数图像有一个最大值,下面的黑线就有一个增加速率最快的一个值,按S形曲线增长9 w% N& ]. o  R. v; a
    % l0 f1 T( M' S6 N
    ( z2 B+ l& i) y! G
    σ = < 1 \sigma =<1σ=<1时d i / d t < 0 di/dt<0di/dt<0 i肯定是单调下降的,最终降到0
    " {: Y# i4 Y1 X/ J* T1 R  c  {& K5 E. |  g4 q

    ' t; e& t' c; l$ p- s" V1 b& Y0 R
    ) z+ [4 N2 V( a- R
    综上:) d) H1 _# e; a( g
    想让患病者越来越少,σ \sigmaσ必须小于等于1,即感染期内有效接触使健康者感染的人数不超过原有的病人数.
    0 d9 k( T' U! B- W$ l! H+ g+ e& [9 k8 V3 f

    1 {1 b+ g! ~, \( Q$ w! ^) @这里我们分析的是感染之后还能感染的情况,但有些病毒感染之后会在体内生成抗体,就不会再被感染了,下面我们分析这种情况。4 {  h% U; Y% b+ f6 a- l
    " Q6 R" J1 X5 i+ n& ]
    * E. H" ?+ w* J' D6 i- L
    模型四 SIR模型
    - q! f/ k8 I9 j; V: z1 hSIR模型是常见的一种描述传染病传播的数学模型,其基本假设是将人群分为以下三类:& @+ [# Z8 U- `3 R  B1 c! ?3 n- S

      R* x' X. U; Q  w( G

    * s4 a" q) \8 g' d9 c4 W8 @1 易感人群(Susceptible):指未得病者,但缺乏免疫能力,与感病者接触后容易受到感染。
      Q0 s3 S9 ]$ U' l4 ~7 m# \& H( j8 H! W& Z% @3 f1 K" a& L; x
    0 M2 l- o8 d* c0 y
    2 感染人群(Infective):指染上传染病的人,他可以传播给易感人群。
    " _) }! Q; J$ {: N- r' y- ?' T5 H( }7 S2 ~4 `5 {3 X# a0 z6 b
    ( ^" r; a" S( B8 r1 E
    3 移除人群(Removed):被移出系统的人。因病愈(具有免疫力)或死亡的人。这部分人不再参与感染和被感染过程。
    : k: D" h* N; a9 p1 b* |  G5 }5 `. L+ o

    * B' ^+ T$ k' k4 ^. j- M0 P假设:) s+ A, ^. R8 g, w3 i
    : C: s+ ^  ~2 S' B: T; d
    - s% O, E' r+ G# @; ]
    传染病有免疫性如天花、麻疹等——病人治愈后移出感染系统,称移出者(Removed).2 w: v" |5 B# H) C2 G! Q
    总人数N不变,健康人、病人和移出者的比例分别为s ( t ) , i ( t ) , r ( t ) s(t), i(t), r(t)s(t),i(t),r(t).
    1 r2 z9 j( }- `" I8 ?( M1 D病人的日接触率为λ \lambdaλ , 日治愈率为μ \muμ, 接触数 σ = λ μ \sigma=\frac{\lambda}{\mu}σ= 0 ?: {4 l4 ]. O/ U
    μ
    6 _4 ?. y0 Z; J2 W# d2 o8 s( pλ+ ]. S) b. u& m% V) X6 y- T
    ​        9 h7 H. i( I" `4 p  I  G8 @

    " w3 j4 F) K! i* {# e( k建模:
    / k/ I$ _3 ]% l; t! ms ( t ) + i ( t ) + r ( t ) = 1 s(t)+ i(t)+ r(t)=1s(t)+i(t)+r(t)=1+ }4 g' }, h- s2 w' k9 \9 j5 g0 X
    这个就是病人减去治愈的人,和上一个模型是一样的
    ) r5 E' r4 \- t, g/ K# s: @3 d+ z9 F
    : F, w. C/ p' _2 X

    9 L, a: f6 ~4 k( v0 M' ~; Z因为有治愈后是有免疫性的,所以可能被感染的总人数要减少,减去移除者就是
    2 U+ n: x  z- p1 Q8 O5 \( ?
    1 t5 J4 G" \; c! j' X
    : c4 i6 E& S' p! n  N
    将上式化简为:1 D8 c' x- B. T7 n( k: o

    $ z- g( R  n3 b, i0 X- x; p
    8 N& d( a7 v4 Y( \( T
    i 0 + s 0 ≈ 1 i_0+s_0\approx 1i ( o: w3 o  }. P% q) \# k6 d. x
    0
    . J6 |1 }& K) W3 i" T9 \​        . v+ \8 ~' c+ A0 {7 b& a
    +s
    ! d' F! G- o$ V+ z' J# {- I4 F  i: R07 ~& X% g. m( V% _
    ​       
    4 ^. @' C& N, s% G7 y; o1 K ≈1(通常r ( 0 ) = r 0 r(0)=r_0r(0)=r 0 C. R4 R% i+ V6 F* ~" |
    0
    3 _. h& T' W; ~: W. I& O* L/ B9 T​        # E4 T, b" f. s6 M9 J
    很小)
    5 x7 l( O2 n$ S  a* R& c- R  {9 j  m, {/ b* V9 @! c2 e) Z

    * j4 y8 S  \& _& J& ]' f7 j关于i(t) , s(t) 的非线性微分方程组,没有解析解,只能通过数值计算得到s(t), i(t), r(t)的曲线,下面来看下曲线的数值解的MATLAB程序% T2 L6 w. o- u2 g; A5 u

    ' ^. V) V1 J/ c" F8 s3 X/ c
    2 X: P2 x3 o) b6 ^, ?% c0 Z# k
    这里我们先设λ = 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 4 ]" r) w- ?! G" y1 w- q
    07 J8 u. ~" H) o& M7 ]
    ​        % P5 V& O7 D0 H2 V1 E. Z
    =0.01,s
    1 K' `$ F4 [, r3 T5 a9 j$ H1 Q0
      c* c! j1 |$ O) _: Y​       
    6 A9 [! q0 j/ r' s* ?4 N3 S =0.990 x: ^2 O( O# I
    也就是平均一个病人人传染一个正常人,治愈率为0.5;开始的病人比例为0.01,正常人为0.99,设没有天生带有病毒抗体的人,所以r 0 = 0 r_0=0r
    . d1 I/ T1 w0 H0
    5 h0 S! }; k% x: |5 x4 @( Q, g3 l​        4 j5 e5 `$ t$ j9 S% f6 }# W$ X5 E
    =0,之后若果病人被治愈,则具有抗体了,有抗体的人为:r = 1 − i − s r=1-i-sr=1−i−s/ m* ?/ @7 E$ J1 }7 c
    / I2 ?, y+ J0 Q) t( a: n: l- G4 e- b6 K

    & Q+ n: c6 U: [4 ~7 Kts=0:40;
    6 w( e8 k+ D2 _. h( W( Z& Xx0=[0.01, 0.99];
    7 [+ n; k8 W0 b+ O1 ~6 R% i; Z[t,x]=ode45('ill',ts,x0);
    + h3 z- u& P; J% d7 I& e4 @r=1-x(:,1)-x(:,2);
    " p- T' F* B. Z# Lplot(t,x(:,1),t,x(:,2),ts,r),grid
    : l! e2 t$ f) ]legend('i(t)','s(t)','r(t)')
    8 p; i  G, A0 s5 O; U5 N  @
    7 F% @: w% q2 R/ w5 x
    # B# A. T2 X$ q7 \: [, z5 J
    function y=ill( t,x)
    * @0 d5 j5 c  ua=1;, C7 G3 S6 y  o9 f9 x" a
    b=0.5;
    / [! N) Y) c; r# f0 G3 gy=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];- U. Z8 u5 v. Y5 T2 p1 R
    1$ m. J: R8 `& j
    26 e4 F$ I/ T; v- _/ n8 V
    3* }0 {' [' y1 ~9 `7 w0 _
    4
    - C$ ^  q- v9 `" |0 u5
    " A; v/ p$ {% x$ m+ ~* B6/ Z: w7 T( M7 X7 Q; N2 a
    7' ]- b4 B: [3 j2 J( U
    8* X, M) H9 h: g! j0 ?
    9- ?& U' G- }3 ]5 T
    10. `- ?) X; b7 M# Q) G& g
    11/ j' K3 t5 q3 X! a& o, U  `% W

    $ ^0 w- P+ m+ r% `: _' B
    " x. Z! a% u/ T
    可以看出:s(t)单调减,r(t)单调增,都趋于稳定, i(t)先增后减趋于0.7 n9 A5 z- e6 k* ]! k
    结果分析
    ' ]; }7 r+ h4 m1 }1 c先回顾一下参数
    - ]$ q' Q% u0 T, b- X  `接 触 率 λ ; 治 愈 率 μ ; 1 / μ   平 均 传 染 期 ( 病 人 治 愈 所 需 平 均 时 间 ) ; σ = λ / μ   接 触 数 ( 感 染 期 内 每 个 病 人 有 效 接 触 人 数 ) 接触率 \lambda;治愈率 \mu ; 1/ \mu~平均传染期 (病人治愈所需平均时间);\sigma =\lambda/\mu~接触数 (感染期内每个病人有效接触人数)接触率λ;治愈率μ;1/μ 平均传染期(病人治愈所需平均时间);σ=λ/μ 接触数(感染期内每个病人有效接触人数)0 L- d9 N5 g9 H; E6 y
    可以分析出:
    : a# Q1 ~( ^5 @3 o
    ) ?4 w2 ^" S3 V- |

    . Q, U7 d5 L0 L& b7 b5 r随着卫生健康思想水平高,接触率λ \lambdaλ变小6 P( o" D" r/ s
    随着医疗水平的提高,治愈率μ \muμ增大: ^) `# f, p8 U& H6 v" d, c' c4 J) Z
    接触数σ = λ / μ \sigma =\lambda/\muσ=λ/μ减小——有助于控制传播.
    % L* Y1 h' J4 I6 x& W% B% s1 h1 {1 M我们可以试试稍微减少一下λ \lambdaλ,增大μ \muμ,来看下效果0 X+ k2 \! C1 [) D0 ^0 v5 \. E

      L$ I: s( q. Y8 @
    3 o( w( z0 j6 H, Q2 n6 s
    ts=0:40;
    + R/ ~9 h" A5 t3 N9 J$ H' b$ Yx0=[0.01, 0.99];6 o. ?/ u9 l& D" _) m5 |% k
    [t,x]=ode45('ill',ts,x0);# ^  U, J! O- Z" |
    r=1-x(:,1)-x(:,2);2 S% G$ z% I: _: f4 J" g& Q: |
    plot(t,x(:,1),t,x(:,2),ts,r),grid
    0 G3 a1 h, S8 a, M; W1 T& X2 o& ilegend('i(t)','s(t)','r(t)')  f7 u+ ?! K& i/ a7 E6 k/ @
    : V. D) u' q( L( D

    3 g; X, u0 @: ^  V7 sfunction y=ill( t,x)
    1 T% c1 L7 C0 z0 M% @; s9 Qa=0.8;$ d0 E3 D: y; @* _
    b=0.6;
    # D) C; u( n" L2 }* ay=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];
    ; ~. \2 |$ {8 f1( z5 S  q& K. a" }6 c4 H0 C  s- U  X
    2
    + _) P3 f0 b, l1 L3; x1 W) [) J4 A* A( ?5 s: `8 N! }* H
    4* E# _) A8 o8 P6 `) I& v9 }3 n" o* ]
    5
    : r$ t  b0 }' `! U6
    " I; e% }+ D* F- |) T1 w  ?70 |4 w4 o, C. A0 {
    89 W4 \& a5 {) f" t, ^  Q) u3 j
    97 R: w- C7 C, l! E" P
    10
    0 y( s% A/ c+ w& u11
    ; [. |" M7 c" M+ V: f. j' [6 T# T" B, i2 `/ ^

    9 [  I5 h$ w& @$ r. T; r) x综上我们可以得出结论:想要减少传染病的传播,我们就要在接触数σ \sigmaσ上下功夫。
    , P9 P% T& L( L( n$ f
    $ S, [# D/ [5 s" S/ K
    4 q, K  f1 P7 J$ K1 |# O  c# F9 R
    实战建模
    ; U8 r3 F* v: U% M+ s4 V数据处理
    3 S" D% ^* B7 x% V' P1 \
      W& s  b7 f# L- k9 t

    0 w4 V5 n, R7 P) _3 ]2 K, w首先,我用python爬虫爬取了丁香医生官方数据,一共5534条数据 特征包括感染、死亡、治愈的总数,当日感染、死亡、治愈新增,疑似病例,时间,省份等14个特征
    0 a! F( F: X5 f
    / h' @5 p# @5 J% {8 _" }
    1 }2 H7 o/ V* F& m

    # w, }  G) {4 q  v, l

    / W% p, `7 ^1 y0 l6 e然后用python进行数据提取,提取了较为典型的湖北省的数据作为我的参考依据
    ( U8 z5 O: N  H* k) ?6 I8 V7 `; \3 Y8 f" A; ]* ~
    $ p, `8 N! {0 U$ X4 N% D( V: P; y

    : ?4 m4 L) X' }+ f

    ( `" T& @$ r& o* A: I7 ^2 |$ t然后用python对数据进行清洗,提取出了患病总数,现存患者总数,死亡总数,治愈总数,时间,省份这几个特征# M3 }0 d$ M* l, n& t* [0 x! i( U

    ! U7 j! s3 Z! p% c3 @

    4 Q- H5 ]1 r9 t; M- {  C' x+ S对日期格式进行修改,值保留月和日,并与死亡人数的位置交换1 Y" M$ l, ^/ h3 O9 V9 J& N  L! f: ?

    6 L7 }; q! S" i) a

    " _& `  [. K3 O% ~这里我用python对提取的四个特征分别进行了数据分析(主要包括计算最值,平均值等,),并把1.20日作为第一天,7.02日作为最后一天也就是第165天,做了可视化可视化处理。! m% B5 t# b% ~. u" w- S$ D: v3 i
    感染人数示意图. A& u9 F! m5 p. f& D4 `
    , l- q" B* y8 A% i. {

    5 H1 G$ @: |& L* e. K) ?3 U" w5 ~' _* ]治愈人数示意图
    + R+ ^4 u6 A) E& K9 z+ u/ l0 D9 T: k. t$ V8 [# y' q
    9 M8 r& h# A9 z  M* t" K- |  t3 e
    : u$ N, G; r' ]2 B, e# L- R2 ]
    $ Q- M0 Q) d$ {5 {) k
    现存患者数量图: z9 u/ t) g9 D
    ! @" G* J  X6 I$ q8 q+ d

    5 r5 v; H3 J# D0 w; {: a8 S' G. ?死亡人数示意图
    " c  o7 Y  N5 q/ v2 j( P+ B! b; o& e& t3 P; U" ?) _
    9 v* X2 {' L8 S
    ' f8 @4 C/ `6 V5 W6 k0 L

    8 s! w9 t$ L9 v, E; L( D* w  P经过上面的图片与describe数据分析,我们发现有一天是异常的,患者多出了平时的十倍左右,经过查阅资料,这天因加强了检测标准,所以增多了很多。为了避免这个数据的影响我们选择将这一天删去(或者用平均数或中位数代替也可)- m! o+ {5 }3 m8 E& u- X* _. D$ V
    将上面清理过的数据存放到csv文件中
    5 }+ e, V) I; N3 G: q/ P6 r0 S3 k; Q1 a

    0 u) k3 O1 h9 m! V1 s. |9 O模型建立
    ( r/ b6 b- j' `: |模型假设
    2 d0 I9 ^' n  R( E8 U( F8 `经过上面数据的分析,我们大体可以进行如下假设:
    $ Z! w; O7 e$ K; y1.由于不存在封闭情况,考虑开放体系。. W& u0 V' U! O  v2 @
    2.目前数据以天为单位发布,因此不考虑连续变化情况,只考虑离散的方程。
    3 E: H+ K% W% z7 d' x3.新型冠状病毒的治愈人数和死亡人数相对较 小,因此只考虑 Susceptible(易感)和 Infected(感染) 两类人群。设易感人群总数为N
      g- G- O! i2 X5 v4.经专家鉴定新冠病毒患者治愈后至少六个月之内不会再被感染,所以设治愈后移出易感人群。6 }( q% x1 B# D* T' j; ?
    5.设每个病人每天有效接触人数为 λ \lambdaλ(日接触率),且使接触的健康人致病.
    * G/ C8 ]* D( \7 u: s7 u6.设病人每天治愈的比例为 μ \muμ(日治愈率)4 A  T  F6 J$ }+ c8 Y
    7.时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t).
    6 J' ]" s6 Q: C
    6 }, A1 f8 C6 z) t: ]

    6 t& Q7 r/ e$ Y模型一
    " g; Q- e+ O# z( [: J  V4 [0 x* d4 h! J1 f1 ?% d
    ! w8 R% Q8 V! ]
    分析可以得到移出者r(t)=治愈人数+死亡人数' r8 Z0 Z9 k" C
    通过python数据处理,我们算出了r(t)的值,并将其可视化- U% O: ]" e, j% S2 P: O
    $ X/ f& n3 J0 [* E, {8 }* ^0 h

      n9 g$ F- O1 L) G7 R$ w
    7 N0 _! L4 O/ T( v6 g0 ~

    # v7 J" u0 [! u我用MATLAB对其进行了拟合,拟合图像为
    9 M+ o5 g4 h2 ]. ~
    + g& j0 P* M5 d7 c1 K0 ]
    9 _2 ]; L- n! p4 a2 g; |8 i4 {
    3 F7 `( L$ i* u* E- \# L
    / v: z8 B. J6 Q6 P

    1 V: A. ?. a2 q+ ]/ [1 `! M
    . ], d4 D' Y; x8 Z+ ^# L. L
    分析可以得到患者 i(t)=患病总数-移出者9 B9 [7 s- s, ?6 g6 _
    可以通过csv文件的currentConfirmedCount 直接获得i(t)数据,当然也可以通过 i(t)=confirmedCountv - r(t)获得,对此我也做了可视化展示
    ) w% Y* F8 k! B$ i1 Z
    2 u  ]( ?9 W' E5 C' ^0 q7 Q

    6 ]" ~2 P$ x$ I8 ~* g9 Y$ j通过MATLAB程序对其进行拟合,可以得到r(t)的函数图像大致为: l- ?  g8 \  t
    . @$ [$ h7 q  S9 ?+ U: Y! h

    ! P1 K0 ^, w& c* q' A
    7 _2 i: l* V. b* M) R: o1 |

    # W3 D3 g  @. d; I' E% P$ N9 e5 l+ _: P' I: L

    " Y! v1 |1 U& }5 ^* W4 n为了方便,利于公式推导,我们先设时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t). 所以有8 y1 |! z! g4 ~2 d

    / g. `' p4 |" A$ W3 F+ S  @; u' w

    " x  k; E/ A. ?3 P2 I可以推导出每日新增病例的表达式: n. Z5 h* b5 c% t* }9 o

    9 P5 |/ h; }  A: z1 m8 l. s) @
    4 `  H1 h$ {& X9 w

    ( B# |7 p+ @$ ?) F/ Y. v
    . C! P8 q+ J. \: a# ]8 W4 Q

      x1 F; i' M# D7 F4 f

    * v. ?# H( v9 z  U由以上两个公式可以推导出以下两个微分方程
    0 x8 X! O0 o. j2 E$ [9 m6 k& D8 h2 x1 p1 M3 e
    ! A2 [7 I0 I: M
      n2 g* X$ G* a& H

    7 O# Z7 K& e$ D. h" c8 T* ^# S可以知道初值
    ( l' W0 L& J5 ]' V) _i ( 0 ) = i 0 . s ( 0 ) = s 0 i(0)=i_0.s(0)=s_0i(0)=i ; O+ K% H4 S: U  W! m$ `/ M# G$ c" R
    0
    * [$ A  z6 I6 G  H; S​       
    # H% [. Y& h9 N; p2 i3 c+ o% [ .s(0)=s
    , M5 _5 i4 q8 v" X0
    4 \2 U/ E/ H! _/ [​       
    8 M2 W/ d* a" h. s0 P# G
    # d7 Y) N4 |2 L# {" q& T因为一开始治愈的和死亡的肯定很少,所以r0可以看为0,于是就有:1 |6 c; A; R$ P6 T
    i 0 + s 0 = 1 i_0+s_0=1i , T; y2 h6 R" t/ z
    0) r8 S5 ^- P* m" P& q1 ~
    ​        . w. K0 ~, t% U7 D) t, D
    +s
    / e/ _% `/ ?- p! ]- |02 B7 j& x3 ~# _
    ​       
    1 n. l; Y9 e; A: _4 V  X =11 ?  \7 A: `- n& ]2 i
    通过解以上微分方程我们可以根据经验假设λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)的值分别为1和0.5(也就是每个患者可能使1个正常人患病,患者可能有0.5的概率被治愈);由于一开始患者肯定比正常人少很多,所以我们设i0=0.01,s0=0.99。对其求解可以得到s(t), i(t), r(t),的变化图像
    6 x9 h- T5 `% I. D5 k2 `+ e3 c8 C1 m

    ' t3 S/ c; s2 D1 w
    , v8 T! y/ H+ g8 a

    . k- Y( u1 G* c! U$ Q9 L) XMATLAB程序如下3 V; [! t) n0 Z$ o/ Y0 m7 D
    ts=0:40;3 x4 s: }- V1 ]
    x0=[0.01, 0.99];$ {7 R3 a( S8 C4 |; P
    [t,x]=ode45(‘ill’,ts,x0);& [8 A' l2 i- m3 @* F9 e( i; d0 }
    r=1-x(:,1)-x(:,2);
    / u! y; `' `, ]6 Z7 W' u3 ]( Wplot(t,x(:,1),t,x(:,2),ts,r,ts,x(:,1)/x(:,2))/ [9 E5 a1 ]. W, X8 g. J$ i0 O# o
    legend(‘i(t)’,‘s(t)’,‘r(t)’)
    . ~' Q9 N2 O& [9 k. n) A
    : l. s6 [6 w6 K- {3 K5 Y
    + M, x9 U: v  Q; e- l
    function y=ill( t,x)' _$ ~: I( j- m8 U( Z1 ?
    a=1;
    $ W, p# ~3 d& b7 \: F; Gb=0.5;- ^# c# |3 T7 g! v
    y=[ax(1)x(2)-bx(1);-ax(1)*x(2)];
    & w4 Q. p! z1 I$ v
    / f4 s/ u9 l. w

    8 l7 Q1 ~* V) n+ s8 P. t# R' R结果分析:患病人数肯定有个高潮,但之后高潮就会减弱,并逐步降低为0。随着医疗卫生条件的不断提升,患者的 λ \lambdaλ(日接触率)肯定降低,μ \muμ (日治愈率)肯定上升,所以我们可以把λ \lambdaλ调一点为0.8,μ \muμ调高一点为0.6,可以得到以下趋势图。所以应对传染病很关键的一点是我们要提高医疗卫生条件/ b$ S# C5 ^6 j/ }0 ~/ ]9 O. C

    * O$ }/ k  _' A- l3 T- q' q. Q
    ' t/ M8 i/ C7 u

    % L9 y  m, x/ m! t; f2 Y' _9 B模型二
    - ^9 i; x% M/ b. ^' e3 @" A) L+ l; O* I

    $ [0 x9 Z( Q9 {9 |$ z: T+ w实际上,λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)都是随着时间变化的,这里我们设s(t), i(t), r(t) 为第t天健康人、病人、移除者(病愈与死亡之和)的数量, s(t)+ i(t)+r(t)=N..9 @$ H; A' h# N# D; }- l
    (t), (t) ~第t天感染率, 移除率(治愈率与死亡率之和)6 M7 w5 M+ B% a) N: j7 m0 A" I/ G; 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)
      m: h2 a% S$ x9 C- }. f1 D因为s远大于i, r,s(t)视为常数,所以有8 i: [# W2 R! I# `* O

    " c& ^# O1 ^  T5 g& J2 a: B! D: K

    . I/ b! S9 J% x# q4 z4 _& w- Y# E6 w8 a( M) V

    ; O  K9 ?* }. R. U- k* k% o取差分近似导数
    - O. u( D$ J* G' c  m% [! W9 w1 a# x. x7 Z
    ( `. k. K2 }# Y2 W/ E6 C9 ?

    5 t9 f( Y1 j  p
    " y5 M2 k( Y, q: T5 w3 j
    我们可以先用真实数据对(t)进行展示并进行拟合$ a+ X6 C" f  t9 b, F
    0 T+ O7 k7 f+ ~+ z3 ?6 W( G  x$ q" z
    / s$ T  w8 C# S( B- y

    + A7 t2 l* ?1 P2 T+ @' R" o

    ) R! m5 V. g5 `8 N! z当然同样的方法对(t)进行拟合
      k' }" D- ~0 b: W' N/ T& q: ]7 U7 O2 `9 J

    9 B; F% A8 R1 L! h' j- c做不出来了,好难,光这些东西就弄了四天,到了数学建模国赛得多难多累啊,哎,让我这个小白手足无措。毕竟还没有正规的培训,这个模型等期末考完试一定好好做做!!!% e, y$ \4 Y, N8 d1 \
    冲国奖2 P3 g6 n6 ?3 C6 `# z( {
    冲国奖
    + C0 l) z  k9 o% E4 I6 K% x8 L$ R冲国奖$ O* ^7 c, f0 N2 Y, W
    ————————————————- y9 ~3 R  q" e8 b) `) K5 n
    版权声明:本文为CSDN博主「小白不白嘿嘿嘿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    ; K6 y- O* `/ P* P3 n. {原文链接:https://blog.csdn.net/weixin_45755332/article/details/107094630
    ! b9 h5 P( @3 r( r2 S! y4 a, n+ l+ B; G9 E! E

    % v, J  w! P5 f# J! I0 _6 n
    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 10:07 , Processed in 0.433702 second(s), 51 queries .

    回顶部