QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5736|回复: 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 D3 Q6 [0 o: d: h4 @数学建模之传染病SIR模型(新冠真实数据)( g9 j1 g- V4 K, \
    传染病模型的基本问题, ~! r& _# d1 B! S! V- b0 _( o
    描述传染病的传播过程9 h  ~1 X. v  z) A& \. t9 I9 Z/ Y
    分析受感染人数的变化规律
    + L% a" m' v& Z9 m预报传染病高潮到来的时刻, m6 L4 }' W2 j
    预防传染病蔓延的手段6 m& Z! w2 x2 ], q8 `" D$ I
    按照传播过程的一般规律用机理分析方法建立模型9 X( P9 q6 @# g. I) v, @
    注:我们这里是介绍数学医学领域中基本的传染病模型。不从医学角度分析各种传染病的特殊机理,按照传播过程的规律建立微分方程模型.8 o* F3 X# [1 [) h, `( ?& g5 U
    ' f5 E. |& q4 @, Q' T3 ~, y, k4 v
    ! m8 b; k. t2 Z- o
    建立模型
    4 l" r; a8 B0 R. Y9 @模型一8 X0 H6 v! a' x3 L  g
    假设:
    / N6 v, [% E! K; }
    / [  ?% |- W  }9 h; v
    $ F2 b0 t8 ~3 ?4 F0 f) X
    设已知感染人数为i ( t ) i(t)i(t)(病人数量随时间变化). Y* s0 \* n3 [) M" h! I
    设每个病人(单位时间)每天有效接触(足以使人治病)人数为λ \lambdaλ5 V! e4 n) S/ b1 o5 U' ~( x
    模型:, p7 U9 ^9 @' H9 t& {6 T) \( h
    单位时间Δ t \Delta{t}Δt内,新 增 的 人 数 ( 现 有 − 原 有 ) = 原 有 的 × λ 新增的人数(现有-原有)=原有的 \times \lambda新增的人数(现有−原有)=原有的×λ,即5 f# O% j: H( L' v% W% W! J. a

    0 d# O  e' H3 K" A& P' o
    ' X, a: l( j1 y
    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
    . v- t2 l( [! ~一开始的感染人数为i 0 i_0i
    ' o* z' X$ G6 S' L0
    ' j1 q  o& [5 w/ J+ @& R& O% ~​        . E: @& b. y. p( Z* ]

      i% `1 _: Q  Y( ri ( 0 ) = i 0 i(0)=i_0i(0)=i
    , u( M# R7 S0 p+ a) h0! p( G3 ~1 [3 o6 v) F/ @
    ​       
    4 X& _+ n' d( i# D# B/ Q" L # H6 }& m8 ^1 C. o$ k9 ]% n
    解微分方程可以得到5 ^3 H- ^& q# h3 C! v3 D2 x
    i ( t ) = i 0 e λ t i(t)=i_0e^{\lambda t}i(t)=i 7 L, _6 s0 P/ @; e
    0; v5 s' g4 k0 ]' N/ `+ O3 @
    ​        # v# M3 x7 y9 |/ c/ ]0 p% r- T
    e
      `3 Z* w% n6 h3 M% k3 s' x5 H$ q1 h8 Eλt
    3 h$ P3 T# k; O+ }3 ^
    $ N( N# t- K  z3 u6 j  Y2 V所以可以可到当λ → ∞ \lambda \rightarrow \infinλ→∞时i ( t ) → ∞ i(t) \rightarrow \infini(t)→∞7 `1 V" ?6 Z0 g: w6 n) _
    当然这是不可能的,因为我们考虑的因素太少了,首先一个是,若有效接触的是病人,则不能使病人数增加,所以必须区分已感染者(病人)和未感染者(健康人)看模型二来解决这个问题) s% _  @0 W) C3 b( r# q! r) x
    * A6 l) o  Q( U

    ( l8 e; @1 E4 I! H$ {- H模型二( W% [; P2 ^6 o
    假设:
    % q. W) \, f! D! Y  S/ f- U
    4 G! M5 ~" J1 X$ p$ f

    / z8 }. s' Q' L6 G) W8 s2 R0 k将人群分为两类:易感染者(Susceptible,健康人)和已感染者(Infective, 病人).
    " o- F" y' U4 Y  S8 l# @总人数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. ~3 ~! ~, ]) {) R( l3 i, ?
    每个病人每天有效接触人数为λ \lambdaλ(日接触率),且使接触的健康人致病.( i. x& k1 y; ~/ |) G! ]% u: S9 {
    建模:
    2 U" z; |2 J: v8 v每天新增的总人数为原有的人数乘以每个人可以传染的健康的人数,再乘Δ t \Delta tΔt* o# h; R& [( A7 U( R* n$ j, o
    & S0 w5 n' _- ^4 b* U6 b

    ; I# I& p# ~* G. BΔ t \Delta tΔt除过去,两遍N约分得到下面,
    . J6 p+ `* }: q% Y0 k) H+ n$ c6 D3 |
    : j2 q. h* Q- b1 i& v6 |5 ], o+ F) n
    ; i$ I* |8 s9 X7 Q4 O& t! l
    MATLAB解一下这个微分方程
    : r3 ]4 i* x* E  a; Q$ b: g1 J' F+ L

    ! |0 V( H2 ~; u$ y8 l6 C) Dy=dsolve('Dy=n*y*(1-y)','t');
    6 f4 n/ X0 C+ \; ?4 z: g5 z2 F# {% S% N: D# ]& F( h
    6 a, P4 G, v$ A# \/ O& K
    y =
    2 I; c* w8 E3 N -1/(exp(C1 - n*t) - 1). V7 S9 l1 B( B& a. B* C& T
                          06 p2 T. D* U0 r2 S# U
                          1+ G. P, ^* b- {5 r# z
    1
    4 o0 J9 I  i: |20 r; k9 l2 c1 D8 n0 J& w
    3
    - ~) L  X8 ^) A' X" [2 j4
    9 m% V3 _8 \) y5 _4 r" [5# f* h9 k1 C1 z$ m; v
    6& `5 }- p! `1 ^
    写规范点就是这个函数: q& s; W0 i/ N3 ]
    9 L$ u4 s+ U2 p; J2 U: e

    ! p" r: y5 ?9 Q' f7 Z函数图像大致为
      \; ]1 W0 ~/ U6 C7 r  ]5 ?
    + j8 f9 `7 P% @1 [$ [+ f
    3 D7 [3 S$ L5 |) M$ G( o  w
    可以看出t = t m t=t_mt=t
    0 ^' }+ I$ p2 ~% S4 |/ p. hm
    ( u* Y3 j) o1 I% O5 O$ _! q4 c​        $ Q- o' r) k' Q  L
    时这里图像的斜率有个最大值,其也就是传染的最快的时候,即传染病的高潮时刻,当然t m t_mt
    3 L! x! e+ {) T# ?" Zm
    ' m6 y8 F4 u. ^' s​        # f. N6 E- c+ z% c5 {& q
    是可以求出来的" X# {- ^9 ]6 {! P: B* ^. t

    ( u- ]( t* }% s$ u* G7 K3 i6 `. X
    / N2 [5 s& }3 M4 Z
    再看原式,当t → ∞ t\rightarrow \infint→∞时i → 1 i\rightarrow 1i→1
    : y9 t; A( {0 N( [% n病人的比例为1,当然这也是不可能的,因为我们还没有考虑有没有可能治愈,看模型三( U; E# m& J4 F, W4 @
    $ W  n0 w. T% V" `  E2 p

    . y3 X6 v. X: h+ P模型三
    3 i( J5 Z' l. ?4 J假设:& l$ h1 a, {/ l6 \! P9 I; _  ?

    , K. u- o6 ]9 z. O3 ~( }9 d" R) j

    + W: s" P- \+ A, ^: n* M  @传染病无免疫性如伤风、痢疾等——病人治愈成为健康人,健康人可再次被感染。# c  ^: w  w' d3 k& a
    病人每天治愈的比例为μ \muμ (日治愈率),1 μ \frac{1}{\mu} & d$ Z1 J8 k2 A
    μ5 L7 r% X9 q% m0 |2 x, n
    1: D; q; _& K$ H, l
    ​       
    0 C: `5 v9 ~. h 为感染期,. Q9 Y& ?5 w9 L0 `6 y, w* p
    模型
    ; o: ~( M' Z: N* s& |这是减去了治愈人数之后的新增人数) j! n: r5 [0 h5 w, F' l5 z, n

    5 Z( Q+ v9 x2 q7 @
    5 Q' G" z& v& l3 c: ?9 R; X

    ; P, b0 B1 Z: I3 e
    $ g& l" H2 F1 s6 w6 n
    σ \sigmaσ 为一个感染期内每个病人的有效接触人数,称为接触数7 ~6 y' {+ F& c; _' W" h

    ) i- t: B# I% \6 H. U) V; }
    1 g+ r2 |! d5 A
    可以画出上面的图形分析下
    # }* O4 G, g- Y' g! q
    0 E* Z: a, I6 e4 r7 p! u
    * ]9 A' K* j! N7 o! Q9 y6 K
    对上面的公式进行分析,可以得到,当i = 1 − 1 σ i=1-\frac{1}{\sigma}i=1−
    $ _" X; ^; `' G7 {- iσ
    : o$ E- r/ \8 f' U, M. `1
    $ T7 D9 ^, F/ j1 F" t​       
    ' B! [7 }' f, _# _1 y 时,i ii对t的导数为0这也就到了i ii的最大值;当0 < i < 1 − 1 σ 0<i<1-\frac{1}{\sigma}0<i<1− ( n3 V% P: K& x" U
    σ. {) _( f9 Q5 n6 V$ o. E& Z
    1
    8 w' n" O) h3 L. d7 K​        4 D2 ^" I  s7 {* w2 f+ {2 Z& n
    时,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−
    % p4 w' b6 O: Sσ
    ( i, t% g, |/ w- }1 L1
    4 F8 h. J$ L" M, A6 v) y​       
      r( E* A" r( `, k/ ` ,d i / d t < 0 di/dt<0di/dt<0,i是单调递减的。* h9 ?5 w, `. ?1 P

    ! y- i# O  V3 G6 L# K# M1 m
    + v! Q0 t( ]7 a8 c( M
    当然我们也可以画出i ii随t的函数图像
    ' o% y% q5 T7 t4 A. i! U0 l
    " d4 n2 P7 R, J+ R# a
    1 j4 K% }; u8 Y+ ?$ @
    先看红线,若初始条件i 0 > 1 − 1 σ i_0>1-\frac{1}{\sigma}i
    " p: d+ _8 I0 V. _6 g$ u, S0; h) v/ q$ E7 H+ J$ I, x# [
    ​       
    4 [, ~; b( M$ }3 m >1− / {5 |% j% T. T8 {4 X
    σ
    + _+ }! t# Z! x5 Q2 i( {1
    ( A# Z2 W( q6 p+ w/ ?+ H' Y​       
    4 S7 X1 z  y& k6 w) _& e d i / d t < 0 di/dt<0di/dt<0,i就是单调递减的,
    : k9 t+ J2 Y/ I$ H- x1 _' U3 g/ s若若初始条件i 0 < 1 − 1 σ i_0<1-\frac{1}{\sigma}i
    : ~; y7 H# e+ p4 A  j0$ i, `/ F/ G% V: D7 K( v
    ​        9 Q. @/ N) f# g; R/ a
    <1− : J$ e" }) \& g& r
    σ5 t, ~/ N* g: i7 s* z9 v% i
    17 q. |+ c" q" I* a+ o+ ?
    ​        $ l, o: G$ ~4 W4 e  {
    ,i就是递增的,可以看到i对t的导数图像有一个最大值,下面的黑线就有一个增加速率最快的一个值,按S形曲线增长0 {  v7 ?$ m4 i  V/ w; y

    4 c0 M' L4 o' |2 `$ A

    4 q% _9 m& @/ R0 W! ]2 h1 s6 hσ = < 1 \sigma =<1σ=<1时d i / d t < 0 di/dt<0di/dt<0 i肯定是单调下降的,最终降到0; h5 I/ T7 l- |& n0 ?4 [

    6 |. S  f5 E& H; _9 q- n- x
    ' C9 O$ K' |8 C, V: a8 n$ n

    " e3 K1 r% \! F7 y  Y& B5 t0 `
    ! O- {+ _! ]# T/ Z# p# R+ B
    综上:8 F# Z6 ?' O$ o( ^. j$ N( S
    想让患病者越来越少,σ \sigmaσ必须小于等于1,即感染期内有效接触使健康者感染的人数不超过原有的病人数.
    3 Z* q' ^8 ~5 i/ q1 J
    ; d! x: r  s% d, g3 T& Q

    ( D8 {8 u1 K1 ^* J这里我们分析的是感染之后还能感染的情况,但有些病毒感染之后会在体内生成抗体,就不会再被感染了,下面我们分析这种情况。
    4 |$ ?1 t, _7 [* d8 n+ z7 i: f) n7 c' B0 T. K

    ( D, Q  C9 r9 d3 R; P# o+ b" y模型四 SIR模型
    . S; u5 `# D+ G4 p2 w& PSIR模型是常见的一种描述传染病传播的数学模型,其基本假设是将人群分为以下三类:- i! q0 B1 ]! g, h2 S

    , r; Z6 Y  X- e: z
    ' K; g+ ]% n1 L8 u' E: X
    1 易感人群(Susceptible):指未得病者,但缺乏免疫能力,与感病者接触后容易受到感染。, G8 v3 ?1 f& U( ~' X: c# J8 O5 p

    ' z% ?- ~/ q6 F9 p- b: j, ]; o
    : |- L+ D# I; d6 J6 A$ n( p0 l
    2 感染人群(Infective):指染上传染病的人,他可以传播给易感人群。
    9 N1 g3 H/ M0 a& w* `6 O% g) Z# O5 q. U  [) a/ L( }* u

    5 c) M3 u; y7 x( h1 g3 移除人群(Removed):被移出系统的人。因病愈(具有免疫力)或死亡的人。这部分人不再参与感染和被感染过程。
    : B; ^/ c; [; E4 \9 I
    & x5 r; Y* g; [/ g* \' U" j

    6 s3 i$ z) Q- H- E假设:; [2 _& M+ Q* b) N) q2 u3 G0 z
    1 H# o( h: e$ b

    9 ]2 a) G" P! j传染病有免疫性如天花、麻疹等——病人治愈后移出感染系统,称移出者(Removed).
    + s, P/ I3 z; R8 n+ M( [8 {5 W总人数N不变,健康人、病人和移出者的比例分别为s ( t ) , i ( t ) , r ( t ) s(t), i(t), r(t)s(t),i(t),r(t).
    4 E& }# V6 {+ J, M4 _病人的日接触率为λ \lambdaλ , 日治愈率为μ \muμ, 接触数 σ = λ μ \sigma=\frac{\lambda}{\mu}σ=
    ; i5 F- ]  t$ [3 ^" rμ  R$ @% u6 t# F# G+ q( f
    λ& J+ J  ]3 H, X- }
    ​       
    7 V8 {4 G! G  j3 D
    ; P' V( m, I& Q3 u建模:/ o+ ?' p; O: h/ ?! g  i1 c" k
    s ( t ) + i ( t ) + r ( t ) = 1 s(t)+ i(t)+ r(t)=1s(t)+i(t)+r(t)=1( c" u" @& y% U; C) Z7 m1 U. a
    这个就是病人减去治愈的人,和上一个模型是一样的% ^9 O& G+ W1 [; W& p) E

    # Q, G% E/ |7 [, [$ z

    % b4 t! j( @5 l+ ^+ G7 t: h" \因为有治愈后是有免疫性的,所以可能被感染的总人数要减少,减去移除者就是  W: Z8 S7 G3 _# {' K9 f
    ) `) d5 Q- U% i7 W  V4 @& T
    / W8 h, I" g6 |% V* u
    将上式化简为:/ R6 _5 W0 G' T  M

    : {0 Z) H, h9 u. f3 I% @
    ' k& l2 n2 b9 k# Z4 K2 t( |
    i 0 + s 0 ≈ 1 i_0+s_0\approx 1i
    ; r- p2 y& f7 X* h0" m6 [0 P1 `1 C# L/ B- n9 t
    ​       
    # w4 D, o# v6 H, Q0 T +s
    ) Y( X2 A+ n1 L- R) f6 O; q0: i8 q5 q1 B/ m7 V  m" I8 [2 k
    ​        + X" q5 }: x8 u6 S2 c* P7 N! z
    ≈1(通常r ( 0 ) = r 0 r(0)=r_0r(0)=r " \, v; i) ~2 \- c& s
    06 g( L$ l( G3 _" Q# e* [) A  U/ Q
    ​       
      a4 L* w' n  _) N2 C+ u  G% Y 很小)* w. C5 T1 Q* P8 |

    , q8 y2 v0 K: C$ ^! V5 X

    ( K& {9 g9 G. Y6 p& Y+ R8 {关于i(t) , s(t) 的非线性微分方程组,没有解析解,只能通过数值计算得到s(t), i(t), r(t)的曲线,下面来看下曲线的数值解的MATLAB程序( S4 b) v" _5 L

    ( I# N! G4 d& _
    * N* e; H, ^" ^' C
    这里我们先设λ = 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
    3 \1 k1 l" ]7 g. x( l7 e( R, a0# i" l% }5 T) G" ]% ]  m3 t4 g" r; A
    ​        , m4 P* p! s, C4 H9 |
    =0.01,s 2 E2 o. o! z% ]) h, z% K" e# f
    0
    ! n$ X; I9 Z2 M& a# T​       
      ~; u3 N  A3 i! M0 g2 R =0.99- x; u  o9 ]& u: O
    也就是平均一个病人人传染一个正常人,治愈率为0.5;开始的病人比例为0.01,正常人为0.99,设没有天生带有病毒抗体的人,所以r 0 = 0 r_0=0r
    : H: Q# e  A- [( d/ R0
    & T% N# s: B0 V& v​        ) o! ^* `9 `5 [7 T" I$ R4 }
    =0,之后若果病人被治愈,则具有抗体了,有抗体的人为:r = 1 − i − s r=1-i-sr=1−i−s/ b/ K! n  Y) u% ^! R1 I

    : @3 r; Q$ K: _
    # I/ c) p) r* L6 w0 @; z6 r" ^# m
    ts=0:40;
    2 m  Z  q& \; r1 y( _, Ix0=[0.01, 0.99];
    7 g3 G0 l. C5 T6 }6 T[t,x]=ode45('ill',ts,x0);
    8 a$ y8 V! L& p& A6 G" Br=1-x(:,1)-x(:,2);8 u2 `' A7 w" I* r2 W
    plot(t,x(:,1),t,x(:,2),ts,r),grid6 s1 e# X' n; B1 V. F
    legend('i(t)','s(t)','r(t)')
    0 W( F' v8 }6 @' i3 r$ J" z2 T# x6 v' a# V

    0 _7 N! m2 s* @# ?0 e" C, Z, bfunction y=ill( t,x)
    ! P$ G! I# b$ g6 Ea=1;# [5 U: J5 E) F2 \9 t4 x
    b=0.5;
    ; q) ^. D/ T7 L, [( a0 ]. Sy=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];8 o8 ]) J% U9 A/ ?
    1
    3 T) V, h; s% ]7 A* j* O: g1 E2& F" f% h! r- B
    3
    - e3 H* \6 y9 a/ t7 D49 W2 ~; P* D2 d8 h
    52 h  ^- Q+ a6 t# u) s; a
    6
    7 ?/ C$ h" j+ B0 k; u. N* M4 L7
    0 a& S( U' @3 i, T1 t+ a$ m8
    9 z- H. A& ^* `1 D1 P; Y1 j/ I90 A% }0 m! k6 r* y8 _3 d; Q
    10
    7 L- T# n4 _7 b11/ m0 f2 o' W4 M& J0 `  ]
    7 _% Q$ t3 s9 |' \8 C" P
    2 u; P+ o+ g! j2 B7 S
    可以看出:s(t)单调减,r(t)单调增,都趋于稳定, i(t)先增后减趋于0.3 `5 a/ b3 r0 ^
    结果分析
    ; V5 t* v) V9 i* O8 x4 ?( ]先回顾一下参数
    / I5 U& m% a" T$ P5 z. \  T接 触 率 λ ; 治 愈 率 μ ; 1 / μ   平 均 传 染 期 ( 病 人 治 愈 所 需 平 均 时 间 ) ; σ = λ / μ   接 触 数 ( 感 染 期 内 每 个 病 人 有 效 接 触 人 数 ) 接触率 \lambda;治愈率 \mu ; 1/ \mu~平均传染期 (病人治愈所需平均时间);\sigma =\lambda/\mu~接触数 (感染期内每个病人有效接触人数)接触率λ;治愈率μ;1/μ 平均传染期(病人治愈所需平均时间);σ=λ/μ 接触数(感染期内每个病人有效接触人数)
    . I- h* p* c/ e" O" Y" g可以分析出:
    $ ?& h) ~  ^! M- N* ]0 Z, J& }# J
    ) R3 V, G" _$ m7 _

    4 i- D! t& n& [+ x, P) I随着卫生健康思想水平高,接触率λ \lambdaλ变小( s. U1 j6 W  k' y
    随着医疗水平的提高,治愈率μ \muμ增大
    ( N9 p/ r6 l; e接触数σ = λ / μ \sigma =\lambda/\muσ=λ/μ减小——有助于控制传播.* _; m3 q, ?" q+ ?4 z
    我们可以试试稍微减少一下λ \lambdaλ,增大μ \muμ,来看下效果
    + U& A8 B; A# L; T3 J5 r7 }; Q. h) U( Y# Q0 o- D6 e: s
    5 N' t# q9 O. s2 u% o
    ts=0:40;
      i/ j; n/ M. xx0=[0.01, 0.99];" ]' z( t8 K; \
    [t,x]=ode45('ill',ts,x0);
    5 |8 p  S' I% z# @, k/ E' F" Y$ Pr=1-x(:,1)-x(:,2);
    & G. I; u8 U* p* p% _$ fplot(t,x(:,1),t,x(:,2),ts,r),grid
    7 c2 W" l- V3 y1 U' Mlegend('i(t)','s(t)','r(t)')
    $ @" D! ]' G& R, q0 d! `# b1 \7 T) O% t& o" y
    4 U: U- X* e0 Q7 f  d1 o
    function y=ill( t,x)
    5 l% G1 P/ {, o% R8 n' Ra=0.8;  r( X. I' A% N; w6 F9 x
    b=0.6;/ Y: A$ v% Z( m4 o9 E
    y=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];
    3 V" Y# s# P. L  m1 |6 ^7 R1  D& x: ~. U$ ~! i
    2
    0 A0 K# n' b; A  L3
    . m# w6 @5 q' S: o/ H( b4
    4 [# R' u1 M8 n' V7 F5 r5% ^/ z3 V; _; }) s# _- m3 v
    6
    * \+ C# G. L, O) ^: x7
    6 Q9 u- j9 m; H4 x5 B8
    7 n6 i" y. v$ G( A$ a9 z9
    - D; z4 X: B  t8 u1 f5 \4 q4 k10; u6 J/ o! v9 }
    119 K% ]0 V9 S- g0 A- l8 _  g
    : f- g; h8 i2 x. k% S
    ; V1 Z* s3 L' w2 _7 a% S$ F
    综上我们可以得出结论:想要减少传染病的传播,我们就要在接触数σ \sigmaσ上下功夫。8 u- _# J6 q7 s6 q

    $ i6 L' z% H* X3 L# _

    7 N5 E: B5 A8 }) W3 Z6 e; t实战建模; L2 ]* U& F  ]
    数据处理, \& X! v% q5 r3 I
    " y3 c. s1 e0 j* r& v
    " \& L# Q1 E. E( A! K( @
    首先,我用python爬虫爬取了丁香医生官方数据,一共5534条数据 特征包括感染、死亡、治愈的总数,当日感染、死亡、治愈新增,疑似病例,时间,省份等14个特征
    + ~: {8 b3 z$ O( q7 ^  W
    . F" t+ n3 H9 k; r) w+ j6 c
    7 Z! I; r. q( c; f5 I2 V+ E& \5 U

    * R! e. Y7 B3 y
    + ]# q. N1 v4 l; Y6 G& z
    然后用python进行数据提取,提取了较为典型的湖北省的数据作为我的参考依据
    - r3 N8 G1 c- ^: t2 u# s
    # X5 N& c$ G& z. \7 u

    8 A! d% w  h. D3 Z0 D1 ~( k
    7 o2 d# V# n& Q, A

    8 \4 a; u& T. r7 T1 H- X7 @2 y% X然后用python对数据进行清洗,提取出了患病总数,现存患者总数,死亡总数,治愈总数,时间,省份这几个特征9 z8 ?7 ?$ _: y6 c' H

    7 \" R; ]3 C" S( ?- g3 m

    1 g; L4 R8 Z' R" }0 S对日期格式进行修改,值保留月和日,并与死亡人数的位置交换
    7 k2 a% j" i$ D6 X+ @8 |8 p4 X, f% [9 `0 u( d7 p

    # q1 P! a& g0 q- A& \* D这里我用python对提取的四个特征分别进行了数据分析(主要包括计算最值,平均值等,),并把1.20日作为第一天,7.02日作为最后一天也就是第165天,做了可视化可视化处理。
    # G# X+ M9 M+ N3 Q' |感染人数示意图
    0 z: p  O4 @  _* t; ?0 }: Q) h% `8 @! W& A

    4 l/ Y4 x! L/ q$ m! v/ a治愈人数示意图
    ( q" G. M1 T+ l& V6 O9 c% D& n
    ( t8 R+ b0 \( ^, h5 ^
    . c* t9 {% Q0 o( l* _4 o6 P

    & O' p# I) `6 `6 \0 {

    : ~  o: U( i: T! v' h. c现存患者数量图
    1 W0 i# s7 @3 y( l- R) m) v4 f) B- O* }4 {! e
    5 x* m' `: m! ]7 U4 ?
    死亡人数示意图$ s: D) r( r( a  e
    ( V; f) \8 J5 H) R$ n& c
    2 m3 P. i' g' S) H0 E. C; X
    ( \8 s* q6 O, V5 D1 h5 f4 j+ ]
    7 c; A" q- j5 C* T
    经过上面的图片与describe数据分析,我们发现有一天是异常的,患者多出了平时的十倍左右,经过查阅资料,这天因加强了检测标准,所以增多了很多。为了避免这个数据的影响我们选择将这一天删去(或者用平均数或中位数代替也可)2 \, x9 b: e8 V# A% H, S
    将上面清理过的数据存放到csv文件中6 k2 c% j+ q6 `' s. X

    / C1 C. Q: b4 M' H: I& l
    5 Y% I3 |6 X: I& u8 b4 ?' A6 X
    模型建立- ]5 U8 {4 R0 k
    模型假设
      E4 R# M3 }# v% p& U经过上面数据的分析,我们大体可以进行如下假设:9 W3 t( f7 R9 e" @% t
    1.由于不存在封闭情况,考虑开放体系。
    * G$ ^3 ?) x4 }/ ^* f2.目前数据以天为单位发布,因此不考虑连续变化情况,只考虑离散的方程。3 k3 a" a$ j/ a2 `( `9 ~
    3.新型冠状病毒的治愈人数和死亡人数相对较 小,因此只考虑 Susceptible(易感)和 Infected(感染) 两类人群。设易感人群总数为N8 q; p: L8 N& F; g8 n2 ?! g) m
    4.经专家鉴定新冠病毒患者治愈后至少六个月之内不会再被感染,所以设治愈后移出易感人群。, R* }8 T! L: h: S! V+ q
    5.设每个病人每天有效接触人数为 λ \lambdaλ(日接触率),且使接触的健康人致病.
    1 v7 L* K& G. X! s# |6.设病人每天治愈的比例为 μ \muμ(日治愈率)" H. B# W8 h0 ^
    7.时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t).8 r1 M# ^0 R' i
    ' w! k3 D' F9 `6 Q& r

    # Y3 ~( p4 @! t4 N& r模型一0 I  R6 ~6 E* }7 J4 H' V

    : V8 m& r- I/ Z! V6 P% K: _* W

      }" S+ C6 ]% w9 F" ?分析可以得到移出者r(t)=治愈人数+死亡人数
    , V: ^8 K3 u& [通过python数据处理,我们算出了r(t)的值,并将其可视化% D6 |7 t1 H, _* u1 ~
    4 t3 m. n, r% c3 h5 e1 y
    ' Y( X/ U- }. z, ?) p* }' n& Y

    ) j  J. {% v( R6 @2 i# e3 w

    & i; \9 M3 O' M我用MATLAB对其进行了拟合,拟合图像为. `9 d$ M* d3 G6 z) g8 b: K; N
    3 [$ E9 v; J- g

    8 Y2 x# s( Y; y+ P1 A
    1 D! j2 Y3 @* g' M
      a! e5 z4 Y  K" c9 B

    + D* }( i2 V3 z: Y; A

    * l& _# F5 h* G" N* T分析可以得到患者 i(t)=患病总数-移出者9 H, X( k" ?5 Y8 W7 X
    可以通过csv文件的currentConfirmedCount 直接获得i(t)数据,当然也可以通过 i(t)=confirmedCountv - r(t)获得,对此我也做了可视化展示7 u# a, u3 g  W# d  h
    4 {6 N1 d6 p, ]6 M  m1 `, @

    & x: t. ?8 z, N1 t通过MATLAB程序对其进行拟合,可以得到r(t)的函数图像大致为- G! s9 d: ?8 p) [6 w

    & L" r9 m, y& |+ x: b
    8 c3 i- m* [3 z0 M3 t4 f

    $ U- s& t) ^1 s5 _
    * }3 w) u' D) C+ N* t% k' }
    2 ^" K8 F+ `% [

    ! J7 N, T& n3 o. M为了方便,利于公式推导,我们先设时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t). 所以有3 X  M2 n8 R, T+ G1 n  K

    9 W6 u' h& o1 E) Y9 \: h; R
    0 m+ c' \# u! |/ y& Q9 b" a
    可以推导出每日新增病例的表达式
    7 p! h0 Q/ h! ^  M2 R+ ?* |5 k2 l  A9 E( w  J) f3 ^; i: q

    % C  H2 ]7 A1 R0 I$ O$ j
    ; K9 `) D. E, f  Y" l+ F" V$ f
    - R+ j+ W$ G  L
    9 ?; h. v- @: o
    0 ^5 f; }3 ?0 }" h( _+ N% @- J+ K& t
    由以上两个公式可以推导出以下两个微分方程5 v$ \5 H- O1 R0 ^

    7 i4 n5 D" E$ C/ X5 D; e1 n2 _

    6 d# O: }% E$ S( ?0 w& G
    8 T: R+ L2 X1 D8 y# B" a. }/ j

      b; H" V9 D: w$ C, ]可以知道初值* g# x( {" ~. V4 ^7 P7 X
    i ( 0 ) = i 0 . s ( 0 ) = s 0 i(0)=i_0.s(0)=s_0i(0)=i
    & ~/ s$ x" S8 @( U& |4 K( L! s08 @# o. N4 W# ~2 @3 Q0 o' v" u
    ​       
    2 V) X8 q- {( A! X .s(0)=s # |+ r/ g2 _1 C# D  R
    0( d. J' {; d: R, r1 Y
    ​       
    / P0 l" f* n/ w$ W  @7 X/ T' w6 _2 z
    . A* {& n6 E4 r: L2 L7 h- ~2 q因为一开始治愈的和死亡的肯定很少,所以r0可以看为0,于是就有:
    6 B' {* Q6 U4 ^" n4 K+ Ei 0 + s 0 = 1 i_0+s_0=1i
      r  E0 U. b1 m$ ?8 z0
    : o! o5 J# ~" C. v& N" j# I​        1 ]0 ~1 C2 G# z
    +s - Q8 T* e! N- r0 Q7 [! ]
    0
    . d: y- S! Y( ^; ~! A​       
    6 \# j$ l# j+ m2 s5 u+ I8 d =1+ \; u1 ~& r5 L0 X% F0 b" F
    通过解以上微分方程我们可以根据经验假设λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)的值分别为1和0.5(也就是每个患者可能使1个正常人患病,患者可能有0.5的概率被治愈);由于一开始患者肯定比正常人少很多,所以我们设i0=0.01,s0=0.99。对其求解可以得到s(t), i(t), r(t),的变化图像
    * Z( n4 c' _. ~9 i0 t5 C# Z4 w" T
    # C/ n: [# |* F3 i5 U9 l7 P

    * u7 s4 S4 G+ Q! D5 I6 Y0 l4 v
    ! a* h+ G5 k* S" g7 ^' r$ A
    MATLAB程序如下) ?! d. J7 A/ \0 }; {
    ts=0:40;
    5 ]- K1 p( T" T$ a4 D) E! Lx0=[0.01, 0.99];' X3 N+ [' }  q) T- o
    [t,x]=ode45(‘ill’,ts,x0);
    ) O/ Z+ i3 }* \0 J/ vr=1-x(:,1)-x(:,2);
    . l2 b8 }0 r% I4 g+ z' \plot(t,x(:,1),t,x(:,2),ts,r,ts,x(:,1)/x(:,2))
    6 J+ X+ C2 V  wlegend(‘i(t)’,‘s(t)’,‘r(t)’). b' W% [  c" u- C1 V' I; q
    / ~3 Y9 n- g( [0 ?8 |$ t: e

      n2 n! f' t) I$ D7 b8 ~2 {5 ifunction y=ill( t,x)5 f; t# d3 H: n2 Q1 V1 o( a
    a=1;3 n- ~5 Z% c. A$ o- R/ K  Z
    b=0.5;
    , H  ?& r. N8 k- Yy=[ax(1)x(2)-bx(1);-ax(1)*x(2)];, b) x; _% k' U

    0 A# r4 M, e2 }4 g8 y8 X* B
    7 @  r- ]: ~! W! z5 c. }
    结果分析:患病人数肯定有个高潮,但之后高潮就会减弱,并逐步降低为0。随着医疗卫生条件的不断提升,患者的 λ \lambdaλ(日接触率)肯定降低,μ \muμ (日治愈率)肯定上升,所以我们可以把λ \lambdaλ调一点为0.8,μ \muμ调高一点为0.6,可以得到以下趋势图。所以应对传染病很关键的一点是我们要提高医疗卫生条件9 D% q1 O' I0 p& W' p. y2 V

    4 ]& ?1 I) K/ g/ _* l
    ( v+ C$ E+ X. L, k9 r3 [: R# R
    ! n- ?; j- _6 j; d7 Z7 Z2 |
    模型二3 k0 h& L4 d' C3 P) W+ h  \

    . f& _8 b$ d3 L/ f8 V

    9 N8 ~: F/ k5 l6 b! t+ t4 B实际上,λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)都是随着时间变化的,这里我们设s(t), i(t), r(t) 为第t天健康人、病人、移除者(病愈与死亡之和)的数量, s(t)+ i(t)+r(t)=N..
    3 i( h- j# y) w# ?0 |(t), (t) ~第t天感染率, 移除率(治愈率与死亡率之和)# W2 W7 Q4 m6 p1 P
    有 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). u% s- o% W0 N5 u* H: r
    因为s远大于i, r,s(t)视为常数,所以有
    6 B9 [( g: A) g& B% h1 M3 L6 A7 J- f6 R- q
    7 I& n" J' b5 V; K

    & A6 Z, [4 \7 |: l! B4 I, c

    ' D1 [7 J+ g/ N1 |取差分近似导数
    ) M$ _/ C; b6 q1 Y1 ]
    9 [$ m; L. x; F8 W/ J
    6 J9 ~( ^. N5 `, f" @

    " W8 M1 |4 m7 O1 N
    ! B6 K7 B6 s. A
    我们可以先用真实数据对(t)进行展示并进行拟合1 `7 O; Z, I! z# B4 F8 B
    ; c# L* H5 r4 p. m2 g
    : z9 B% T4 M0 I

    5 p2 a% V0 x4 O, u' X( P6 @) s$ }4 _" ~

    / [- ]1 F; L5 G当然同样的方法对(t)进行拟合4 p7 Z' k* i+ u+ O

    5 F7 G' X! a' C4 A5 d  {
    . \& Y: H& Y5 {8 O3 v8 F6 n$ Q0 ^+ q
    做不出来了,好难,光这些东西就弄了四天,到了数学建模国赛得多难多累啊,哎,让我这个小白手足无措。毕竟还没有正规的培训,这个模型等期末考完试一定好好做做!!!
    ) L5 L3 h8 t2 _$ V) n冲国奖
    & x& L1 e. V, z% S冲国奖
    2 N7 G. g+ w- R( X9 T5 ?4 q' [. b2 j冲国奖
    # ?+ l: a2 }- W7 L2 i! e4 @————————————————6 a% ^9 A! F" \% @* _6 D# _; i" p
    版权声明:本文为CSDN博主「小白不白嘿嘿嘿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。5 q9 L; H5 h& S. p; U
    原文链接:https://blog.csdn.net/weixin_45755332/article/details/107094630% B. `% Y' R2 r9 i7 E9 s
    * j8 K7 V8 X$ X) L: J; f0 i
    - ^" A! ^" K9 T1 E. m
    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:14 , Processed in 1.177604 second(s), 51 queries .

    回顶部