QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4851|回复: 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 B6 O/ y" s" T* P4 y' I3 R数学建模之传染病SIR模型(新冠真实数据)1 l, D+ x# e7 n1 [+ e- x9 i8 b
    传染病模型的基本问题
    # T5 i! B( H' |3 U描述传染病的传播过程
    - E- q2 Y" c0 b分析受感染人数的变化规律- k' u+ d* }+ m' |6 Z
    预报传染病高潮到来的时刻8 d+ S+ c% D$ K4 I. [
    预防传染病蔓延的手段
    6 U) Z: G, _, `6 z6 `0 p, c按照传播过程的一般规律用机理分析方法建立模型, t6 i3 R# p6 v
    注:我们这里是介绍数学医学领域中基本的传染病模型。不从医学角度分析各种传染病的特殊机理,按照传播过程的规律建立微分方程模型.
    - j# R* X9 z/ f  Q6 `; \. I( M+ z; [% _8 g5 R0 B# Q
    + V8 S% [/ [: X
    建立模型- ]6 v2 u* R& }1 B1 N; ^$ O; T& u0 q
    模型一
      ~5 [1 J+ t9 t* \" Y假设:5 Q/ r" w. P( p
    5 {* \7 B, Q1 k1 J" M) E6 g" E  l
    6 p$ h7 a! R+ O* t8 E2 W2 v5 A
    设已知感染人数为i ( t ) i(t)i(t)(病人数量随时间变化)
    4 {% P$ k% c  z' l( A设每个病人(单位时间)每天有效接触(足以使人治病)人数为λ \lambdaλ/ q8 V4 o* \# a/ @" r9 @$ Q
    模型:. C/ ?6 H& N9 @* X
    单位时间Δ t \Delta{t}Δt内,新 增 的 人 数 ( 现 有 − 原 有 ) = 原 有 的 × λ 新增的人数(现有-原有)=原有的 \times \lambda新增的人数(现有−原有)=原有的×λ,即
    & G9 @$ }7 n: ?9 b4 {% p- s
    - k- u. H8 w. s" v
    % s$ ?5 w) ]& Y. u, Z, [
    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)Δt1 a, [! y0 Z1 c$ p0 t7 @9 e
    一开始的感染人数为i 0 i_0i # d: ~, {8 I/ Y1 K( d
    0
    % c$ m, Y8 Q" C! {: [# Y: n. N) P' b+ j​       
    , q2 b' g3 ?5 @* L - b0 m# e3 M& t  F5 N' q/ o
    i ( 0 ) = i 0 i(0)=i_0i(0)=i , z; `; V$ [  O: Y) d
    0  x% l: u5 k; J
    ​       
    3 b8 g1 C* z* m& ]
    ' D# f, g, v, B3 J) M解微分方程可以得到+ R* h6 ^8 ^2 G* w' _3 m: c
    i ( t ) = i 0 e λ t i(t)=i_0e^{\lambda t}i(t)=i
    4 N' C- Z9 o( O/ d4 l, X0+ s6 i5 T" }# D8 Z
    ​       
    ! _3 W, R$ O1 W9 Z e 7 a' r2 c2 W. W# A/ o
    λt4 l2 k  Y6 U; y. V' m8 \

    % _$ J2 _3 G7 C! L  @3 W- X所以可以可到当λ → ∞ \lambda \rightarrow \infinλ→∞时i ( t ) → ∞ i(t) \rightarrow \infini(t)→∞
    - z9 Z. u! X/ _% x' d当然这是不可能的,因为我们考虑的因素太少了,首先一个是,若有效接触的是病人,则不能使病人数增加,所以必须区分已感染者(病人)和未感染者(健康人)看模型二来解决这个问题, `  P  y3 i( f1 z% ?
    - B- s5 D' L5 R* C
    9 ~$ v9 a  W' L2 o6 y
    模型二
    $ J$ t! s3 t- J6 E假设:
    % z8 P' ]3 u( [% y; j7 }
    % r/ m# [9 \+ `/ C/ t% y

    % Q3 |; s/ q: e2 s* m% V将人群分为两类:易感染者(Susceptible,健康人)和已感染者(Infective, 病人).
    0 W$ N5 f7 e. d4 ^) r总人数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# E3 o4 D( b( u! I& s) E' n8 {- K
    每个病人每天有效接触人数为λ \lambdaλ(日接触率),且使接触的健康人致病." b$ z/ M" m6 f
    建模:, A  U" C! v, \6 E& S! |
    每天新增的总人数为原有的人数乘以每个人可以传染的健康的人数,再乘Δ t \Delta tΔt7 I4 ~. A* h' `5 @* Y6 z
    ' T6 |0 }+ J$ H1 w4 g

    ; t; A/ O3 J5 Y! _$ U7 IΔ t \Delta tΔt除过去,两遍N约分得到下面,
    2 J2 }" f: h3 D6 K( e6 ~- s* ]8 n- j. g* y* x

    . Z5 K5 C& J/ y' B9 E+ \MATLAB解一下这个微分方程
    ( }1 _: x" Q$ D6 l$ C* H) C/ z$ V" c4 t4 u+ N

    ! V( H! c3 j. v8 T5 vy=dsolve('Dy=n*y*(1-y)','t');
    # y# s/ l6 j# P! v& ?; F0 L# p1 Z7 n' F0 p* r1 L5 T

    3 q& m" E% C! k) P' @$ c4 Ny =+ {' |8 V- q0 w/ e; V- b
    -1/(exp(C1 - n*t) - 1)
    0 N, d0 e, \; n, r                      03 [# a9 R1 c# g$ Z/ Q. H" h0 [& y1 v9 _
                          1- {. b$ A( D9 i# ^9 E" F. T$ j
    1- D% m& T& u# o& B7 n/ B8 g
    2
    + z% j2 u+ t0 F' W: r) r4 @35 Q2 H$ f4 A, W
    4
    ; @& x$ o( a& s( V' m* @% I56 p" {" [9 u; S/ ?# _
    6& H7 K% J6 |; k$ j
    写规范点就是这个函数# |& |$ P) G. A0 s( A, D

    2 ]  J, ]; U& g2 R" c

    4 A% `, q- @0 B3 N函数图像大致为
    3 x- [. g) M/ |. ?; l6 z" ]) z4 r5 A7 l7 r

    ' I/ p% N! r) E, ]5 F, x, T可以看出t = t m t=t_mt=t
    0 y, Q4 Q4 @7 \# x& [: W5 B3 Vm: x4 s$ Y  k7 r+ d6 f) b, t
    ​       
    3 B( p6 {6 h0 @ 时这里图像的斜率有个最大值,其也就是传染的最快的时候,即传染病的高潮时刻,当然t m t_mt 3 N+ P: \- F  i  C+ N9 Q8 S
    m" N1 m1 Q* h$ z1 S
    ​       
    - w% A. j- G6 o: b, J0 [ 是可以求出来的
    , E; l. {3 @* v* w
    " ?7 [- \, Y* j: s$ d, b7 f; P

    6 w( r. E& _+ i: G' [) ]再看原式,当t → ∞ t\rightarrow \infint→∞时i → 1 i\rightarrow 1i→13 j. ]# B' A) L% o; u, O& |( r
    病人的比例为1,当然这也是不可能的,因为我们还没有考虑有没有可能治愈,看模型三
      s* C# B. I. p8 @  ^( a9 u7 M. ?* v1 L' {1 r2 D8 L: x
    0 F1 R* @# W/ O+ C0 e+ `
    模型三% l8 v$ w3 Y( [
    假设:
    & N1 b$ d6 u, M  N) n- G$ @) n" D) P3 [9 \( t* h# a; N  b0 c+ R# @

    5 J+ Q' G, i/ k6 A/ b传染病无免疫性如伤风、痢疾等——病人治愈成为健康人,健康人可再次被感染。9 m0 L& P% T* n& l. e
    病人每天治愈的比例为μ \muμ (日治愈率),1 μ \frac{1}{\mu} : z! |* d! J, ?0 _5 w. E3 [% H
    μ
    / U2 c; E; t- s1# y9 v& ~2 Q6 O2 K4 R# ~3 Z& w) q
    ​        3 `& D& ]8 x( G' b3 V
    为感染期,# e8 U/ y+ d! l1 {
    模型; j* c6 ]) L7 Q% S: B
    这是减去了治愈人数之后的新增人数
    / f( O& Q9 d. h1 u# D1 v+ M# |6 O) w# M9 |' s

    6 Q, o- G  `: l, ]8 j( G0 K
    + C* x; S2 v( o8 ^  w; c
    9 X; N: w( y4 k6 a* i6 r
    σ \sigmaσ 为一个感染期内每个病人的有效接触人数,称为接触数6 w' c5 E/ p2 A- D4 [0 P1 p0 ^
    2 i* V' v7 f8 V; h
    2 J1 A- Z% n" t) l; G( h
    可以画出上面的图形分析下/ X; \7 G; \# X- ^( M, X/ j

    8 a1 p* T4 ~1 |  P
    : z* ~& T- a2 M5 }
    对上面的公式进行分析,可以得到,当i = 1 − 1 σ i=1-\frac{1}{\sigma}i=1− 3 ?  Y' y, s- ^0 F
    σ
    # b- Q0 |$ i$ z- e2 `! t1( B9 U4 f- Z( B
    ​       
    $ L# t  m" P* g2 S- Y 时,i ii对t的导数为0这也就到了i ii的最大值;当0 < i < 1 − 1 σ 0<i<1-\frac{1}{\sigma}0<i<1−
    4 R+ W! X; C& M& q: e3 d/ gσ
    1 P8 H# C% n$ ~, g1& b1 W, ~$ p; ^# D# J
    ​        % o& {1 ~" _  y- J3 y
    时,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−
    1 i- \' p* S7 C+ C% d2 d* tσ
    2 B% ^9 k" j0 k( Y: Y1; }6 z$ V! G! I( w6 N
    ​       
    ( d) w* F% }4 ?! x5 E1 \9 ~" u ,d i / d t < 0 di/dt<0di/dt<0,i是单调递减的。; }2 n3 A% Q6 q1 N
    # X& ~1 D& |6 x' A3 K! e; l
    $ @; ~& C7 t+ k9 g- N5 i  C
    当然我们也可以画出i ii随t的函数图像
    . @8 [/ S$ M  Y$ {5 c4 u) U) x: Q% v$ p, ?4 g' u& X
    . ~+ o+ g7 f) K+ T/ i' O, d
    先看红线,若初始条件i 0 > 1 − 1 σ i_0>1-\frac{1}{\sigma}i * {7 Q/ g6 ~/ j4 ~: Q' e1 E
    0
    : y# h# b' l) B​        * D) v. G3 z) T& _4 [9 e7 b
    >1− . T& F* Q6 H6 X# {" q. O. R! c
    σ
    - G) X' D0 s+ k: B2 ~* r$ c1
    9 Y, m- M* P) Y( @  h​       
    1 R0 w, m  D9 f d i / d t < 0 di/dt<0di/dt<0,i就是单调递减的,
    ' c- _) B9 x. D5 Q) A% J. L% M若若初始条件i 0 < 1 − 1 σ i_0<1-\frac{1}{\sigma}i 4 p2 H0 |. B2 u6 f0 e
    0: \3 K( d, r. H1 X% Q
    ​        ! J' }2 v1 k3 X. R9 U! q
    <1−
    1 W/ @# @6 {$ y: |- Dσ( w3 C7 L' v7 |2 g
    1
    : A# D- e: A. J: ?​       
      @: ]" D# k0 X  e- R/ t/ E( D6 t  X) e ,i就是递增的,可以看到i对t的导数图像有一个最大值,下面的黑线就有一个增加速率最快的一个值,按S形曲线增长' B$ x& m+ ?1 K8 O$ F! w, [
    + W/ h$ C: i/ J: v: s

      Z1 S' g2 s! `6 e: V. n1 @) jσ = < 1 \sigma =<1σ=<1时d i / d t < 0 di/dt<0di/dt<0 i肯定是单调下降的,最终降到00 ]1 C; f! a1 V) {- i9 m
    * ^& d* ~- X+ D( y  e) A7 E, e* e
    # ?$ l, d6 D0 f
    8 \8 u: ?! K. D3 {3 p; o7 i) r
    1 e/ C5 Y( t* e8 W; a+ m
    综上:
    / {' Q4 C& A  Q+ ^3 z  T想让患病者越来越少,σ \sigmaσ必须小于等于1,即感染期内有效接触使健康者感染的人数不超过原有的病人数.
    0 L; d2 t( x! {; z3 L! w
      F: D7 i& x" V' @1 F' X, M9 P

    * K) Y3 O3 t- z5 T  f这里我们分析的是感染之后还能感染的情况,但有些病毒感染之后会在体内生成抗体,就不会再被感染了,下面我们分析这种情况。8 f8 y4 o* w' [/ _8 f7 ^

    8 j! J5 b& d+ [
    % ~1 u9 G5 X0 l+ M) k6 B. {( S
    模型四 SIR模型8 \. b$ v* \7 j! n% c+ u& X
    SIR模型是常见的一种描述传染病传播的数学模型,其基本假设是将人群分为以下三类:& O4 P9 v% U3 T) `& `

    " J7 {7 h1 k' d& f. V1 g
    7 n- C2 |. u' M) [, q
    1 易感人群(Susceptible):指未得病者,但缺乏免疫能力,与感病者接触后容易受到感染。
    6 f4 Y1 T7 N8 `, f$ b
    3 k& T, N: ]; Q" r3 T+ J3 H! [

    * G, f4 w, B: m7 k% |2 \5 S2 感染人群(Infective):指染上传染病的人,他可以传播给易感人群。0 O- b* M3 T) s1 K% F' U7 [

    ) P- ~9 V* j: K7 z; S1 \4 C

    . J1 _+ ?. D& e; S/ \( |3 移除人群(Removed):被移出系统的人。因病愈(具有免疫力)或死亡的人。这部分人不再参与感染和被感染过程。( ], G+ Q8 V9 q% z, B

    1 Q+ c: k: U* N" |: F( a# J8 G
    8 {" A' h% z% {) ^4 v
    假设:# E: v6 U# o7 D4 X5 }; ?1 ?

    1 `0 d  V6 J+ M- W
    " l3 M+ E7 @/ f+ O
    传染病有免疫性如天花、麻疹等——病人治愈后移出感染系统,称移出者(Removed).9 d/ u! u5 Y0 U4 ]" B" S# q5 m# f
    总人数N不变,健康人、病人和移出者的比例分别为s ( t ) , i ( t ) , r ( t ) s(t), i(t), r(t)s(t),i(t),r(t)./ {7 O7 M! M% S, R% p
    病人的日接触率为λ \lambdaλ , 日治愈率为μ \muμ, 接触数 σ = λ μ \sigma=\frac{\lambda}{\mu}σ= & P4 \# b, j9 \) z5 [
    μ
    ( a% K  n" D' P3 S' k* bλ+ p9 G, c# L$ o. P9 [
    ​        + ^- Y/ k$ U& y; ]6 d* @5 z: E
    - c+ N& p. j+ d, E4 e
    建模:
    / v0 y6 R* k7 s& y1 {. i9 h# ps ( t ) + i ( t ) + r ( t ) = 1 s(t)+ i(t)+ r(t)=1s(t)+i(t)+r(t)=1; b" X+ m. @& v- i
    这个就是病人减去治愈的人,和上一个模型是一样的# a3 m2 s; y) y& \6 ?7 j% j% t  k. v
    ! l. U; C& P4 z9 C* b
    . @8 O  x3 n2 q6 H! ?
    因为有治愈后是有免疫性的,所以可能被感染的总人数要减少,减去移除者就是
    8 c! F0 r8 t9 l0 r9 C% l
    ! }# i0 L6 t1 W- U, K0 e

    6 K3 J  p" K% G; `1 R1 o0 O将上式化简为:
    ) Y8 g) T1 }5 X5 k' D$ m  @  }7 |. ^; ^/ @; E4 T& E# b

    ' Y/ g# \' s0 n) C' \' z, qi 0 + s 0 ≈ 1 i_0+s_0\approx 1i ! a* ~& M1 o  m/ @3 e0 t2 W
    0
    $ [( e# t/ s, i​       
    , X$ u0 u. L( x* m: i5 x +s
    ; W2 |: g, j. M; |0 e" b  l. _0( M0 I2 F3 _# H: E
    ​        $ Z4 K' [. u+ v1 }8 H9 B
    ≈1(通常r ( 0 ) = r 0 r(0)=r_0r(0)=r ( z- N+ }% j5 I, M# ]
    0
    2 s0 t/ Q& z7 j1 ]​        0 E6 q# h8 i4 W" ^% n
    很小)
    4 H: e. \2 u" v) s# J2 [9 D$ k5 ?1 r6 m2 o3 ]8 {( |9 Y) c, |

    8 o) H. q3 @1 [5 e$ O3 O. u. ~关于i(t) , s(t) 的非线性微分方程组,没有解析解,只能通过数值计算得到s(t), i(t), r(t)的曲线,下面来看下曲线的数值解的MATLAB程序& B8 S) O* \$ F4 d. k
    9 S' L/ j  K+ k. f

    ) C' a* [7 G$ ^8 r3 P0 Y% S这里我们先设λ = 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 6 n3 a0 m' Q8 l% a' n
    0
    * _5 Y/ {* V' |8 J/ ~​       
    - X; B4 t5 u3 v! O6 Q; H0 }3 i6 V =0.01,s ) n; I( e6 V, T1 u
    0& J% _4 Q. e9 b
    ​        % S2 V1 F8 A* o& n1 ^2 d
    =0.99. G+ [2 M9 u# \
    也就是平均一个病人人传染一个正常人,治愈率为0.5;开始的病人比例为0.01,正常人为0.99,设没有天生带有病毒抗体的人,所以r 0 = 0 r_0=0r
    6 E5 c$ I$ T" v. \, |8 y0
      q# _+ l& H) Z/ Q0 `" n​       
      r% J# T& }' I4 e1 { =0,之后若果病人被治愈,则具有抗体了,有抗体的人为:r = 1 − i − s r=1-i-sr=1−i−s
    . U/ A& M$ ~7 W+ B& a& g3 a  G
    4 }$ f5 x; }0 U8 H$ r7 p) V
    " Z) U7 X7 c, B
    ts=0:40;
    ! T' N3 w' b/ {; dx0=[0.01, 0.99];( \# p0 t  Z: d4 r% B, t& f
    [t,x]=ode45('ill',ts,x0);
      m  P/ A" y7 zr=1-x(:,1)-x(:,2);
    5 Q' C% V: Z# v- Eplot(t,x(:,1),t,x(:,2),ts,r),grid: I1 ]  S/ m. ~8 g. x
    legend('i(t)','s(t)','r(t)')
    * C6 e* J' x9 y6 m# o
    5 d8 M& T9 u7 Y- l: l

    2 [! i% d$ V) f; H3 k' ?! Rfunction y=ill( t,x)
    & l+ K$ `5 ?+ A6 ^* L, p8 Ua=1;
    8 }' P6 |" S. g) Qb=0.5;
    $ @! _" O6 t$ u1 Jy=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];
    ; K1 Z9 l" T# O) g3 }2 ^1
    % c! ?" i- o$ d24 i4 T' |, A# l* Y# B- N
    38 A; x% ~) K) _# P% G
    4
    . @7 R! x% D' _5
    5 j' g3 i9 O0 b; ]6
    7 m% q2 G) ^1 b4 e0 k4 |7
    / B; v% A' e5 Y$ `* e6 t! P8
    " b9 R4 o9 S# |5 Z$ p) ]9
    1 Y3 n* ]- C# @" y6 m8 M10
    1 G' \1 j* f# `6 F113 j0 V0 ]) Q/ y2 H1 H
    2 C  q( ], R  \5 s5 I
    0 _; X" V6 ]5 a  Z/ h, u6 V8 g5 D  g
    可以看出:s(t)单调减,r(t)单调增,都趋于稳定, i(t)先增后减趋于0.
    5 H: h( C$ k) c# ^+ f; w5 o7 X结果分析
    9 Z+ \, ~( a. E, N' i' }: s9 q先回顾一下参数
    : t. [5 D! r0 f+ T2 i! m6 o; J" h: f接 触 率 λ ; 治 愈 率 μ ; 1 / μ   平 均 传 染 期 ( 病 人 治 愈 所 需 平 均 时 间 ) ; σ = λ / μ   接 触 数 ( 感 染 期 内 每 个 病 人 有 效 接 触 人 数 ) 接触率 \lambda;治愈率 \mu ; 1/ \mu~平均传染期 (病人治愈所需平均时间);\sigma =\lambda/\mu~接触数 (感染期内每个病人有效接触人数)接触率λ;治愈率μ;1/μ 平均传染期(病人治愈所需平均时间);σ=λ/μ 接触数(感染期内每个病人有效接触人数)0 B4 E7 f1 J6 n, o' q
    可以分析出:
    . k4 U5 {- D& N- K. M( X- _- B- P! g' \9 p! P6 Y

    1 p1 o; F: @+ N8 ?" L* t随着卫生健康思想水平高,接触率λ \lambdaλ变小2 R6 ?! Q' x9 U& u4 ?5 H1 Q" {( b2 M
    随着医疗水平的提高,治愈率μ \muμ增大
    4 G: v. l( F8 k& z, J# f  c接触数σ = λ / μ \sigma =\lambda/\muσ=λ/μ减小——有助于控制传播.4 d$ ?- ~' x5 z! p7 ]
    我们可以试试稍微减少一下λ \lambdaλ,增大μ \muμ,来看下效果' d  N  I# I  z

    - S( X3 Z0 `# M! h

    # D7 l1 |- C" l9 O2 G% @ts=0:40;$ V+ ~0 D" o# |
    x0=[0.01, 0.99];
      p5 O4 D5 ^# Z! [) J2 R# W+ @& I[t,x]=ode45('ill',ts,x0);
    3 ^+ h3 `1 H9 ?; V6 h; jr=1-x(:,1)-x(:,2);4 g6 ~" x* @7 R5 V9 E4 a2 t
    plot(t,x(:,1),t,x(:,2),ts,r),grid" a7 x6 `+ k* J0 T# u. a
    legend('i(t)','s(t)','r(t)')4 A9 S, |- }- E9 k
    5 m. R- Y. p3 |$ }. T- e0 B
      v# a( ]" h' C. Z% C) g# L/ a' c) B
    function y=ill( t,x)- B( ?3 }+ a% N  R( l
    a=0.8;
    " ]# G+ L: L8 d6 E7 b4 f$ Qb=0.6;
    % \' g1 L/ g# J0 {9 Z8 v; M6 by=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];9 ?" H2 B7 l: X6 d
    1# |4 r2 b. [6 K" y. ]/ C
    2$ B' F9 R8 L+ g7 K, e0 K
    3# v5 V5 _& L' X
    4
    4 W) Q. ]2 w! f: y; x/ T3 F, P" n5
    7 I3 h% ]" O' q7 S3 b; j6
    + A3 l# a# V6 k, Y  I) Y# s7; D2 z/ `5 E8 s, l) p+ g5 ~3 U- u
    8
    * y) b- {. o( X9 I/ i; J4 L2 {! }6 f9) r& ]  X0 x( u( F
    10
    : k5 V* a1 J% r+ A8 Z11
    + r! H1 u9 p: R, I9 j  x" R8 s6 r( I" j! \: @
    0 _& L6 {' A. h6 J+ d) j) p* {
    综上我们可以得出结论:想要减少传染病的传播,我们就要在接触数σ \sigmaσ上下功夫。3 n9 c" [3 R7 q- }0 E9 q" u
    7 Y$ s) w2 K+ z' ^4 V
    ) ?- v. K  m: V4 u; A& H
    实战建模
    8 O( _) F5 F: M2 y数据处理9 K. W' ?+ [$ e' s* C
    ; ^9 [" B% N. o
    : I" D6 q# _, {2 Y+ r9 f. h
    首先,我用python爬虫爬取了丁香医生官方数据,一共5534条数据 特征包括感染、死亡、治愈的总数,当日感染、死亡、治愈新增,疑似病例,时间,省份等14个特征
    3 s( S# K) j1 n: G- V* M; Q% A+ [) n
    : C! F* ]8 A% `7 C/ W# {
    2 _" l/ Y- H+ f! g4 M9 x
    5 `$ {; \! b, i* h5 I
    然后用python进行数据提取,提取了较为典型的湖北省的数据作为我的参考依据
    5 K, p# `, m9 h5 E* V
    / |+ Y6 m. B( b3 o3 i) A
    3 u$ C! T" l% Q4 ~# `8 W0 ^
    & {2 r" R5 G5 Q/ Z7 K: k

    . H" {! q- R4 K) L8 W( K然后用python对数据进行清洗,提取出了患病总数,现存患者总数,死亡总数,治愈总数,时间,省份这几个特征7 m) c$ V( p& d- H. l) r

    " L0 M; P$ y2 y: l2 u7 D& t8 A6 y

    0 [, D6 f0 u: B3 K& J. i对日期格式进行修改,值保留月和日,并与死亡人数的位置交换- a9 V: D, Z5 e# G1 o4 Z
    # v: k. s8 h* o' c- W
    # I) L3 V% A+ I/ h* \  [; O
    这里我用python对提取的四个特征分别进行了数据分析(主要包括计算最值,平均值等,),并把1.20日作为第一天,7.02日作为最后一天也就是第165天,做了可视化可视化处理。7 x4 E& E) @3 X5 H( u9 J
    感染人数示意图& H8 e4 W- ~* S+ }% M+ N- T
    * O1 e0 a) K" u7 U; P

    5 [4 Q6 P4 n  c+ E8 ~7 y" V2 v3 \治愈人数示意图  Q0 ?  Q- j6 b  i4 {9 w3 D+ D

    ! L: f. A+ E- B- g; m9 Q/ p! X9 y* h

    ( Y8 X* b& E, O3 ^. ?$ X
    8 @; v" ]- f7 {% M1 g
    8 X. x  y7 ~# Y- }
    现存患者数量图. `5 w2 ?9 l/ C6 x2 D$ H2 \9 }, z

    4 W" U: y- I: H  _- O) \' Q

    ' F7 N1 y/ x$ q# D2 q& Y死亡人数示意图$ B( O1 {7 _2 Q4 L  |# B

    , q3 R' N0 c* E4 c1 ^
    ; G. U$ _  A$ k/ m! L: N9 I
    ! e) ^7 Q  a. P: b4 y
    " r% h% Z9 x0 F) ^
    经过上面的图片与describe数据分析,我们发现有一天是异常的,患者多出了平时的十倍左右,经过查阅资料,这天因加强了检测标准,所以增多了很多。为了避免这个数据的影响我们选择将这一天删去(或者用平均数或中位数代替也可)+ N: T- p' R5 s% }8 D
    将上面清理过的数据存放到csv文件中4 S& D6 o2 @, |! E

    $ P% X, y# N+ b8 ~2 ]$ ^# {1 S6 F

    " y( |5 j7 c6 M模型建立* q9 d( L7 L& g  R7 P
    模型假设
    ; F! l6 t: |! \$ q2 @* w4 p9 |$ f经过上面数据的分析,我们大体可以进行如下假设:
    & u" s0 C8 I- ]& o9 j3 `( U& a1.由于不存在封闭情况,考虑开放体系。* u& i3 U& L! k+ D8 P1 w/ n/ l  _
    2.目前数据以天为单位发布,因此不考虑连续变化情况,只考虑离散的方程。
    " o4 |/ u$ }; d& U5 C3.新型冠状病毒的治愈人数和死亡人数相对较 小,因此只考虑 Susceptible(易感)和 Infected(感染) 两类人群。设易感人群总数为N1 S' G* l/ s0 A& `, Y+ G
    4.经专家鉴定新冠病毒患者治愈后至少六个月之内不会再被感染,所以设治愈后移出易感人群。- ?5 O5 I* V7 c- N0 P% u
    5.设每个病人每天有效接触人数为 λ \lambdaλ(日接触率),且使接触的健康人致病." t9 w- d# |& E  E, d0 E4 X
    6.设病人每天治愈的比例为 μ \muμ(日治愈率)
    * H2 f8 M# s# Q. P; \# @7.时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t).$ J% j0 Z+ z3 [, K) ?5 H

    , e1 q0 v! o. C: J! s6 D8 y4 ?
    ( a* G& i9 p; r5 y+ m3 x3 p
    模型一( i! D2 E; p" t% f1 J/ I# t( B
    + c2 x# f( z) ]1 ~' }1 v
    5 u+ a4 m7 o  N3 r4 a3 [7 l$ C
    分析可以得到移出者r(t)=治愈人数+死亡人数; N! G' k( X( [- v. F
    通过python数据处理,我们算出了r(t)的值,并将其可视化
    ' u  ?( G6 a% S( `# N
    / Z8 F- U' U, |1 ^1 x
    7 n& `4 ^& c/ p$ G+ e: v" o9 U& L' [

    + M2 d  X6 S: S: ^. _5 P( E

    ; ~7 B0 M! U  w! K* X" p$ ]2 d: ?我用MATLAB对其进行了拟合,拟合图像为
    $ b" i6 V0 Q- ]$ c9 D4 t
    / Q3 {9 k. ?6 |4 y! C2 G3 T/ f

    8 ^8 Z5 `. ?: }$ T( r1 n- {! Q" f) o& A, l! g5 }9 p) B

    5 K) u# X  }8 E0 K0 w  f
    " {/ K4 l! g1 @, [
    0 i* p# \5 c* C2 q
    分析可以得到患者 i(t)=患病总数-移出者
    3 z$ j6 Q( g5 Q5 W  i7 [可以通过csv文件的currentConfirmedCount 直接获得i(t)数据,当然也可以通过 i(t)=confirmedCountv - r(t)获得,对此我也做了可视化展示% I8 q- @" \1 n) _

    : F1 g; ?) g( Y$ f
    , p. m0 J! M5 u/ z  x( W3 K
    通过MATLAB程序对其进行拟合,可以得到r(t)的函数图像大致为$ e. i+ U5 F/ _' v. u0 t4 Y% `+ E! o

    6 Q* D: e3 S+ _; ~' n# `  \2 s

    : V9 }% O- Z9 W, k6 a9 {6 x7 Z$ M2 C0 d, h

    3 M# e" C2 E* r3 X8 u7 z6 v' i6 _
    / G2 n. o% a7 ~# g
    + g- j. o: O; a) A) m6 J; e
    为了方便,利于公式推导,我们先设时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t). 所以有1 J7 L& ~- R7 V; E6 y$ B& G

    ) S8 W$ I7 @2 C1 w5 n! k
    ! R; \) M" N) F* X
    可以推导出每日新增病例的表达式; t9 I5 E) i3 o: v; C$ L

    ' `, C* }) l- m! W

    9 W* V9 K1 r, O+ Y
    , Q+ g3 a; p; ^8 f
    7 ]3 o; u' }7 P) @+ N2 ?
    " _7 t5 F/ J& E- o$ g

    & Z+ U& p0 E5 E( _由以上两个公式可以推导出以下两个微分方程
    ! k! x, d, Y0 j+ l7 F4 e
    2 l) X) r% x$ _! i8 J

    1 Q# y( J/ J2 C8 G  I  k1 H9 g6 n& L2 N
    ! j" h- J, w* a2 _9 @+ B
    可以知道初值: h% g% ~3 x4 B- Y
    i ( 0 ) = i 0 . s ( 0 ) = s 0 i(0)=i_0.s(0)=s_0i(0)=i ; T; r, o: @+ S9 I9 f
    0
    & e8 K7 q+ B( w, _​        * I7 q1 Y9 I  z( r7 F
    .s(0)=s ) L1 }! P7 `% L
    0
    ; R& ~# y; _- r$ y( @( M) N  ]​       
    * {5 d! |6 ?$ O1 X( @- r
    & Q0 _: c; W& E9 G  d' l) S6 P/ A% V/ I因为一开始治愈的和死亡的肯定很少,所以r0可以看为0,于是就有:
    0 S/ n5 h; {8 U% N! C8 X2 h% S' i- Qi 0 + s 0 = 1 i_0+s_0=1i 8 L9 G- F% }5 ^2 e" F5 q' w4 u) f
    0/ I* m) t/ u' s
    ​        8 w5 c% S! H- a0 L; A2 D% V& X
    +s
    : L, o9 s, E) x! a0, n0 i2 i7 r, O0 l
    ​        : P# C7 p6 B$ k! r
    =1; a3 f  b6 l( n; s$ G- v
    通过解以上微分方程我们可以根据经验假设λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)的值分别为1和0.5(也就是每个患者可能使1个正常人患病,患者可能有0.5的概率被治愈);由于一开始患者肯定比正常人少很多,所以我们设i0=0.01,s0=0.99。对其求解可以得到s(t), i(t), r(t),的变化图像) k6 t  ?# ]6 g% m7 u" v: ]' x
    6 z3 b( j/ e8 y$ ~" Q: S! c( p
    6 s3 m4 N+ z+ \6 N* k# b* f7 O

    % K$ _7 J- M# u

    # x7 D+ B! Z$ i2 F* C! ^8 ^MATLAB程序如下& E- e& Q0 k) v; y. O
    ts=0:40;
    " [( v4 p4 ~( @7 d8 Q) A6 _% Lx0=[0.01, 0.99];
    , ~6 p- `5 Q' a; l/ Y( U# X. |[t,x]=ode45(‘ill’,ts,x0);, O- a5 P/ v( Z. x! k2 E
    r=1-x(:,1)-x(:,2);! J: w+ ~8 O7 @4 Z: I  \4 c
    plot(t,x(:,1),t,x(:,2),ts,r,ts,x(:,1)/x(:,2))
    ( j7 n& N+ `) ^( e3 c1 ?$ clegend(‘i(t)’,‘s(t)’,‘r(t)’)
      V6 n* [. u/ e$ y
    5 c' P4 u: ~6 v& j% g
    # }6 _8 x0 f3 F1 K0 D
    function y=ill( t,x)- o3 R' n. e+ ~
    a=1;6 w' ^4 D1 }6 p8 `& ^
    b=0.5;
    . [3 y( @; P! Z1 S3 o" R9 ry=[ax(1)x(2)-bx(1);-ax(1)*x(2)];9 J% f& C, C+ E; ]4 N# M( U

    & y% b# o9 h% X

    3 S. X! G8 D4 I7 b结果分析:患病人数肯定有个高潮,但之后高潮就会减弱,并逐步降低为0。随着医疗卫生条件的不断提升,患者的 λ \lambdaλ(日接触率)肯定降低,μ \muμ (日治愈率)肯定上升,所以我们可以把λ \lambdaλ调一点为0.8,μ \muμ调高一点为0.6,可以得到以下趋势图。所以应对传染病很关键的一点是我们要提高医疗卫生条件
    2 d# q  b7 V* s! |  {3 X1 ]$ i8 j4 s5 E% Y! _$ R, t4 z

    . B& X4 m6 B' c6 n# E+ N! x; j6 W+ V4 d
    模型二
    ( t0 K8 l2 E, ~/ S! k0 \' N% f+ U' |5 C# x3 M7 z) o; |
    6 Z, {* C4 [# X2 J5 |, D) f
    实际上,λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)都是随着时间变化的,这里我们设s(t), i(t), r(t) 为第t天健康人、病人、移除者(病愈与死亡之和)的数量, s(t)+ i(t)+r(t)=N..
      b% l1 N+ ?( k) |(t), (t) ~第t天感染率, 移除率(治愈率与死亡率之和)7 R% K0 q. e1 U! y
    有 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)
    ' W+ u1 G- k- T因为s远大于i, r,s(t)视为常数,所以有
    / X, s0 p9 z$ n1 M3 P/ I" u& y6 V! A! u- F3 V8 |" N

    % L5 U/ j2 \' R1 Z' z
    , R5 n: l' n/ s. q, F# n

    7 g" C% h( W4 j3 T# ?' f5 L! T% o, o取差分近似导数
    % ~; Z1 _5 s3 @: W  l5 o
    , a! q7 U8 ~* q, }

    # l; N# b0 k, Q4 L9 G% L! ~1 `
    6 f  m7 E/ E' `+ L) k. p/ |& n

    1 r, Q, u" t! O5 j/ j1 u8 V我们可以先用真实数据对(t)进行展示并进行拟合
    ( V0 Q2 A2 J% N9 X' J% E0 `
    & }  T9 B" ]- x  z  s9 I, ]

    & f0 g% V* @3 [# p  L! A+ A6 G/ I8 h0 m/ N( i6 N( O$ }( j) v

    2 t( i2 d9 L; Y- y当然同样的方法对(t)进行拟合2 h- l6 _8 j7 J3 y; W* `6 b& B

      d* v& u/ Q( r  r" D0 l* Z( S
    4 k% b. `! @3 }$ e4 a
    做不出来了,好难,光这些东西就弄了四天,到了数学建模国赛得多难多累啊,哎,让我这个小白手足无措。毕竟还没有正规的培训,这个模型等期末考完试一定好好做做!!!# ^8 R3 L. W9 d$ m
    冲国奖
    2 G" L0 G  ^. V1 i$ p9 I冲国奖. ^3 L. W2 X" a0 `9 c" m6 I$ A
    冲国奖9 ~1 R. v; D8 t' S9 n
    ————————————————
    4 ?4 \1 O* f1 s! X3 m版权声明:本文为CSDN博主「小白不白嘿嘿嘿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    / ?  n# v: O/ K8 Q. [/ h* D3 ?原文链接:https://blog.csdn.net/weixin_45755332/article/details/107094630" Z; N! A, R1 O0 e. |' ?" Y

    - U) y. b; F2 ?( X$ |
    ' D$ L# V/ X$ ~5 ?
    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, 2025-6-29 13:35 , Processed in 0.640307 second(s), 51 queries .

    回顶部