QQ登录

只需要一步,快速开始

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

    & s4 ]% i: L. ~5 ?. k/ [% n数学建模之传染病SIR模型(新冠真实数据)
    2 c: {# Q* L+ s: Z# J, \( D: @传染病模型的基本问题/ Z0 D8 |; y, y& }
    描述传染病的传播过程1 N- L+ y1 \! q! b, X
    分析受感染人数的变化规律6 o! h9 g9 G6 a- W; i% V
    预报传染病高潮到来的时刻1 u0 Y5 Q7 I6 p
    预防传染病蔓延的手段  J0 J1 g' P$ y+ a
    按照传播过程的一般规律用机理分析方法建立模型( ]' w" v; u/ U- V" b" I+ X3 S
    注:我们这里是介绍数学医学领域中基本的传染病模型。不从医学角度分析各种传染病的特殊机理,按照传播过程的规律建立微分方程模型.( k" C( A, w. V5 ~( f) ?0 S
    : m: _0 Q+ n" ?' ^+ D! N1 P! N

    8 e& b; ~: t1 n  e建立模型
    5 H4 B) @$ W. t模型一
    - l' P7 H& h0 U/ ]4 ^. r假设:
    " S9 b. }% b7 L7 b' f# q# F+ s, I$ ^$ h% V. c
    ; H9 _. P% ~" m1 Q
    设已知感染人数为i ( t ) i(t)i(t)(病人数量随时间变化)/ X* g$ Y. f, x& e. q
    设每个病人(单位时间)每天有效接触(足以使人治病)人数为λ \lambdaλ- l7 b" B. x+ X9 ~
    模型:
    1 j. p$ i* G0 U; G# P  {; {单位时间Δ t \Delta{t}Δt内,新 增 的 人 数 ( 现 有 − 原 有 ) = 原 有 的 × λ 新增的人数(现有-原有)=原有的 \times \lambda新增的人数(现有−原有)=原有的×λ,即
    - ]6 I5 @/ B: G  A
    / n6 u0 U% \- M/ k# K' L7 d

    / P* h9 s$ ]% a! G/ m6 Ki ( 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  ]' g: W  r
    一开始的感染人数为i 0 i_0i
    / ]! V, I  j: Z' X- P  Y0
    + O# L) b4 s. {# {# K: `( U​       
    ( A3 w8 C) r7 n 4 Y# Z3 n, x( d% A* L* k
    i ( 0 ) = i 0 i(0)=i_0i(0)=i : m* U1 L7 a6 G) K
    0" v* y& O/ H' I1 l9 M! e: M. C" Y
    ​       
    " ]3 N2 \/ L* i $ v" R, d4 E' f, }+ F
    解微分方程可以得到
    5 ^4 L# B% W; r% U7 f1 x! f( ^  _i ( t ) = i 0 e λ t i(t)=i_0e^{\lambda t}i(t)=i # }, |# J  `* j  ?$ y0 q8 a/ h
    05 z( e0 ]" r, [
    ​       
    4 E  o6 V5 c* ^ e
    5 A. h5 R! w: n/ Wλt, M6 D$ t: S* Z& ]9 [! a
    + A8 o+ f: u  Z  ^
    所以可以可到当λ → ∞ \lambda \rightarrow \infinλ→∞时i ( t ) → ∞ i(t) \rightarrow \infini(t)→∞' h3 E" J, [. C: H: N/ W) A( E
    当然这是不可能的,因为我们考虑的因素太少了,首先一个是,若有效接触的是病人,则不能使病人数增加,所以必须区分已感染者(病人)和未感染者(健康人)看模型二来解决这个问题
    ( U  i0 L% S( p  ], t! Y( I/ U" h% L0 X  h
    ' u! D, U. B# {! Y" M

    2 t0 B4 p9 m8 I模型二
    8 @5 m5 I% `" t5 q) A* y假设:
    & b& K) F" {9 A( g' C8 K& e2 @8 s0 W1 K) p/ A( y

    ! q1 w9 M. i; Z  x; ]将人群分为两类:易感染者(Susceptible,健康人)和已感染者(Infective, 病人).8 ]8 G' U' R; j% ]8 b  {  q
    总人数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 }7 [7 H2 h+ l  C5 h' n* d, u每个病人每天有效接触人数为λ \lambdaλ(日接触率),且使接触的健康人致病.
    . Z# |" r" ?) s1 H) Q建模:
    9 Y/ k) k1 K/ f# b4 L. w每天新增的总人数为原有的人数乘以每个人可以传染的健康的人数,再乘Δ t \Delta tΔt1 c/ e1 h  W) ~: m
    7 D" T5 {: Q4 b& f! Z; h  u

    ( e3 h8 g; v/ Q3 J5 f! ?* I3 ?  OΔ t \Delta tΔt除过去,两遍N约分得到下面,# R2 x- S$ J* R6 c( p

    . G) i# I# k4 \4 w$ m8 X

    ! M9 w) ?% ~: S. r* oMATLAB解一下这个微分方程( }5 _! o! K1 c) [6 M7 [! @

    $ ~. z. H# q4 N4 ^" i2 K% i" q

    " ~7 i# S; e6 q$ m; Wy=dsolve('Dy=n*y*(1-y)','t');
    . Z% @& g8 g4 S0 ~7 n3 }
    * {6 o4 \8 L) W% n; p
    ! L) l6 A: ]3 ]3 r6 K: s) E# r
    y =
    - R8 ~; s) Q  b( h3 f/ y) K) o$ | -1/(exp(C1 - n*t) - 1)3 t, O' Y+ [; Z. r# ^
                          0
    8 V. P: k: _$ R9 ~( o                      10 m7 B7 r, s* Q) B- G- o
    1
    " z" V# M- B7 B7 g3 F; A2
    8 M& J* B$ g9 v31 h8 p3 D& Q: E$ p/ f
    4/ m8 K/ M4 t0 U  m
    5
    ' K- l2 S0 |3 x2 @, p4 c6: s; M( G5 X+ \, S
    写规范点就是这个函数
    % Y0 Z6 U8 q, B% q% W( y3 d) f, ]
    " p. |6 I0 O7 m) I& `- f9 c
    函数图像大致为
    - M# a6 k- j7 U, b, ~: y) Z6 i* H% b: u4 B9 r8 \8 d
    4 M3 ]6 L3 P# J1 C! ?
    可以看出t = t m t=t_mt=t
    0 K+ j5 g4 q" ?# W: Q) P$ ^' \m/ v- Y* B0 y5 @, I! H4 b' m4 L
    ​        " I" d7 \' v6 X3 X; R4 I" X0 k
    时这里图像的斜率有个最大值,其也就是传染的最快的时候,即传染病的高潮时刻,当然t m t_mt $ ?5 C$ B9 a8 R0 Y! w' O7 h& H
    m2 A0 D$ v  q, r4 _1 p; k! o3 T+ x
    ​        - s7 Q; |2 _& g5 J0 R+ t- I/ K
    是可以求出来的7 q4 \  V) x9 b" O/ W
    6 b9 C5 C3 p9 I1 \

      Q/ h. f  [! y* o再看原式,当t → ∞ t\rightarrow \infint→∞时i → 1 i\rightarrow 1i→1
      O' ]; l" J# [( F: ]3 q; a3 f6 Z病人的比例为1,当然这也是不可能的,因为我们还没有考虑有没有可能治愈,看模型三1 i) x  J$ W8 }2 S# Y" t

    ' }7 `  a+ ?8 L1 ?; M
    . F( o- n3 P' {" M; A
    模型三
    5 x7 e2 J- T. z7 L& B2 I假设:$ J% c% u4 `; l# G$ \

    3 o: V" i4 \5 U. W" H
    / s4 P( ?9 C. O3 S
    传染病无免疫性如伤风、痢疾等——病人治愈成为健康人,健康人可再次被感染。1 J. c3 P) @% C& ^7 A; E
    病人每天治愈的比例为μ \muμ (日治愈率),1 μ \frac{1}{\mu}
    : B* S9 m) ?5 W  @9 I; U! j& bμ
    % {2 [( m' Z1 V  M1( ^, q9 f8 y6 T
    ​       
      f$ u& T+ q: S  o 为感染期,
    $ U5 T+ Z9 D  c4 u% `# G模型
    8 @* }" W, F7 y) i8 }5 m& \& s  y4 e这是减去了治愈人数之后的新增人数. C/ k, e0 u  N

    6 t2 J: t1 h' e0 R7 L/ ~

    ( i& L( K% r6 @/ h+ x+ Z2 P+ y7 q! R! y/ ?8 x$ Z1 b0 x
    1 r: {3 q  `# h: B5 U
    σ \sigmaσ 为一个感染期内每个病人的有效接触人数,称为接触数: ]- N& m0 N" [1 n

    3 z9 ^/ k- L. z3 m4 f
    $ @$ }+ T% U3 R' H
    可以画出上面的图形分析下/ G+ l, B4 _! @2 `
    : ?' U6 r: w$ x# f! X, x# Z; z1 ^

    7 ^6 V9 a1 _; S对上面的公式进行分析,可以得到,当i = 1 − 1 σ i=1-\frac{1}{\sigma}i=1−
    2 V) m% Y" S9 G0 |* p+ j  Pσ! k) ?) Y& ^0 z% r
    1
    ' G! ?& T% C* }8 k! d$ G% H' j​        4 C% O) h+ t& Z7 ~% ~+ L
    时,i ii对t的导数为0这也就到了i ii的最大值;当0 < i < 1 − 1 σ 0<i<1-\frac{1}{\sigma}0<i<1−
    4 k7 d/ K) [1 K5 `1 _5 g$ o$ Aσ
    9 g. W7 a, V1 V3 y1
    3 ]+ }* [" h, ?4 l8 W0 W8 C​       
    + W8 l2 h; s, k: l) H0 i 时,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− $ B) \" i4 x; C5 S
    σ
    * H* L6 N. A5 {# E1 x" M9 s1& d4 b: K( [7 R' Q$ L# U
    ​       
    # R) a. s) C/ k4 ]5 J& g/ @ ,d i / d t < 0 di/dt<0di/dt<0,i是单调递减的。
    . }* _" }& h0 x1 E6 r( r2 V
    : Y9 n  W9 B2 _" z/ P

    5 e; k. F( |; o$ _当然我们也可以画出i ii随t的函数图像/ O5 s; H, D9 i; z8 t% r. t
    ) K& x7 C- V, u2 _& x/ H! W

    ( M/ \4 `; R$ K$ y- ?先看红线,若初始条件i 0 > 1 − 1 σ i_0>1-\frac{1}{\sigma}i
    8 i# O( K' B, E( E/ y0
    ' I# I/ u4 ]( O& p* Y​       
    & u7 W" G3 H9 U9 @ >1−
    * k; P2 [$ C; S! n1 s0 v! J+ Pσ
    5 Z9 J& Q9 s$ O3 m, [1
    , y# O0 z) C1 ]8 O​       
    ) H' X: q. M5 ]$ m d i / d t < 0 di/dt<0di/dt<0,i就是单调递减的,: Q' W$ c( p- T& I& _+ Y
    若若初始条件i 0 < 1 − 1 σ i_0<1-\frac{1}{\sigma}i
    # ]8 Z! _+ Y. Q+ O) B3 n0$ ]  n& n/ O- Q! I% N, B7 r0 k
    ​        9 k) i5 \, u: ?8 C; V
    <1− ! C+ x: A; H  i3 z8 ]. G
    σ; |6 u7 \6 @- V7 L7 A0 V  a
    1, D3 W0 J: `( F# y( v
    ​        8 s- T1 O* E; l" d4 W: u5 b& d
    ,i就是递增的,可以看到i对t的导数图像有一个最大值,下面的黑线就有一个增加速率最快的一个值,按S形曲线增长6 e, g3 M# R0 V

    & j( \. N4 l0 T
    " b6 I( d- O9 D
    σ = < 1 \sigma =<1σ=<1时d i / d t < 0 di/dt<0di/dt<0 i肯定是单调下降的,最终降到0
    & d) Z8 ^1 ^1 a4 r
    $ _4 |, w* y4 \* h3 `0 u$ B) H
    7 A1 ^0 K2 s  q8 A$ Y) Q

    $ v" R8 A7 l: h) V: k( A' x% l
    / p' ]  \4 b% H0 X
    综上:5 ?; p4 q- l9 `( c6 F
    想让患病者越来越少,σ \sigmaσ必须小于等于1,即感染期内有效接触使健康者感染的人数不超过原有的病人数.% t" n3 O+ x6 T) Z

    5 W2 @& k: ~" N) Y% A! n( b
    & A% F- I; Q& j. S
    这里我们分析的是感染之后还能感染的情况,但有些病毒感染之后会在体内生成抗体,就不会再被感染了,下面我们分析这种情况。
    8 ]4 F8 ~8 r: e1 ~5 z$ V5 V3 B3 ~8 F3 |5 L1 K; E; V/ i4 v

    8 q3 V# v/ f0 l2 m6 |* f& x9 [模型四 SIR模型
    4 X: w+ \* E. pSIR模型是常见的一种描述传染病传播的数学模型,其基本假设是将人群分为以下三类:
    $ @" l# A6 V8 ?# F3 v
    " F* v7 q. H( t. m. w

    / X! O2 K5 |) k& P$ Y1 易感人群(Susceptible):指未得病者,但缺乏免疫能力,与感病者接触后容易受到感染。3 V" i' e3 k6 `8 Y
    " a4 q' S4 r  G$ n
    ) f; D; Z  O) n+ O3 h# x
    2 感染人群(Infective):指染上传染病的人,他可以传播给易感人群。
    ) h! m( _. L" _# q
    3 @# `' P) b) `7 M! @

    # `- [2 t- d1 T3 移除人群(Removed):被移出系统的人。因病愈(具有免疫力)或死亡的人。这部分人不再参与感染和被感染过程。0 `9 F) N( @! x' Q) ]9 [

    % J4 |1 L, r" a
      h. @- W( Q# c: U& q, @
    假设:3 y7 a% j* `  U1 u6 w

    , C: p5 V1 V$ Y: ]/ p" `1 O. K
    3 q2 Y) t  c* |1 S0 K! x4 v$ b7 H* L
    传染病有免疫性如天花、麻疹等——病人治愈后移出感染系统,称移出者(Removed).3 X6 Z. ~; Q% j
    总人数N不变,健康人、病人和移出者的比例分别为s ( t ) , i ( t ) , r ( t ) s(t), i(t), r(t)s(t),i(t),r(t).' {: b( i& t# D. p$ i% e% s9 p
    病人的日接触率为λ \lambdaλ , 日治愈率为μ \muμ, 接触数 σ = λ μ \sigma=\frac{\lambda}{\mu}σ= $ G! b- G0 Z, k* N" }! p6 f
    μ
    ! S- R7 P' V  |* lλ
    4 i; G/ f+ L4 j' }​          D' {7 B( ?) x( _2 f3 \% Z

    5 I0 u' T! [5 C% `. s# p, W0 [1 W建模:7 X( t0 n4 a. `% K7 `  @
    s ( t ) + i ( t ) + r ( t ) = 1 s(t)+ i(t)+ r(t)=1s(t)+i(t)+r(t)=1, |3 p; N4 \6 B4 J& w. Q
    这个就是病人减去治愈的人,和上一个模型是一样的
    1 O0 ~6 n5 a% G2 [; W( w6 G0 X' D4 Z$ a( l
    # M& s$ ^- ?; Z
    因为有治愈后是有免疫性的,所以可能被感染的总人数要减少,减去移除者就是" L0 {) ]6 ?1 r, V6 O3 f1 }5 m

    % H0 Q4 U' l' ]- V- q" f

    0 z& w( s7 l. a5 \8 I: o将上式化简为:
    4 S( c* P) t& x* V
    - C6 [' }" s( e. L
      M1 ]( [6 ]. L
    i 0 + s 0 ≈ 1 i_0+s_0\approx 1i ( w( G- P$ m. B. u
    0
    3 a  u( ?  v- ?8 v/ S: O2 I" w+ b​        ; K! C6 b  x0 @' N# [7 d9 ~
    +s
    5 q7 O* q# R) I6 A0  r# C4 M) ?" u
    ​        ) P" b# W( y# A4 x( T
    ≈1(通常r ( 0 ) = r 0 r(0)=r_0r(0)=r
    6 Y8 ]1 a  u$ K8 m* V+ v/ R0
    ' \- Y( E% B4 r​       
    ! w3 t" o( J# B3 `4 U6 h5 N 很小)
    2 W6 }* W- b) t
    6 Z9 E6 K# q9 c5 k' N9 c6 ^7 p" h

    3 m: H4 @4 g% K$ Z- e" c1 B关于i(t) , s(t) 的非线性微分方程组,没有解析解,只能通过数值计算得到s(t), i(t), r(t)的曲线,下面来看下曲线的数值解的MATLAB程序2 B, e- @, G3 _3 N  a, M* _
    9 a  z0 e+ A2 X$ E1 O6 O/ y& S
    ! L6 Y; q( \4 M% ^  w
    这里我们先设λ = 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
    ; D( r7 d3 u+ i5 K9 ~" H' |0
    # E5 Y5 V7 \. P# V  r9 o* D$ M6 I​       
    2 ^2 x. m. r& T. I+ |) [- ^ =0.01,s ! k# `& J! D* M1 a
    0
    9 a  }/ i2 I1 C! p9 z, N" q​        & n( s7 l6 U9 U  V, T% F" Z' K! L  a
    =0.99
    ! @6 x# Q$ D. {- Q- R也就是平均一个病人人传染一个正常人,治愈率为0.5;开始的病人比例为0.01,正常人为0.99,设没有天生带有病毒抗体的人,所以r 0 = 0 r_0=0r # R. p/ p: m. {$ @- x: ?
    0
    $ p4 q0 z; `6 R​       
    8 k0 N( u+ P5 k) h =0,之后若果病人被治愈,则具有抗体了,有抗体的人为:r = 1 − i − s r=1-i-sr=1−i−s+ y+ {( N9 x) S5 i1 |8 U: I5 ]+ Y  h
    * }) ?4 K$ ^. b1 Y% D

    * a9 }2 ?/ ?+ n$ d( nts=0:40;) _' w6 A% M" ]" @8 R- p
    x0=[0.01, 0.99];
    6 l3 O/ W# c2 }[t,x]=ode45('ill',ts,x0);8 H! t, b2 ?( N  {; Y' d0 [
    r=1-x(:,1)-x(:,2);
    : k& `; }7 ]( p$ ]6 u  x% splot(t,x(:,1),t,x(:,2),ts,r),grid9 x) _3 V- |5 d/ ^
    legend('i(t)','s(t)','r(t)')6 W. w: k) U) s5 }* [% O  e! L/ W
    ( F6 j# Q; R1 b1 L; ?* e/ }3 Z
    1 @" C* @0 v* ~) T8 d: B* f  h
    function y=ill( t,x)
    ( r! G  X* y7 S- M, V3 [a=1;$ ?8 g' {9 B8 P- [: Q  L
    b=0.5;9 p+ z3 r; u* X. x! v+ m
    y=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];3 t3 T) d2 ^, k3 @% D$ Q
    1
    7 h& h% y) g" U. k/ V$ E$ N! s, t2" E0 @9 M: f/ i: \; }5 M
    3
    5 z! L# X7 g+ t4
    / O! l, S2 Q+ q: M/ t5
    6 `( ]& V  U: E$ G6
    # I1 @' q: M" I6 ~, t5 }( l7
    & X8 ~9 _: Q0 I8" T9 x( q/ J3 W# j
    9
    $ T$ X- x% {6 K/ V* F( ^3 }10' ^* |% R/ n& T1 X$ P
    113 N6 |& _8 S( w- Z
    , U' P; [$ h5 |/ e9 C1 x! S
    4 G* h5 V2 Y0 Y9 J0 C1 I- e1 w
    可以看出:s(t)单调减,r(t)单调增,都趋于稳定, i(t)先增后减趋于0.# Q! C8 d0 F$ ]
    结果分析9 h: @; ?* j( D- F( V- Q
    先回顾一下参数
    " U2 j2 E' b1 ~4 F# V. r接 触 率 λ ; 治 愈 率 μ ; 1 / μ   平 均 传 染 期 ( 病 人 治 愈 所 需 平 均 时 间 ) ; σ = λ / μ   接 触 数 ( 感 染 期 内 每 个 病 人 有 效 接 触 人 数 ) 接触率 \lambda;治愈率 \mu ; 1/ \mu~平均传染期 (病人治愈所需平均时间);\sigma =\lambda/\mu~接触数 (感染期内每个病人有效接触人数)接触率λ;治愈率μ;1/μ 平均传染期(病人治愈所需平均时间);σ=λ/μ 接触数(感染期内每个病人有效接触人数)
    : Z* ^, @% J: ~6 p4 X3 A8 b: {可以分析出:  K3 h" X( [2 Z. h  R( ]
    7 y' D0 V; {5 X; L6 r6 _7 W

      i  y- _0 S2 U+ w3 ~" c随着卫生健康思想水平高,接触率λ \lambdaλ变小8 {0 H- M8 B9 i. n( V6 u
    随着医疗水平的提高,治愈率μ \muμ增大; P) {; x* {- G5 G
    接触数σ = λ / μ \sigma =\lambda/\muσ=λ/μ减小——有助于控制传播.$ g. K7 p" T' {: Y/ U& f
    我们可以试试稍微减少一下λ \lambdaλ,增大μ \muμ,来看下效果
    / D- q3 o1 `* {! f/ J/ `7 a  c) P- l' X, x( h: Z6 w8 q2 n
    . w7 H) Y$ ?. U" |
    ts=0:40;3 `; l" g( s$ L( m
    x0=[0.01, 0.99];8 X" s3 \" ?. k1 i1 s  F* y/ G
    [t,x]=ode45('ill',ts,x0);
    4 d0 g5 ]1 T* z& T7 K; l3 Cr=1-x(:,1)-x(:,2);
    3 ^+ J, E) v  E8 W; p% Y. splot(t,x(:,1),t,x(:,2),ts,r),grid" u, q/ t9 Y: M9 i  t! F9 W; @
    legend('i(t)','s(t)','r(t)')
    ( c0 `4 L6 c. N4 ]8 w% {, y  H- K  Y3 K6 {6 F3 J

    " e% W0 ]% I) k, mfunction y=ill( t,x)
    / j5 v. Y, B3 e+ f2 _! ^a=0.8;( O, T0 ~3 g+ M3 q. p: y  _7 V
    b=0.6;% D: f' [5 H. T- f) n4 B
    y=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];. F7 w2 U, L' H3 M
    1" K0 U2 S8 x4 K( R1 ]
    2
    / f4 E1 Y, _! i/ j, d( [3
    " X! |0 z0 q% n3 L1 X2 y. c4$ ~# c+ N1 x7 @# v6 v
    5. m2 _. L/ z4 A" k  X
    6! R1 H( S. b7 Z7 u4 X+ Z7 ]% D
    7# U! Z* z+ n. v
    83 A9 }- r$ V7 S2 z  q
    9
    " ^! j: B  |7 I( J10
    0 y0 x6 P# W9 B6 h' o/ ?1 _, v11# f0 T2 O0 D/ c4 z

    9 d& w  x) |$ s! J
    8 H, P% g! g0 \6 a2 G
    综上我们可以得出结论:想要减少传染病的传播,我们就要在接触数σ \sigmaσ上下功夫。/ ?5 }: _5 ^7 R: X) n, h% _
    0 U) J# z( L5 r0 {# i% e
    0 \# q( \8 Y) U5 v$ z/ N( d# N
    实战建模( {; L& J1 H. N1 M
    数据处理" Y3 ]1 y! B. S& D) m$ h

    9 Z# b* \  F. p1 X/ r: k9 h9 |

    7 z( Y6 j3 V  c' m) q首先,我用python爬虫爬取了丁香医生官方数据,一共5534条数据 特征包括感染、死亡、治愈的总数,当日感染、死亡、治愈新增,疑似病例,时间,省份等14个特征
    : A% D2 A8 d( J# V& i7 M9 G" [9 A7 K# F' }! m
    . N. g1 i/ K, ^5 v0 J
    * L4 Z, ~; Y0 W4 `1 p, L. V
    % f# K- X) Y- D& Y
    然后用python进行数据提取,提取了较为典型的湖北省的数据作为我的参考依据
    , A+ ~2 Z. q4 D7 _, x4 Y* w7 p& {) F
    ) T5 K6 @$ O( ~0 W

    6 W5 \8 w* E+ M! e! o: |1 {
    3 }  [2 \$ K- x. G, o( ^
    然后用python对数据进行清洗,提取出了患病总数,现存患者总数,死亡总数,治愈总数,时间,省份这几个特征
    - d& |; E) A' O) f
    & ?% P5 o0 P; {4 ]) A! o
    8 w& x) F; e9 x6 @4 B
    对日期格式进行修改,值保留月和日,并与死亡人数的位置交换
    . r7 F5 c5 w. C
    ; s2 J0 w3 ?& n+ q: P
    8 B% `) g7 F" H' h7 z
    这里我用python对提取的四个特征分别进行了数据分析(主要包括计算最值,平均值等,),并把1.20日作为第一天,7.02日作为最后一天也就是第165天,做了可视化可视化处理。4 h. O& X; r- L5 P, s
    感染人数示意图
    - Y& K& ?- \9 x; R2 `1 L0 ?* s& P$ c0 ^' Q( X0 ]% ?

    , o. H. z" W$ j0 y, C( b治愈人数示意图
    & y: q% l" m1 p
    3 b' A& g6 I& D* E1 ?

    9 F8 W1 Y5 _# p9 d7 u# @% }6 ^2 ?$ s9 T
    % m9 O' W( J9 U/ e  w2 U+ G, e

    . `3 G3 c" W$ {3 P现存患者数量图
    - F, ^5 X5 t& k$ B7 m- q) P( a9 |- A+ Q" |5 n. x' r5 Q# N6 F! @  @1 Q

    / C6 L- G6 Z% T3 v死亡人数示意图
    ' A% ?+ b% W) g8 i" t( n& M7 C+ o: {  h  i; u& K  G/ p
    ) e, d( c7 M3 |/ H' n
    + H- @1 p9 V* v) J$ v- w

    ' \! ?& O7 _3 C* _$ }5 T# C  T经过上面的图片与describe数据分析,我们发现有一天是异常的,患者多出了平时的十倍左右,经过查阅资料,这天因加强了检测标准,所以增多了很多。为了避免这个数据的影响我们选择将这一天删去(或者用平均数或中位数代替也可)
    + K% B. ?3 V1 K) t. n9 G6 Z将上面清理过的数据存放到csv文件中
    % ^6 f! o- }5 O2 M) ^& V& l7 t6 d+ o7 \' T: ]: ~9 ?
    7 ^& ^- B1 s; U5 U2 S& P
    模型建立
    ! e6 T8 P; T& m模型假设- h3 `# t2 {9 p2 X& m
    经过上面数据的分析,我们大体可以进行如下假设:
    / ~8 X% x, q0 g, D1.由于不存在封闭情况,考虑开放体系。. U0 ]2 i6 M1 u3 u  Z
    2.目前数据以天为单位发布,因此不考虑连续变化情况,只考虑离散的方程。
    $ u: \: {9 E7 x3 `3.新型冠状病毒的治愈人数和死亡人数相对较 小,因此只考虑 Susceptible(易感)和 Infected(感染) 两类人群。设易感人群总数为N
    % Z; p  O, X# f0 U* J6 {4.经专家鉴定新冠病毒患者治愈后至少六个月之内不会再被感染,所以设治愈后移出易感人群。
      K1 Y5 q, m5 Q' _7 s1 b; b: N5.设每个病人每天有效接触人数为 λ \lambdaλ(日接触率),且使接触的健康人致病.. m& g3 Q) Z( ~
    6.设病人每天治愈的比例为 μ \muμ(日治愈率)1 e& E) P. ?! `, \
    7.时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t).
    ) N/ I& ~% w/ A: T& v3 W$ I
    : V& ]( F; A- m( U% F! ]

    9 R3 a+ b( U$ v0 l3 b* a+ k+ F模型一
    " `$ c; S  P$ K1 F6 v$ i
      z  U5 y4 Z/ Q4 a4 d
    8 m" j6 J* N/ Y- }* m/ M: T# q0 \8 u
    分析可以得到移出者r(t)=治愈人数+死亡人数0 I  @- @, C# f/ C! h
    通过python数据处理,我们算出了r(t)的值,并将其可视化1 |  b) D7 {7 I7 D
    / C; M; ?; N; ]* H! ~

    8 y6 I6 N( k) D' _; Z" o/ O, G% W! _1 L

    ' ?+ d5 C! _6 T$ T我用MATLAB对其进行了拟合,拟合图像为
    , ~' Q' f& e! ?# p, n. O3 i8 y, S" T

    : f" z* }& a* ]) U$ |& w7 N+ f5 e$ K, i( F
    6 m! Y; z& h& e/ x7 [

    ; m! s# K- U; [; [- p
      r+ ^9 O7 [! y! P: o% K5 z8 D; K
    分析可以得到患者 i(t)=患病总数-移出者
    8 G( |$ d3 T& U# w可以通过csv文件的currentConfirmedCount 直接获得i(t)数据,当然也可以通过 i(t)=confirmedCountv - r(t)获得,对此我也做了可视化展示3 ]5 _! ^# M5 ^8 l: J! E- c
    / K* o9 ?  y: F* [) @% [
    ) G( |2 Q8 m8 H
    通过MATLAB程序对其进行拟合,可以得到r(t)的函数图像大致为# m* ]( f0 X2 e1 j8 q

    8 y2 U+ q! y$ Y2 W
    . ^6 d! W5 l+ s$ s9 }

    " m' ~' Z: v6 W
    ; o& l& `0 V1 Y, \: C
    + J0 P. `: ]! Y- U5 T/ B
    ; `0 V: d+ H! h( V# h
    为了方便,利于公式推导,我们先设时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t). 所以有
    . v+ v1 U0 @* m$ b/ c: W) }! W0 }9 I! @# b+ V" a
    ) W  O0 e& J8 F8 ~9 v7 I# [& i) _
    可以推导出每日新增病例的表达式5 l0 Z/ h- j& I# y/ P) h1 K* N
    / C0 n# ~# L: O* Y3 C+ n0 q9 y

    0 ~. k# i; Q. Z8 V8 \0 H% Y- I2 e+ t3 E' C8 _3 z) [
    9 m2 V$ Z9 o- m) P' ?8 _. k

    8 y2 J  i$ ?* z2 {7 O& H

    % x8 U2 K; K3 c& m由以上两个公式可以推导出以下两个微分方程+ l# r3 I- x$ j9 ^- v4 C* P7 U

    6 g* T; D8 x* x) q6 C
    . ^' J6 c1 d# T( P  ^, g; x9 G- s! h, B
    " C/ H. j7 b: P" ~
    6 `, M3 Z: N- t  t
    可以知道初值
    ( V3 z- \+ p5 v) E3 Ji ( 0 ) = i 0 . s ( 0 ) = s 0 i(0)=i_0.s(0)=s_0i(0)=i
    7 d# C, \# u" H- `0
    ; N" ~7 \: e) D- c% ^​        + a& Z" ]. R! m  ?  K% C
    .s(0)=s
      q& f: m( C2 f. p$ a00 L0 Q, S) D6 i7 Z. X, x' n
    ​       
    5 Y; J, P2 H$ Z; d7 _( G; U
    # J- s/ @/ F5 a因为一开始治愈的和死亡的肯定很少,所以r0可以看为0,于是就有:
    - m$ C! P" c; U, c% O7 }i 0 + s 0 = 1 i_0+s_0=1i
    ( Y7 i0 K  C0 O7 v# S) z2 J4 T0$ q& k% p' i4 }- v$ i
    ​       
    + f9 W+ c/ x' ], q; Q3 y6 M +s $ ]' b8 j. D5 s5 ?  N9 u) S
    09 w9 h6 W, J, `# v
    ​        9 d' m: t  v! H" ~/ P8 q
    =1
    + j5 ^+ o, }, l2 H9 F通过解以上微分方程我们可以根据经验假设λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)的值分别为1和0.5(也就是每个患者可能使1个正常人患病,患者可能有0.5的概率被治愈);由于一开始患者肯定比正常人少很多,所以我们设i0=0.01,s0=0.99。对其求解可以得到s(t), i(t), r(t),的变化图像
    & ]; J" N4 [4 ^+ q0 F) [. \; ^7 m' k
    4 a+ M6 A6 x9 H, |; m+ c0 N
    & ?. h: O7 o& m  W5 a/ ?3 Y

    9 \# I- s) A/ Q( u  {' I

      x6 ]9 N4 C! T- }; `7 HMATLAB程序如下
    , u$ E2 @5 I0 w' O* n1 z0 bts=0:40;5 d% h3 K' J7 u, @+ [. D
    x0=[0.01, 0.99];% ^1 g* A/ k& P4 o/ k! d
    [t,x]=ode45(‘ill’,ts,x0);5 k8 u. Y9 }! _3 \+ M
    r=1-x(:,1)-x(:,2);/ s& I) g$ l; ]% r& h
    plot(t,x(:,1),t,x(:,2),ts,r,ts,x(:,1)/x(:,2))! N. X+ ]2 j5 g* D  A' N8 H
    legend(‘i(t)’,‘s(t)’,‘r(t)’); J* R$ v! N: N( A4 e2 _4 v5 `
    ( n; O& e! ^+ G$ w/ ~0 j1 u
    & s3 }" {! ~  W$ I- n: e
    function y=ill( t,x)/ Y5 M; g; U8 Y3 t0 b
    a=1;; Y( I3 Q2 W' |$ B
    b=0.5;& Q1 W# d# w8 b2 k, |6 F: W0 R
    y=[ax(1)x(2)-bx(1);-ax(1)*x(2)];0 Y1 |2 G6 v; {/ q8 @
    - r2 G# ]! `) B  J+ k
    - j7 v, N, ~) ?0 O5 ~/ b
    结果分析:患病人数肯定有个高潮,但之后高潮就会减弱,并逐步降低为0。随着医疗卫生条件的不断提升,患者的 λ \lambdaλ(日接触率)肯定降低,μ \muμ (日治愈率)肯定上升,所以我们可以把λ \lambdaλ调一点为0.8,μ \muμ调高一点为0.6,可以得到以下趋势图。所以应对传染病很关键的一点是我们要提高医疗卫生条件  K! }. d& a$ n# G4 L- L/ A1 _7 r! B& W

    3 b$ L& ~& y% m+ X2 I# B
    1 \$ D) U* l' |7 n) N

    6 S# {; y, S9 e: {+ h: i+ Q模型二/ `: b* l  r, u1 X$ S

    % h% d3 T2 Y1 s) G0 O  |

    3 j4 a6 V" O2 M8 \. I2 |2 H实际上,λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)都是随着时间变化的,这里我们设s(t), i(t), r(t) 为第t天健康人、病人、移除者(病愈与死亡之和)的数量, s(t)+ i(t)+r(t)=N..
    2 F2 u9 t$ p$ F6 z: B(t), (t) ~第t天感染率, 移除率(治愈率与死亡率之和)0 K5 o3 X+ y# G; ]' F5 t+ A
    有 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)
    " X7 I( E3 h0 _. A因为s远大于i, r,s(t)视为常数,所以有; C; S* X0 m: t: y2 z

    * B/ V$ W* j) X8 b

    ; n, h; S9 C. ^" D2 x" _! x( j0 O) p2 ~- \1 J3 K

    ) g& V; S6 D9 @/ B! Y- {( |取差分近似导数- a1 F1 S1 h+ `) j& L( C0 g
    * K; d2 ]+ R4 v+ A9 D& l/ `4 g

    ) c! c$ t& Q6 d
    8 A7 W+ K3 c; w; y$ a

    : A# P: a% ]4 V( T2 E$ l我们可以先用真实数据对(t)进行展示并进行拟合
    + x9 }' u0 o) f9 Y0 k3 [5 t& J+ u+ F& X7 t. ^

    % P! z% \- F4 a! K3 n  C
    8 v2 ?7 p' c1 S9 |2 w, J9 M

    : L/ n% A. D3 X' _1 J. N当然同样的方法对(t)进行拟合6 f5 K; F+ a- z' w3 G7 g) F$ t

    - D$ c8 e( ]% H$ z/ l

    8 P/ F9 Z: B( h: S做不出来了,好难,光这些东西就弄了四天,到了数学建模国赛得多难多累啊,哎,让我这个小白手足无措。毕竟还没有正规的培训,这个模型等期末考完试一定好好做做!!!
    , x# Y: q7 W3 S" S$ W* W, C冲国奖
    9 i% a1 a9 }  k" R1 n- h冲国奖
    ' m( X( w* l% ?冲国奖: U4 O+ p% n8 ^- P2 V; Q
    ————————————————5 n( v9 \8 j, e* `" v# U
    版权声明:本文为CSDN博主「小白不白嘿嘿嘿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    2 p! ^: {% m7 p5 i4 y0 @. h; G原文链接:https://blog.csdn.net/weixin_45755332/article/details/107094630
    - c2 a3 l5 M) m9 |. K
    / ~1 t8 a: l5 w6 R; t' r5 x7 B0 @
    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-8-1 21:33 , Processed in 2.195611 second(s), 51 queries .

    回顶部