QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5616|回复: 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
    3 f/ v, x- F* P
    数学建模之传染病SIR模型(新冠真实数据)
    7 ]4 _( R$ L2 q0 J! i传染病模型的基本问题
    . R0 z! n5 O4 P" F0 e: i( [) ~描述传染病的传播过程4 ]* _5 V4 _% W+ T+ N! A
    分析受感染人数的变化规律
    ! V  ~% y5 t: j( Q预报传染病高潮到来的时刻
    " j6 `% P" [7 d- _预防传染病蔓延的手段/ d; M+ B- d2 a) s  I% r- z2 f% C
    按照传播过程的一般规律用机理分析方法建立模型
    # S, T; H$ M$ K: `' m: X5 k* t* @注:我们这里是介绍数学医学领域中基本的传染病模型。不从医学角度分析各种传染病的特殊机理,按照传播过程的规律建立微分方程模型." A% K! x3 {! k% Q3 u) U1 e
    * v; s( x8 P- r+ c: |, G# m0 [
    0 S) }+ l* P: p1 A) e! z
    建立模型
      a) n0 O, f/ i1 H& n8 n模型一
    3 T3 s) T9 {/ {2 @: y" h- }假设:% c: N& Y7 x4 l. W3 Y3 C! V
    : n" r7 J4 Q; j

    & p4 r; @: {0 `5 k3 J& D设已知感染人数为i ( t ) i(t)i(t)(病人数量随时间变化). f$ {4 _0 W, |, R: k
    设每个病人(单位时间)每天有效接触(足以使人治病)人数为λ \lambdaλ
    " H3 [; G, M  Q% N模型:
    ' G" S9 s2 a1 a$ c& J6 F单位时间Δ t \Delta{t}Δt内,新 增 的 人 数 ( 现 有 − 原 有 ) = 原 有 的 × λ 新增的人数(现有-原有)=原有的 \times \lambda新增的人数(现有−原有)=原有的×λ,即# J4 s/ I% e5 C  V
    8 \1 G  v2 C8 ^* R8 H% ?$ a! G/ _

    6 @8 h2 l9 j+ {0 h; Ti ( 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$ `- y2 @  _% ^2 }' k6 \- R8 Y* w
    一开始的感染人数为i 0 i_0i
    9 `% E: C# e$ h6 ?9 ~' S0
    ! D3 n2 i( v! T6 u; b( O​       
    2 S5 z# F6 d* }7 r! |( y5 b3 X
    : h' h" g0 r) Z/ D& fi ( 0 ) = i 0 i(0)=i_0i(0)=i - R# t5 K" r: }& g
    0
    $ M2 @7 c  }  T# g' l* K​        ' c0 y2 P) b) X) U- _$ `. o

    ! a7 ^' [: ]" R: F( t$ S0 r解微分方程可以得到
    # g  Q( o2 e* y# ri ( t ) = i 0 e λ t i(t)=i_0e^{\lambda t}i(t)=i 2 q. C- G1 B; A9 O& q/ ?
    0; q1 t- s  [" h$ J. q
    ​       
    # I! q# X( S; ^) I; W$ O4 l e * P$ q7 C4 n1 I5 V1 T
    λt
    % n# Z" C$ _: U9 e( m( @
    4 g! b2 V- N8 _所以可以可到当λ → ∞ \lambda \rightarrow \infinλ→∞时i ( t ) → ∞ i(t) \rightarrow \infini(t)→∞
    " @, Q" D4 R8 G4 W* a7 z当然这是不可能的,因为我们考虑的因素太少了,首先一个是,若有效接触的是病人,则不能使病人数增加,所以必须区分已感染者(病人)和未感染者(健康人)看模型二来解决这个问题7 }5 ]0 @7 ~- j/ ~% z0 D$ a
    ( d4 l/ @& i7 |3 v: O0 s: K4 V
    & Y2 W- H5 L2 r/ y5 W
    模型二; ~5 `/ h6 l7 J( K1 z+ [$ ?8 E+ J2 A7 X
    假设:
    ) d$ y( M, z( i" {3 ?# I6 R3 X. D8 A) X" L0 c- C. ^; R3 {1 D
    ! u- W& O, U/ P2 G5 E
    将人群分为两类:易感染者(Susceptible,健康人)和已感染者(Infective, 病人).6 |( ]/ }4 f; t
    总人数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: t, q$ i# j, T
    每个病人每天有效接触人数为λ \lambdaλ(日接触率),且使接触的健康人致病.
    0 O. \  L3 W* I2 O( a建模:0 \5 V- ?9 i  X
    每天新增的总人数为原有的人数乘以每个人可以传染的健康的人数,再乘Δ t \Delta tΔt1 M- c: y: g& N
    + f1 @' r, o$ ^' |

    " @% Z. v6 B/ d$ R- _+ `Δ t \Delta tΔt除过去,两遍N约分得到下面,
    & Z2 ]* W5 A5 b! q7 S  U& b: R
      B6 Y# _( }& B1 g2 J) E
    MATLAB解一下这个微分方程
    2 ~/ G. G# z9 d' `
    3 S2 d. o: G, @
      ^1 A& A" }! X$ o. e, r
    y=dsolve('Dy=n*y*(1-y)','t');
    ( ?& r  G! R6 Z; u/ v( w
    ( X2 n) r3 f5 A" ~$ u) ]
    ; \0 A' N! w+ J7 F7 Y& H
    y =  o: t* ?( t0 k% u: c7 U8 B2 ~: [
    -1/(exp(C1 - n*t) - 1)
    . h: ]+ j4 s% X& B9 O- T) F                      09 C; {) O2 _6 `
                          1
    & y% F+ h7 x1 y8 K. f$ d1( I. T5 ?/ v: k6 ]6 G6 N
    2' A) x* \9 I5 w$ c0 a
    3
    3 J, Z. L% d! ]  ]% v/ S5 r4
    . L+ q' @7 A7 V& r1 t. G- l5+ b. `0 e8 A: b/ R9 Z4 i1 j
    67 ~; ^( l& A6 L) i" U
    写规范点就是这个函数0 f) P6 m- |* O3 M" |: u4 f3 @' f5 Z

    ! a+ I# N# G/ J9 C
    ; N- i8 t% _: |* d, o4 w$ |9 n% e2 o
    函数图像大致为8 d! ~4 A" h  N% e6 l/ C. y% q

    ' Y4 g" `5 D; q6 j6 H# x

    5 s' f' v5 n/ w9 i3 e8 F- i可以看出t = t m t=t_mt=t
    ( Z! N9 z" @0 W+ }7 Im+ u1 \4 x. u0 Q) Q8 u
    ​       
    - T( x  M9 [; [: M$ F3 i 时这里图像的斜率有个最大值,其也就是传染的最快的时候,即传染病的高潮时刻,当然t m t_mt 1 M3 t1 o  F4 p  S6 Z' z: y/ ^  J
    m
    1 g0 B5 i8 l' [, W1 k5 L8 e​       
    % r; H6 w9 }6 ^2 J' I 是可以求出来的* _8 h) L& S1 s" D2 N
    5 S! I: C: u! ]) b

    0 b5 F% x+ J: \; s再看原式,当t → ∞ t\rightarrow \infint→∞时i → 1 i\rightarrow 1i→1
    ' u' z! A4 s. \1 D- j) V1 P病人的比例为1,当然这也是不可能的,因为我们还没有考虑有没有可能治愈,看模型三
    ' S3 c" ?6 [9 L! _8 }. f  t
    2 O# r6 r0 D. L% i+ A  L
    / o+ E% {% [5 @( g4 t
    模型三
    / D& E1 p3 o" d* ^  Q5 N8 m假设:
    ' T# k1 G1 P" T- R& x, _" g
    0 T- x, g0 L" [" h( U2 b' q8 H

    3 a0 D3 u7 v. S% T; [% s传染病无免疫性如伤风、痢疾等——病人治愈成为健康人,健康人可再次被感染。; b7 f6 y" [2 ]$ k
    病人每天治愈的比例为μ \muμ (日治愈率),1 μ \frac{1}{\mu} $ d) }/ [+ A% Z: e
    μ! m, H$ x6 |$ V5 k" q
    1
    7 y1 }% W6 B" H5 c. K​       
    " S: \' U6 ~$ f1 x" N 为感染期,
    " h/ W$ J. D* A* O' I- {! l模型% s2 a) \& [+ V% z: S- ?
    这是减去了治愈人数之后的新增人数
    ) m% g; n4 b2 a9 K  W. x
    7 z# M8 M4 K. G
    $ Y' H% v3 z* d5 L, ^! i
    2 ]  \* _2 C% d$ a2 f
    : I* \6 B8 h3 _$ i+ K) C# y: r
    σ \sigmaσ 为一个感染期内每个病人的有效接触人数,称为接触数+ }* S0 f) a- `7 r" V2 k
    1 c. D* G3 c( G# l. z5 ?) x
    ; T1 k6 x# p9 `3 H  k
    可以画出上面的图形分析下: G  C9 X, o% E% j( Y0 b
    $ w( r2 ]. f- K% ^0 |3 \
    ( X! d! K4 C5 S9 Q/ g6 J% p
    对上面的公式进行分析,可以得到,当i = 1 − 1 σ i=1-\frac{1}{\sigma}i=1−
    7 m5 F$ _4 e7 p" {0 \6 a0 R2 G  d! Qσ% {. {' q) ]- ?* I
    1
    + B6 F' N; q$ Z1 h2 l​        ! q; Y. F/ j& I; h& j, f
    时,i ii对t的导数为0这也就到了i ii的最大值;当0 < i < 1 − 1 σ 0<i<1-\frac{1}{\sigma}0<i<1−
    5 f! d) U! d; k% m3 S- aσ
    , b9 T1 i: H  J* D7 q% w16 m& ]/ H, R* W+ }; I: t' I  o
    ​        ' ]* t3 G' U4 m* e$ n5 U/ A
    时,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−
    7 O$ a3 ~. x5 m- @σ& I' G+ O6 E. W  N' D
    1/ z+ p7 Y* a. i9 E
    ​        4 j& u. Q. B0 n+ ?( ~8 C
    ,d i / d t < 0 di/dt<0di/dt<0,i是单调递减的。
    5 ?$ t7 u. d- y8 S; b* S3 z4 l8 n) ~% n3 H: R

    / x- K1 S! Y# c1 t当然我们也可以画出i ii随t的函数图像. X  G0 P+ \" W1 D" n- ^( d
    8 v! B. V. O" z3 u5 K& Z

    / J+ j2 _" O3 _先看红线,若初始条件i 0 > 1 − 1 σ i_0>1-\frac{1}{\sigma}i . b$ g7 W, ~: L6 S% C2 r: O& G" Z
    0# k' N! c- D1 C4 o4 Y8 b4 D+ f; b
    ​        / ]$ X) Q, A9 }. f* i* T
    >1− " e0 g0 D* ?! R0 t; A' \
    σ
    & Y, ?; A/ K) y1 a) ?) l9 d12 f# T* [# a& X. l2 l6 Y- F- B
    ​       
      t' T9 H7 }) z. {0 a d i / d t < 0 di/dt<0di/dt<0,i就是单调递减的,
    : N/ o+ _# g4 Y3 H2 s( y$ ^1 d若若初始条件i 0 < 1 − 1 σ i_0<1-\frac{1}{\sigma}i & Z7 T  I: \' ?2 [
    0
    ; e6 c4 I" J, |, |​       
    7 k; M# i/ W( D) v# N5 H <1−
    ( [6 H3 B7 Y, Q: z1 a) Hσ& f  |% K* d+ a: g1 ]9 Z$ e9 k! w
    14 [) e7 I' J3 T+ Q
    ​        3 h4 \% d! N4 V
    ,i就是递增的,可以看到i对t的导数图像有一个最大值,下面的黑线就有一个增加速率最快的一个值,按S形曲线增长9 z+ S& E% }4 ~4 X+ N; s
    . T+ R7 `: a4 O
    * @4 Q* d- z; b( t$ H: X
    σ = < 1 \sigma =<1σ=<1时d i / d t < 0 di/dt<0di/dt<0 i肯定是单调下降的,最终降到0
    ( ?; i7 ~. V, @# E) D* g3 i
    : G! o8 v# J: b- l% F) z

    4 a( [  p  `& c5 f9 W
    ! I' e) ^6 o7 @0 A: _3 x* O& Q1 A4 n, Z

    / T+ l0 O5 s! ~3 d综上:5 y+ [8 `) t0 k- Y2 t4 P% X
    想让患病者越来越少,σ \sigmaσ必须小于等于1,即感染期内有效接触使健康者感染的人数不超过原有的病人数., P' N+ ~- Y+ u; j

    4 \# ^9 u9 z% X
    3 T( p5 H! B' d! v. F5 ]- [
    这里我们分析的是感染之后还能感染的情况,但有些病毒感染之后会在体内生成抗体,就不会再被感染了,下面我们分析这种情况。
    8 I7 Q, G' U' z6 W& G$ x. i. A0 o2 n% O
    6 M4 f; Z  l' s6 W1 Z
    模型四 SIR模型4 c6 {. `# G+ z: d; h0 p; g
    SIR模型是常见的一种描述传染病传播的数学模型,其基本假设是将人群分为以下三类:/ v5 C, l  }, M, e
    " ?4 Z- s9 s8 |4 E) `# K$ s) V

    6 o, W2 |0 G3 k) c& t& \) R, O1 易感人群(Susceptible):指未得病者,但缺乏免疫能力,与感病者接触后容易受到感染。6 S7 P5 g1 n( p; Z# A$ I8 F* ?
    3 o; f! h, h5 F! g( Q# h
    0 Y  d- C; U7 e9 C
    2 感染人群(Infective):指染上传染病的人,他可以传播给易感人群。
    : p2 {: M; [8 n0 l. f
    / @2 G8 h+ Z+ w& u. i% @

    $ ^% q" {: U- V+ b1 F3 移除人群(Removed):被移出系统的人。因病愈(具有免疫力)或死亡的人。这部分人不再参与感染和被感染过程。
    : c9 h" D) m5 v) g8 F; E* ~) {8 g+ T: X8 V* k; X; X2 ?

    2 R. Q& ?4 r. o- q1 L7 |假设:
    0 q6 S) b5 }+ ?. L4 K+ `$ G# n
    ( V# c+ _4 V3 ^( a( |4 j
    . J, s' a- W/ ?; t
    传染病有免疫性如天花、麻疹等——病人治愈后移出感染系统,称移出者(Removed).1 U+ I) @( T  x
    总人数N不变,健康人、病人和移出者的比例分别为s ( t ) , i ( t ) , r ( t ) s(t), i(t), r(t)s(t),i(t),r(t).: }. A0 _9 f4 M, f/ v& L) E$ x2 g9 q
    病人的日接触率为λ \lambdaλ , 日治愈率为μ \muμ, 接触数 σ = λ μ \sigma=\frac{\lambda}{\mu}σ=
    " }# F( q. S. x% L; zμ8 C) h* ~2 u2 s- Y, m# d
    λ) d/ ^" Y. n' A" v: Z
    ​        ) N8 P1 g2 D3 E2 L  e# w
    4 |6 }/ s: E2 f7 _
    建模:
    7 ^; O' L% p7 N- o5 H2 Vs ( t ) + i ( t ) + r ( t ) = 1 s(t)+ i(t)+ r(t)=1s(t)+i(t)+r(t)=1
    0 E% N! s+ p. S) }2 H2 v- N这个就是病人减去治愈的人,和上一个模型是一样的' U4 A* X$ A3 B; |* U* J: ], c
    * T0 K5 J+ q9 _' J

    " p0 p* Y  \7 K3 E' m3 I因为有治愈后是有免疫性的,所以可能被感染的总人数要减少,减去移除者就是
    ( H: v$ N7 ~8 p5 A; G+ e! s4 G" X4 ^5 U. }
    ) S! }8 t0 N) ~: ~. i4 z
    将上式化简为:
      v' A; V+ A+ Q8 b; f( B$ \% N2 E" ?7 i* i. q% @

      h0 Q2 I0 u- I; ?/ ni 0 + s 0 ≈ 1 i_0+s_0\approx 1i
    . G  j- @4 A$ @, u  S; |5 o# \1 _0$ T3 |6 y4 A8 q+ _5 u0 B' V! O! T& N
    ​        % N# I0 y! m/ ^2 O1 U: }% w2 z
    +s 3 I. d+ V0 S( p  N8 Z6 Z
    0( W) c' }6 w+ Y
    ​        4 K5 R# [5 }$ w# n4 S1 u1 d8 h
    ≈1(通常r ( 0 ) = r 0 r(0)=r_0r(0)=r
    2 [4 w( ~) U* _' U0% Q& S/ o; b! @% o
    ​        5 }# O. a; m3 P/ ^: |
    很小)
    6 G) a$ }- A. V7 a3 K; x0 Q, y+ i3 n" [% q5 I4 h  d
    + J6 o5 z" J1 u
    关于i(t) , s(t) 的非线性微分方程组,没有解析解,只能通过数值计算得到s(t), i(t), r(t)的曲线,下面来看下曲线的数值解的MATLAB程序8 }; E: R9 T8 S0 r

    3 |& R, a! \1 ^) v: _' y) w9 Y
    3 X7 {) P0 E4 {) ?) Y; f3 r4 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 - [  f: v  p. n5 d, L; t6 A
    0
    7 v# c6 i% B1 h​       
    ( h7 q% e$ c" V3 V9 y- K4 Z =0.01,s
    * E7 R* I& E" M  j& ]0
    6 q1 b% r4 J6 O* w, Q​       
    ; G7 l6 B: M0 ?: x: ]( a* A =0.99% B, w9 X% q  K
    也就是平均一个病人人传染一个正常人,治愈率为0.5;开始的病人比例为0.01,正常人为0.99,设没有天生带有病毒抗体的人,所以r 0 = 0 r_0=0r 3 s0 a6 J1 K8 t/ q) E; C" k% S
    0
    - T0 K% l2 R+ |9 J$ T! w​        6 Z/ N! G' G+ Q
    =0,之后若果病人被治愈,则具有抗体了,有抗体的人为:r = 1 − i − s r=1-i-sr=1−i−s; F. J6 L1 X. g8 \2 C( o4 L

    . Q' b- i/ Z( A9 J# V. V
    . y4 y4 R; |8 u& V( G9 w
    ts=0:40;* a; c# W$ u7 y7 |) d; ]6 Q8 a8 F3 b
    x0=[0.01, 0.99];. k( T1 D7 L6 o% U+ k: k
    [t,x]=ode45('ill',ts,x0);
    0 F* H) R8 a. M/ b# u: I: f3 `0 Pr=1-x(:,1)-x(:,2);
    ) g  W( R! s$ @plot(t,x(:,1),t,x(:,2),ts,r),grid
    # N2 y! K. d. S  e0 ~legend('i(t)','s(t)','r(t)')
    , C; N9 G4 W" f) F- f" F/ N
    , Y* T0 B0 C* v

    2 }0 u# N7 I3 ~: ^9 Xfunction y=ill( t,x): l6 N) _8 h- D' f
    a=1;
    1 ~4 Z( U/ Y5 q5 kb=0.5;
    0 n1 g2 G1 }! f% `y=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];; z6 }9 A; v9 D6 a' q. x' [
    1
    ) i+ `2 K+ ^9 w( g) x3 _2
    - C0 C* h4 m9 c) x) X" M3( q5 [1 N$ B! \, d* |6 T
    45 u/ N- r, k; E) q2 |$ D
    5, b" k4 ^$ t7 P& A3 H
    6' L: p9 `8 W3 d" r$ p) L" ^
    7/ f5 @$ ~# A0 D
    8
    ( ~8 L( z* M  v  s6 V" P0 ^5 L9
    ) a. H/ \' Y: a( j7 i: J. }10) o! b5 ]$ w& l9 S" L# g
    11
    5 V; b7 h' g: E: |. Z: l- f
    9 Q2 e6 t+ x. V; a& G
    $ e$ v5 j) A* o: y2 U: \5 L1 A
    可以看出:s(t)单调减,r(t)单调增,都趋于稳定, i(t)先增后减趋于0.
    * ~6 v  H8 R) A/ s( u0 v2 u, w结果分析3 F) z- v7 V' ?7 e
    先回顾一下参数5 W$ J: J) a4 K7 G% f% c' }
    接 触 率 λ ; 治 愈 率 μ ; 1 / μ   平 均 传 染 期 ( 病 人 治 愈 所 需 平 均 时 间 ) ; σ = λ / μ   接 触 数 ( 感 染 期 内 每 个 病 人 有 效 接 触 人 数 ) 接触率 \lambda;治愈率 \mu ; 1/ \mu~平均传染期 (病人治愈所需平均时间);\sigma =\lambda/\mu~接触数 (感染期内每个病人有效接触人数)接触率λ;治愈率μ;1/μ 平均传染期(病人治愈所需平均时间);σ=λ/μ 接触数(感染期内每个病人有效接触人数): i! J' b! g+ W
    可以分析出:) I- C0 s3 H3 a( ^0 \- K- B$ u" w4 q. X

    % ~. G# a, [& X- F0 x' M3 O3 F

    9 f6 ]: }: V& r) ?2 e- n随着卫生健康思想水平高,接触率λ \lambdaλ变小0 Y9 u+ }& J- J9 ~1 `0 \& f# P9 y
    随着医疗水平的提高,治愈率μ \muμ增大+ l& |1 }: g" z. Y
    接触数σ = λ / μ \sigma =\lambda/\muσ=λ/μ减小——有助于控制传播.% |" J( N9 A+ O6 A8 }+ R
    我们可以试试稍微减少一下λ \lambdaλ,增大μ \muμ,来看下效果
    ; d% C! A$ n/ \$ o0 J. x* Y7 {" N7 j

    , ^. ^% R% B8 S( D4 ?ts=0:40;
    9 `8 w1 v4 i" h+ y8 F  e( T% ?x0=[0.01, 0.99];
    5 e9 f* }8 ~7 h4 o& J" w[t,x]=ode45('ill',ts,x0);
    + z' }0 o: A  h' Z. T( _" |! Zr=1-x(:,1)-x(:,2);% p; K+ M" o/ f& K  E* V: @
    plot(t,x(:,1),t,x(:,2),ts,r),grid
    0 q: p+ P% P% Z# t) hlegend('i(t)','s(t)','r(t)'). C: H+ p* Z, d& L" M

    ( x9 g8 }* d) m( Q( ?6 ^
    ) v/ X# ~. g8 ]3 Q7 b% ~7 n/ ?8 c
    function y=ill( t,x)' m) W, V" I+ o) P3 E
    a=0.8;
    1 f! p( n0 j) y9 a( Zb=0.6;
    % j: B( J0 B4 a* T; _- ?y=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];3 w2 J2 x  A7 V
    1
    & M1 G& ?3 X; @( ?2
    . H, V& l3 P: X, W% h+ M3/ h5 J" h: |' [3 t2 o
    4
    - q; S- Q' ]4 V3 {5
    1 X+ f9 {4 {* N. J$ c61 x) \  x8 c: o9 e6 w; ^
    7
    , u* ?, F9 T) a8
    9 c6 P: {! O  B! i- n+ y$ x98 N9 v/ C: P# s$ N' {( R3 f' [1 a
    10# h' n& g% q/ f; i! n9 y
    11
    % g2 v8 `0 E; Z3 e; N9 b3 ~( x( q
    3 D. [' x8 E6 f( G  O/ `3 ?7 M

    / o1 R7 |2 I  f5 q0 }! g5 a- \, i; q综上我们可以得出结论:想要减少传染病的传播,我们就要在接触数σ \sigmaσ上下功夫。# V# k! b. e) R1 c
    ; i1 b) u, Z7 w% e  W6 T+ u

    ' H- e9 u1 i1 N8 P# I6 g- J" \6 q实战建模' M* T. h, e; t3 h0 B
    数据处理! D9 L. z/ u% G8 k
    5 t1 Z/ W: F6 t$ Z+ C4 i1 N
    / f- Q) h# l3 T
    首先,我用python爬虫爬取了丁香医生官方数据,一共5534条数据 特征包括感染、死亡、治愈的总数,当日感染、死亡、治愈新增,疑似病例,时间,省份等14个特征" v7 O5 e8 q+ c. K( A
    6 e. V9 r' a3 o' v5 C' `8 b- y3 g
    % C: J" C5 M7 C, w; J3 _1 I3 e
    7 h# a' {: }9 P, p% S

    $ y, k( y$ @- ]1 S9 T然后用python进行数据提取,提取了较为典型的湖北省的数据作为我的参考依据
      ?3 Y$ b) y( I& @
    0 m; H, _0 \/ Y4 x; X5 \3 G, ?" J

    8 d& _5 ]; k3 V9 `) l
    : G  B. P; x. P! q; H' R

    % l8 g1 P" T( S( u3 `0 p然后用python对数据进行清洗,提取出了患病总数,现存患者总数,死亡总数,治愈总数,时间,省份这几个特征
    ; c0 Z$ y6 j+ [5 `, ~2 ^" `( j  M! F3 ?. C6 j9 d! D: @
    # w- e* a( W( j. S
    对日期格式进行修改,值保留月和日,并与死亡人数的位置交换
    , `9 x* U  n2 N. H9 l8 Y* e* x/ W5 _' U

    ' _) \! _7 @1 j0 h这里我用python对提取的四个特征分别进行了数据分析(主要包括计算最值,平均值等,),并把1.20日作为第一天,7.02日作为最后一天也就是第165天,做了可视化可视化处理。. S2 C; J& N' ~2 f7 K
    感染人数示意图6 P, ~: f: I* t, ~9 ^* g6 q& e

    + @+ I/ D  O& V- k9 g5 J8 \

    . K% u6 K1 h- ]) G3 a# r! e治愈人数示意图2 A+ q9 K' y% G& G, N

    # y1 N4 q. U, J+ G3 |. p4 V, J; b
    9 |/ q9 [# F5 b2 Z2 p. g; y
    $ @, R3 D6 R$ b6 d* @  ~8 b

    ) S4 d7 l+ s  o7 O) P- `" o8 q现存患者数量图- P) S/ z' z( l) [
    0 W8 ^) O" S4 N
    8 ^, Y0 ]) C3 P+ ~
    死亡人数示意图! c) R2 x, R9 T" q" R
    0 ?5 S7 w, |, D; u2 i

    : p; U% I& A! f1 S% y* S" W/ R% x! o  F, L1 M
    9 n% K# j- j1 m$ I9 }1 V$ A. E
    2 i9 s& J0 O6 r! U# G$ ?2 J
    经过上面的图片与describe数据分析,我们发现有一天是异常的,患者多出了平时的十倍左右,经过查阅资料,这天因加强了检测标准,所以增多了很多。为了避免这个数据的影响我们选择将这一天删去(或者用平均数或中位数代替也可)
    + A4 Z" p1 u8 y# v. E将上面清理过的数据存放到csv文件中
    ; G; m$ m& K8 O. V( s* k  L
    9 [( C; I- a. c& e
    3 ~1 K# o1 }0 x" h' ]: r
    模型建立
    ; m3 L& j* f- j0 u0 }, M8 K$ J模型假设
    ( m: f; F, I0 m+ @经过上面数据的分析,我们大体可以进行如下假设:
      u! Y% H) J2 t3 I1.由于不存在封闭情况,考虑开放体系。
    1 ~# I" [) C! Z5 o+ _, g2.目前数据以天为单位发布,因此不考虑连续变化情况,只考虑离散的方程。
      M- y  c) F+ b6 u1 L3.新型冠状病毒的治愈人数和死亡人数相对较 小,因此只考虑 Susceptible(易感)和 Infected(感染) 两类人群。设易感人群总数为N! M+ I6 ?7 k9 Y* V0 U, m( `% z. J- O
    4.经专家鉴定新冠病毒患者治愈后至少六个月之内不会再被感染,所以设治愈后移出易感人群。
    $ m/ e/ y0 G- r1 ^4 {7 _) g2 F5.设每个病人每天有效接触人数为 λ \lambdaλ(日接触率),且使接触的健康人致病.5 `5 ?" Y6 P$ o/ W) P8 L" ^; k5 A
    6.设病人每天治愈的比例为 μ \muμ(日治愈率)! Q0 |& P0 U/ U8 G3 |: N
    7.时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t).
    7 X$ W$ G  ?" Y% i8 M6 F0 T. {$ h3 G" H  }# L1 s4 `/ R2 ?5 d+ s

    # n3 \: i1 w7 c* X3 Z模型一
    4 V8 s* W5 a' \
    4 e: }/ F+ v* S  ~

    1 Y8 z, H  v! z9 d* G+ _分析可以得到移出者r(t)=治愈人数+死亡人数
    3 g0 {3 C0 q2 b6 |& \8 N通过python数据处理,我们算出了r(t)的值,并将其可视化
    & q* G; Y" G8 |- Y; f$ C5 F
    0 f4 G  ?8 v. z, _* W4 {- u  B8 {
    ' |2 d3 z( u' Q7 i! O$ J- O
    / c$ Y% M/ p" ~4 o1 q; O

    1 R$ e- R$ q7 p; c3 L9 s2 |我用MATLAB对其进行了拟合,拟合图像为) C: v* d, s; j3 m4 Y. L8 s

    - w; u4 ~9 q: s" u& X1 M

    $ |+ m" j6 o# j, y, y( c3 O
    $ [5 @/ N, r6 B( f( F( h
    ( [$ ^* y6 A9 a0 M) ]1 L& C" K' v

    . U$ ?; U9 v# J, S% P
    7 d" e- w4 ^3 G9 C; C
    分析可以得到患者 i(t)=患病总数-移出者2 T7 `7 Z6 @. j' G) E
    可以通过csv文件的currentConfirmedCount 直接获得i(t)数据,当然也可以通过 i(t)=confirmedCountv - r(t)获得,对此我也做了可视化展示8 M, e, J- y& |- e" @, a8 H

    $ t+ J3 @; ?# u8 {1 n! G( s
    ; C. [) h0 V1 y- X$ O
    通过MATLAB程序对其进行拟合,可以得到r(t)的函数图像大致为
    ' i! T9 Q: ]8 T1 p( M0 s) H& m3 J  V" ^0 f

    $ H- d7 @  j: J' \3 [1 R/ ]) p4 d2 R  }) {6 }

    $ y# e; g! n- L6 q. ?; n) P: F" b6 r4 x0 J) ~

    - m7 l7 S' N' n% x' i8 W) E为了方便,利于公式推导,我们先设时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t). 所以有
    & r- o' m8 l4 [/ Q4 W$ b2 C4 Z, q
    0 n5 I& v! H% {- g/ Z. N+ S/ D& N4 e; k

    0 C+ `: o3 |) N0 s, u可以推导出每日新增病例的表达式
    8 E3 a5 B& A# [0 s/ q: l0 h
    3 x5 |' b0 |  ~$ J7 U5 B
    1 ?; A+ `4 I( B, q9 t6 r2 B8 c4 P* @0 A
    ; w$ c) `* N: P

    ! Z8 f& I, _8 w; ]7 W$ b! y, C4 s9 R( h; Y+ U# b

    4 s+ @. d$ a8 Q# U! q# c由以上两个公式可以推导出以下两个微分方程6 X$ ?" e2 A# @" v4 f* ?

    & h" @0 M0 E# O: m: J  t

    , ~+ g1 }4 k/ d
    2 c) j4 \) }* C* A

    & F, k5 E# X! ]5 g8 \可以知道初值
    ( l  o- N& C. d& O; T( ?. Oi ( 0 ) = i 0 . s ( 0 ) = s 0 i(0)=i_0.s(0)=s_0i(0)=i : U6 O8 h( Y- ^( H
    0
    8 W( f5 C8 I( ]​       
    2 e# h, F" P& }) n .s(0)=s + L" X2 a( Q' |: O$ D
    0
    ; Q0 I# C' [0 D+ V8 j. z​        % O7 N, i) `# F" j, U
    4 d$ h; W, y7 O! a5 Z* g$ H! z
    因为一开始治愈的和死亡的肯定很少,所以r0可以看为0,于是就有:! ^) P! \: T  z* V; q1 R
    i 0 + s 0 = 1 i_0+s_0=1i
    . @. S2 v! \8 u' \" ~0
    3 ~! k' H3 O1 a; ^* R​        ' U$ |& q! M9 a# x
    +s ) E/ K' u7 K3 Z: S  C$ A
    0
    7 i$ N$ n2 }$ J, A# a: T​          s3 l. f: P- p0 h0 q
    =1- S- t# d% n8 Q' U9 W
    通过解以上微分方程我们可以根据经验假设λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)的值分别为1和0.5(也就是每个患者可能使1个正常人患病,患者可能有0.5的概率被治愈);由于一开始患者肯定比正常人少很多,所以我们设i0=0.01,s0=0.99。对其求解可以得到s(t), i(t), r(t),的变化图像* m( k9 B5 U5 k" H7 ^

    3 X) Y; R  f% z+ Y9 V  c1 A) [
    / m; T( }4 z! n9 `
    + y  u0 B- E6 o. h4 C3 m
    6 I  S; ~* `: d2 F- d
    MATLAB程序如下# P5 J: n! E  n
    ts=0:40;
    3 c8 M4 a- Y% J! wx0=[0.01, 0.99];% N! r& Z0 K2 \; S1 E- H% V# c
    [t,x]=ode45(‘ill’,ts,x0);* z2 }5 W3 B4 N3 ?: o  \
    r=1-x(:,1)-x(:,2);& M/ X- q7 G+ O/ a
    plot(t,x(:,1),t,x(:,2),ts,r,ts,x(:,1)/x(:,2))2 a6 F; {3 x* ~3 n. I0 n
    legend(‘i(t)’,‘s(t)’,‘r(t)’)
    ; `5 F1 d+ S6 [: J% s
    ( Q6 B2 G' `% L
    * b: b0 G' @% v. E4 l# o' O6 s
    function y=ill( t,x)" S6 C( i8 S; q* V8 ]
    a=1;+ `+ K" x% W1 ~) }) i/ D
    b=0.5;3 Q8 {6 D. d) D& d
    y=[ax(1)x(2)-bx(1);-ax(1)*x(2)];! O3 V" g5 l9 r

    , l! J0 Y( o- T& D! D+ H

    ! ^7 _" k6 u5 W. h结果分析:患病人数肯定有个高潮,但之后高潮就会减弱,并逐步降低为0。随着医疗卫生条件的不断提升,患者的 λ \lambdaλ(日接触率)肯定降低,μ \muμ (日治愈率)肯定上升,所以我们可以把λ \lambdaλ调一点为0.8,μ \muμ调高一点为0.6,可以得到以下趋势图。所以应对传染病很关键的一点是我们要提高医疗卫生条件
    - h' m- ^4 r' R7 X4 v& }  r9 i0 h) [! B0 T$ N9 z' H; M  F! b, w
    " s& q. V! f* h. L

    + h3 h& K" O6 H: V( i. ~模型二
    7 m8 I/ ?$ J, T( h9 {- U( v' V; m
    # N" }9 u$ u( f) y( c4 d8 }
    实际上,λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)都是随着时间变化的,这里我们设s(t), i(t), r(t) 为第t天健康人、病人、移除者(病愈与死亡之和)的数量, s(t)+ i(t)+r(t)=N..
    " x" ~/ T2 [: b% N0 F(t), (t) ~第t天感染率, 移除率(治愈率与死亡率之和)
    $ l8 T8 N5 T. M2 P  Z有 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)/ W7 t1 ]3 L# t
    因为s远大于i, r,s(t)视为常数,所以有
    ; i; [* W( ~7 ]" \
    2 k5 F8 Y/ K0 ], W. V
    5 o* B$ B" ?* ^: E* c# w

    % m, X1 I; V% @* E2 |0 j

    - u7 t" y' c) J* p  E9 J取差分近似导数& `$ w) c0 M! n( o3 R5 m4 q
    0 j7 |5 p7 }+ e8 i) J2 w2 b
    , _, b# G, c. K. m$ w
    " I" q8 s$ V$ ~# l  ]. q, E) o
    * s7 w# f7 N9 z8 C
    我们可以先用真实数据对(t)进行展示并进行拟合
    " }* \( C& ~; K6 v2 @
    1 [$ v" |! k# @$ y

    6 C$ d2 Z9 o  U- Z+ y* V4 o0 y5 a: A0 V
    3 z# s% I- k, l5 _
    当然同样的方法对(t)进行拟合' A. L7 t; J! r
    ) ^' h( {: ]5 A) ~/ U& t1 G: v

    # H8 l1 b9 k' m. R做不出来了,好难,光这些东西就弄了四天,到了数学建模国赛得多难多累啊,哎,让我这个小白手足无措。毕竟还没有正规的培训,这个模型等期末考完试一定好好做做!!!
    0 ^7 t. m! j# G, n冲国奖, K* o8 Y( R" Z& G7 p8 q
    冲国奖
    # D  h: v7 `; U! |# |冲国奖
    1 h( {* H% F, R, E$ v$ e; W( A————————————————6 `: |6 {# J7 l
    版权声明:本文为CSDN博主「小白不白嘿嘿嘿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。. j8 M6 x' |# g7 h
    原文链接:https://blog.csdn.net/weixin_45755332/article/details/107094630
    * y, Y: F" v* o6 E6 m- k5 V; K. |9 N# {8 n% P$ {! M. o* D
    8 k3 K7 o. R4 }9 w- C8 z
    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 06:54 , Processed in 0.324344 second(s), 52 queries .

    回顶部