QQ登录

只需要一步,快速开始

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

    1 ^+ W1 r% j8 W+ C9 `: u. T2 {数学建模之传染病SIR模型(新冠真实数据); S! Y# z' m9 t' Z0 Z6 X: P
    传染病模型的基本问题0 j3 E0 s& @1 V: Y9 e
    描述传染病的传播过程2 n" K! _% Q* X9 n, w$ `
    分析受感染人数的变化规律1 m. f4 C, W" q. m" u; d* x
    预报传染病高潮到来的时刻
    5 t4 w& p+ O2 C/ T4 l8 `" A9 U预防传染病蔓延的手段
    / |3 l& `! S8 E) u按照传播过程的一般规律用机理分析方法建立模型( n, u" P$ k& Q( m. j( d. G+ _
    注:我们这里是介绍数学医学领域中基本的传染病模型。不从医学角度分析各种传染病的特殊机理,按照传播过程的规律建立微分方程模型.
    - K7 U- z7 Q0 T" D3 V6 @* ~  v; s# |. T  v" ?. ]
    ) C; c& N9 l) a* n+ q" H. V
    建立模型
    + c& l  W* D( f& S, m& E4 m1 s模型一) W; G+ I0 r( G
    假设:8 Y& q6 Z. S  s9 u' T/ f2 B& s* _; y

    & \7 U3 M# H/ y" m' p) W

    8 I* C- V) T  b3 W6 Y4 e设已知感染人数为i ( t ) i(t)i(t)(病人数量随时间变化)- f* W) y. _1 S& Y3 q  l/ _" K
    设每个病人(单位时间)每天有效接触(足以使人治病)人数为λ \lambdaλ
    + O0 B# r  W! W8 J模型:+ Y# u2 T5 w0 @/ s# E
    单位时间Δ t \Delta{t}Δt内,新 增 的 人 数 ( 现 有 − 原 有 ) = 原 有 的 × λ 新增的人数(现有-原有)=原有的 \times \lambda新增的人数(现有−原有)=原有的×λ,即) R' o  q  N9 n! U" w
    ) r) A7 o& i# `

    % N  R- I* V( }, ci ( 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
    ) ~) X% n, H2 w1 q, \7 Q3 }0 _一开始的感染人数为i 0 i_0i
    8 E1 e/ e/ j' y1 n8 h! O0  _* ]* q# Q# I3 a9 C# t0 \( l
    ​        ; f5 B& O6 r+ h9 l1 I/ I

    . p$ G$ M5 z3 P* w5 Z0 vi ( 0 ) = i 0 i(0)=i_0i(0)=i ' f5 L: G5 u! m& z. a$ |
    0
    $ ?$ J7 g$ n3 e8 g1 q( j​       
    ) n6 G7 _; y4 T0 X
    . w( Z) Z7 E% B3 R: j: _% a解微分方程可以得到; y3 J6 v- ~( E( V. q. \
    i ( t ) = i 0 e λ t i(t)=i_0e^{\lambda t}i(t)=i 4 U+ H! \* h2 z- f% j
    0  F% j- ~5 Y* T
    ​        ' p6 b) J* C2 M. F5 X
    e
    1 u4 s  U3 V0 n: B) tλt& M' e/ F7 S9 w- W
    3 e# t& a( n& J! ?" f
    所以可以可到当λ → ∞ \lambda \rightarrow \infinλ→∞时i ( t ) → ∞ i(t) \rightarrow \infini(t)→∞
    5 }# q0 Z) s2 i: P( g  h当然这是不可能的,因为我们考虑的因素太少了,首先一个是,若有效接触的是病人,则不能使病人数增加,所以必须区分已感染者(病人)和未感染者(健康人)看模型二来解决这个问题2 x# C6 q4 j1 ]

    4 ]% V  O: f# f- a

    & k  `0 {2 G( q1 y7 _模型二
    * n5 i5 ^9 D' L假设:
    . I' M& U, z3 O( Z/ Q  ^, q
    ' l# H) T/ N. I

    ( s3 V1 r/ N( X+ A( L将人群分为两类:易感染者(Susceptible,健康人)和已感染者(Infective, 病人).
    ' f5 r5 F4 b6 n3 L8 I0 M8 ?总人数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)=13 N' g& N* d1 b" m3 Z, K
    每个病人每天有效接触人数为λ \lambdaλ(日接触率),且使接触的健康人致病., j3 ]. r- W. i/ X! ?
    建模:# g7 p$ _6 r: J3 e+ X* c- `
    每天新增的总人数为原有的人数乘以每个人可以传染的健康的人数,再乘Δ t \Delta tΔt
    5 e( m' x- P1 n* M7 B3 P4 y+ b' V1 H5 g- {) ], e% g8 Q9 L8 ]' r

    1 F3 I5 D' h+ E8 K: V1 yΔ t \Delta tΔt除过去,两遍N约分得到下面,
    5 Y2 R7 b7 S2 U  B1 K; n2 L* U; W, ~- |: Y

    9 h0 C9 `7 v* tMATLAB解一下这个微分方程' }/ W, c- U9 r( V! ^% _" J
    $ Z1 U/ T5 j, G& o% X6 [  P

    ; v# r. _, [' L( L% Y: o- zy=dsolve('Dy=n*y*(1-y)','t');
    ) o4 C: @) n+ ^7 ^
    . F. t& G8 T" b0 G3 V6 x

    & x; Y9 R" X9 vy =
    : {" X/ F7 T9 r+ `% g% O' l -1/(exp(C1 - n*t) - 1)
    7 |  Q+ h5 q: Y                      0
    ( j7 u% l8 w2 B. [. p                      1, h+ g  R7 s$ D8 V; l1 O2 C
    1
    5 j. u2 h$ _1 [4 V4 i2( a% u2 E" d; \9 t# I, q  J1 F
    30 v# V1 c6 n9 s& D( [
    4
    " G$ e" s& j  u$ d7 O5
    6 M  Y4 {$ A+ _. S2 O- _" F6/ d1 H) K1 N9 }- X6 Q/ f9 }* q7 p
    写规范点就是这个函数& A1 a7 d, L+ ]% q: i

    # ~0 Q1 m. {$ U5 n1 K7 A  ~2 t, i  C* l

    $ M- f0 X5 k" S( ?3 X8 N函数图像大致为+ E1 D# i  m5 s. A6 c
    : t3 N6 ^' v& V# \+ j" V0 ?7 U
    1 R* @& G% S& j+ E# j) _$ M8 @% |
    可以看出t = t m t=t_mt=t
    4 P1 {: [4 ?( P' w" }* D/ cm8 `# f/ m# L9 r) x. e7 l
    ​        , L! N8 L+ u  j4 J9 M) r
    时这里图像的斜率有个最大值,其也就是传染的最快的时候,即传染病的高潮时刻,当然t m t_mt 7 Q( N2 Z! r3 l6 \9 j
    m' H+ A4 g% C9 w! P) _( C+ J
    ​        : Z: M6 |  o; k# ?6 K3 g2 u* c
    是可以求出来的
    - C+ o. m/ Z: T( n* d
    3 f7 v: o2 ^! m) o

    9 Z7 N  w5 H/ x8 o, o9 H再看原式,当t → ∞ t\rightarrow \infint→∞时i → 1 i\rightarrow 1i→19 C9 M$ O8 p  s
    病人的比例为1,当然这也是不可能的,因为我们还没有考虑有没有可能治愈,看模型三
    # m+ ], p; O2 y" Z0 B/ j4 R1 Z3 M# ~; L

    + ~( |- w2 z3 L( @2 A7 o. f模型三. {: v/ V& x1 m; f7 U& ^
    假设:
    ; C1 I9 i# _! d& P: p
    ' p: P. }" Z) A5 J7 `
    + Q4 x: H: o, y6 y# H2 [
    传染病无免疫性如伤风、痢疾等——病人治愈成为健康人,健康人可再次被感染。
    : j3 a, v( E  A( X% j5 ~病人每天治愈的比例为μ \muμ (日治愈率),1 μ \frac{1}{\mu}
    4 E0 _" S/ ^; }. Bμ: N2 P0 Z1 C! l" K+ y
    1
    ' f. f) H' ~( U; v​        # L3 ]5 z& k( `& [* ]# ^9 o
    为感染期,
    : R0 L5 M  z2 l& e& j, c模型6 L+ K9 y/ G8 r. \
    这是减去了治愈人数之后的新增人数$ Z/ e; N& G# n+ F6 A& z
    3 O6 U* a' x0 h2 _- x. ]

      K9 d  i* ^, Y0 K; i
    9 |, |& w$ K! |  E/ \9 |

    . m- X( {" a9 oσ \sigmaσ 为一个感染期内每个病人的有效接触人数,称为接触数
    - A) K7 b* o2 U9 G
    , Z8 M2 I7 c6 v$ ^' j  L7 ?
    5 h/ i8 X& y+ t- H$ s) ~$ K/ b
    可以画出上面的图形分析下  \2 A1 J5 r# ~& ]- g! J9 M4 Q
    , i9 p. D6 I; J9 u: N8 a8 t0 |% U5 {
    & _& C5 Q0 E+ u! e0 d: k# V
    对上面的公式进行分析,可以得到,当i = 1 − 1 σ i=1-\frac{1}{\sigma}i=1−
    ) z7 G7 [3 f+ F! x5 j, \6 @! lσ
    . j1 ^: }+ z, M8 p, g3 Z9 [1
    4 z6 l( A( y; S' ?1 u​       
    1 W% x# L4 _0 I9 M  F: L. k8 @ 时,i ii对t的导数为0这也就到了i ii的最大值;当0 < i < 1 − 1 σ 0<i<1-\frac{1}{\sigma}0<i<1− , n/ j( a4 T# [
    σ
      @0 o5 Y. I0 [1: e1 L$ B( f/ l" \9 a
    ​        $ k: f6 b8 s, m0 P
    时,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−
      r2 ?* Y$ Q0 [1 Hσ& k% L: I7 J8 N1 N* S1 d9 K2 ?
    1
    3 {, @9 c) G% F/ X0 M5 P9 h8 f​       
    9 s2 O: d; q, K' k" Y, r0 m: g ,d i / d t < 0 di/dt<0di/dt<0,i是单调递减的。) V0 B: T: I) C+ w2 A! P
    & V& z' H) L3 @5 u; a

    9 G% C# q' L, N: ?6 T, N3 M: r2 ~当然我们也可以画出i ii随t的函数图像
    ; |  m' Q, h( |3 j% y7 i
    + T& d5 w7 s3 Y3 P. r! C$ a# T' u

    , [" D$ a7 r9 i; @: @! s/ v' z: S先看红线,若初始条件i 0 > 1 − 1 σ i_0>1-\frac{1}{\sigma}i
    4 i7 W# F: T4 e* s0
    ' M8 }* w: y. P( [/ e' H​       
    ( ?8 t' t* @) s! U' W" _' k9 F >1−
    0 a1 \! x6 R* a( Vσ
    7 f+ u8 c  S- m9 Q! P5 w16 W8 ?/ X. V* C" a4 Y
    ​       
    % ?0 ~0 w. f  F: A# y/ x d i / d t < 0 di/dt<0di/dt<0,i就是单调递减的,
    * L+ H3 G( x  }若若初始条件i 0 < 1 − 1 σ i_0<1-\frac{1}{\sigma}i
    9 d7 j8 i2 Z* ?5 D. G2 }0
    : O0 d0 ^: _7 w. A$ I4 s​          M/ Z) W' L( A
    <1− # @/ |% s5 {* I+ n. D
    σ, p1 h% H3 b- |6 ]) @$ U7 t0 t
    1
    8 y1 n( @* V7 q' m​        # H& \8 ?! H7 o5 e0 a' W2 |% c
    ,i就是递增的,可以看到i对t的导数图像有一个最大值,下面的黑线就有一个增加速率最快的一个值,按S形曲线增长
    3 k" c1 J0 F7 K# ^6 o" w! O1 b3 G1 g3 o, Y
    8 _# [: E9 a2 n$ R
    σ = < 1 \sigma =<1σ=<1时d i / d t < 0 di/dt<0di/dt<0 i肯定是单调下降的,最终降到0+ C5 J1 a7 p0 y9 j$ [7 W7 Q
    / N; |. g, ~& z% k* l

    & ~9 }& V; i, l1 W# @3 L( R& O' n7 w8 |& y9 P) E$ M

    , Y/ }5 \7 ?7 ]' W综上:
    - ^+ P6 z' q% _- {" u! t想让患病者越来越少,σ \sigmaσ必须小于等于1,即感染期内有效接触使健康者感染的人数不超过原有的病人数.- ^) P+ W+ c+ A" G( v. O: E; q
    - e: f0 s* z! t
    3 ^% k1 W* K: z" ~* T; E8 y6 X7 h  E
    这里我们分析的是感染之后还能感染的情况,但有些病毒感染之后会在体内生成抗体,就不会再被感染了,下面我们分析这种情况。
    0 A0 b2 }$ n  f* Z
    , `) n* p: J6 }  P* {/ z

    3 U  i( u  V, p模型四 SIR模型: Y; T8 F! G/ z7 H/ w
    SIR模型是常见的一种描述传染病传播的数学模型,其基本假设是将人群分为以下三类:5 f: \' r+ M( ]3 h7 v# t6 w0 [

    + E: J. f4 s# w1 f* u% E3 J
    . o' H4 g$ o1 R4 }8 E
    1 易感人群(Susceptible):指未得病者,但缺乏免疫能力,与感病者接触后容易受到感染。" r7 o3 Z9 [; }
    + ?7 G3 g# [  g, n- B: \9 \# O, C

    8 _$ Z) J, T' j& e0 [9 s) Z6 h, E. W* k2 感染人群(Infective):指染上传染病的人,他可以传播给易感人群。
    - N" l, {0 N8 r# Z5 {8 S. L
    . ?0 a( W5 h2 _0 d

    3 C) O( c& H; R, Z5 i3 移除人群(Removed):被移出系统的人。因病愈(具有免疫力)或死亡的人。这部分人不再参与感染和被感染过程。( O. c) j( b8 Q  K2 G5 _

    - _4 s& b5 p$ z6 V
    7 e6 Z" C; l. J, H4 V  y
    假设:# \, O+ l7 m- T. y( K2 W
    & s/ T& ]9 m$ ]: t/ O

    7 j- l8 _: L/ Z传染病有免疫性如天花、麻疹等——病人治愈后移出感染系统,称移出者(Removed).. P2 V( q7 F) i+ |7 d6 A$ w: ?
    总人数N不变,健康人、病人和移出者的比例分别为s ( t ) , i ( t ) , r ( t ) s(t), i(t), r(t)s(t),i(t),r(t).
    ; q7 i" m" n- H+ m7 }: ?病人的日接触率为λ \lambdaλ , 日治愈率为μ \muμ, 接触数 σ = λ μ \sigma=\frac{\lambda}{\mu}σ=
    1 F( q& L; C" Uμ) k# p  s$ {& D3 y
    λ
    0 O: W0 C2 D0 S; R  S) t9 }​       
    6 f0 S6 R* d8 p; s0 G3 H/ I6 v : v# U$ O7 w  \. j6 d
    建模:+ Y" m( t- P4 O% W9 l/ H$ d, E* r- t
    s ( t ) + i ( t ) + r ( t ) = 1 s(t)+ i(t)+ r(t)=1s(t)+i(t)+r(t)=1; m/ i  _5 w; J8 b7 Y% U
    这个就是病人减去治愈的人,和上一个模型是一样的
    - [9 g0 x+ A3 J( M* a8 g
    : R4 v; R) d7 b: r9 T% A
    8 A6 i$ m5 C( ~6 e. W. k
    因为有治愈后是有免疫性的,所以可能被感染的总人数要减少,减去移除者就是3 O! x& a4 _% z! ~) c4 o
    ( q; `0 x# x& P/ d( Y5 j

    * A- y$ h+ j/ U( O- C将上式化简为:
    ( E$ [0 ]& O8 O, ]
    ' [; i- m+ m. s2 X
    4 l( D6 ]$ x& b* c: G
    i 0 + s 0 ≈ 1 i_0+s_0\approx 1i
    , \9 u) v8 V! o9 G  F0% `# ?- X4 B4 j2 C1 N4 U
    ​       
    6 K/ _. K4 `7 C +s ' E5 F/ v; T9 d3 d
    0
    4 r) h. x- L# V8 q! G! w1 g* n​        6 ^9 q9 ^/ g- I* H( p
    ≈1(通常r ( 0 ) = r 0 r(0)=r_0r(0)=r
    3 M, N( G/ [: z- d2 y5 i7 o* [0, {/ N4 s* j8 Z, A  ~/ ~
    ​        6 w; j$ P- e8 o, J5 b  n
    很小)0 s3 `7 W' Y; J) Y8 k2 S
    1 a6 G, O+ o6 J9 W3 _; W# ]
    8 O$ F  u8 V2 c. U$ G; B1 Z! B. b
    关于i(t) , s(t) 的非线性微分方程组,没有解析解,只能通过数值计算得到s(t), i(t), r(t)的曲线,下面来看下曲线的数值解的MATLAB程序' S7 O3 f% z6 r* @) ~3 T$ ]/ n
    ' r3 s( _: \* \, E9 D

    9 S  ?' [$ _; H1 `6 J' r& 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 " M/ [- D9 H1 @
    0
    $ q4 }5 ], c, Z8 y# G​        / x- e' G  u8 I. i' d
    =0.01,s
    1 I7 B! y# j6 w. j4 Z6 A0; N5 X+ v* q: E# y3 s3 R/ `6 A
    ​       
    7 c8 @1 {1 r; L" ?/ }8 m+ B =0.99
    : c  l3 }+ H) \, N也就是平均一个病人人传染一个正常人,治愈率为0.5;开始的病人比例为0.01,正常人为0.99,设没有天生带有病毒抗体的人,所以r 0 = 0 r_0=0r - H& H' d7 H- n6 ]' y/ e
    0
    % Q" O9 G) N; t9 ?8 R  i- x​       
    . K6 q9 ]# V8 U. L% k) F5 z# @ =0,之后若果病人被治愈,则具有抗体了,有抗体的人为:r = 1 − i − s r=1-i-sr=1−i−s
    / F% S" r. d5 W
    % S$ k/ ?: w6 d1 H& @
    3 d' q1 G' m* ?7 a
    ts=0:40;
    " l7 j; X+ w1 [, s" Z) yx0=[0.01, 0.99];
    % }1 r, q" W! j3 l[t,x]=ode45('ill',ts,x0);
    : k+ y& {' e4 H" dr=1-x(:,1)-x(:,2);
    - ^3 D) z) y2 ^) B; Eplot(t,x(:,1),t,x(:,2),ts,r),grid4 B  h3 e! s! R! j1 T* A
    legend('i(t)','s(t)','r(t)')+ k* H  A$ E# S% k' k5 X

    & E7 c8 k* q! P. B( A1 Z. J8 ?( m+ M
    : g1 ^: M% w. e
    function y=ill( t,x)" a+ k: [2 c: ?( A# }& r2 {- f
    a=1;
    2 I, n! l8 o+ f6 p5 rb=0.5;
    7 B' G8 I4 f, r3 Q! }; fy=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];
    ( |/ G$ L7 @/ |8 d1$ r7 I1 p+ _  M' _% V
    2
    ) l' H1 ?/ B4 o3
    3 l# R" l3 y" V6 S$ K6 A4 X4( H* l6 Y' t: h( K
    5
    # M$ V; ~& T" V6 ^0 f% q# [3 @+ h6  P! u7 s" c2 v4 \6 d/ L1 K
    7
      U- ^; X4 u5 W2 ?" }8/ ]: F5 Q+ V/ T' Q, I* U( v! A
    9- D9 M) T' b& o: L) t! `, J4 S
    10
    . U6 E1 a; t* z+ q- {& Z11
    # }; n5 r# l2 O2 l
    " l. N& o- ^* i  q6 z0 L0 n. K
    8 v% q0 @! F, [) ~) t* V- B
    可以看出:s(t)单调减,r(t)单调增,都趋于稳定, i(t)先增后减趋于0.) l5 b- S# b7 d5 u3 h
    结果分析
    0 |" _) O3 y9 X$ L$ a先回顾一下参数
      \: u0 s$ h# ~- B" F接 触 率 λ ; 治 愈 率 μ ; 1 / μ   平 均 传 染 期 ( 病 人 治 愈 所 需 平 均 时 间 ) ; σ = λ / μ   接 触 数 ( 感 染 期 内 每 个 病 人 有 效 接 触 人 数 ) 接触率 \lambda;治愈率 \mu ; 1/ \mu~平均传染期 (病人治愈所需平均时间);\sigma =\lambda/\mu~接触数 (感染期内每个病人有效接触人数)接触率λ;治愈率μ;1/μ 平均传染期(病人治愈所需平均时间);σ=λ/μ 接触数(感染期内每个病人有效接触人数)
    + Q! z; ^! c) g8 c1 H可以分析出:+ [7 V5 b9 j& D2 p
    ) _4 z! y$ R! R# T5 ]3 q0 w
    0 q& T: Z! W# g- j4 W1 W, ~
    随着卫生健康思想水平高,接触率λ \lambdaλ变小) T4 m; e) S, j9 [: W5 }
    随着医疗水平的提高,治愈率μ \muμ增大
    # p; U4 f; i7 t3 H* D$ c接触数σ = λ / μ \sigma =\lambda/\muσ=λ/μ减小——有助于控制传播.
    & ?! T* }1 f6 J3 ^5 R( ]5 ~我们可以试试稍微减少一下λ \lambdaλ,增大μ \muμ,来看下效果! W. a7 r$ N' B% \8 o+ Q1 a

    5 T( }4 s0 ?' B5 x; Z/ T8 x
    ) J7 p0 h# @9 B  s7 F
    ts=0:40;
    # X, a0 Y8 i1 v: L$ nx0=[0.01, 0.99];. R: \8 |$ K  j: {$ G
    [t,x]=ode45('ill',ts,x0);, p2 L- s8 E6 q  _1 J/ Q$ V  q, ^
    r=1-x(:,1)-x(:,2);
    ) V* `! s7 Q( O* `plot(t,x(:,1),t,x(:,2),ts,r),grid; b! Y8 {9 y8 Q' J9 Z" G# I" I
    legend('i(t)','s(t)','r(t)')1 L% R5 R; u0 |. c2 ]+ L( @

    7 Y. b, Q3 Y8 T

    7 b2 O6 K+ e* p3 Q0 [function y=ill( t,x)# {- v. @. A6 d8 w/ g' b0 K/ ]
    a=0.8;+ V# m( x- X1 E6 A" _$ Y
    b=0.6;
    # {" R/ f$ Y: j1 uy=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];
    ' g* e, W9 ~. f5 s# M* ^! x6 U7 O1
    * L2 t% C! k$ ]& j: c! m0 R2
    * T3 T5 E6 `9 {# K. y9 Z/ L! [3  K7 J  X" Z1 U' X5 [  C* D* R7 r
    4/ h, l% O3 f% g# y& f: I
    5
    7 u9 P4 b% w- o" T" q8 g& L60 S4 N+ O7 [* q
    7
    ( W! o, `7 C  [9 b; K1 N8
    ( h/ k+ l+ A; ]+ P  \* E9
      x. ]) s6 _& J5 {5 }* r10
    , C" t0 Q% C1 \4 R) T2 g115 ]! e5 W2 ?: e1 P  a

    9 ^( m5 X3 W7 g7 m" L- f

    2 E( u8 k) ~: W4 m" n1 P8 [. P+ \综上我们可以得出结论:想要减少传染病的传播,我们就要在接触数σ \sigmaσ上下功夫。: D+ F/ _  s* T; I

    * E6 C$ |3 b# X! P
    9 @' K- W8 i% B
    实战建模" J; J" v  @) n3 ~! W  h
    数据处理  V% p: l9 e- I/ s+ \

    ' A& m1 o) t3 m% _
    4 p/ J2 G' A6 |* G% c2 U
    首先,我用python爬虫爬取了丁香医生官方数据,一共5534条数据 特征包括感染、死亡、治愈的总数,当日感染、死亡、治愈新增,疑似病例,时间,省份等14个特征
    9 y& c& m2 d  g# D
    1 U+ O% o3 }) M1 M
    - A) v- R3 H. l0 S; Z1 N, G3 T, a4 z6 P
    0 v$ p$ g" z! b5 \

    0 ^: ~9 k- ?$ h) M; [2 `$ R然后用python进行数据提取,提取了较为典型的湖北省的数据作为我的参考依据* l( ~, s* A/ `. p
    7 s( e% X- e. N9 h* G$ a3 R

    : W% x" S9 B8 G( g" h( Y3 G' K8 k; L
    2 ^+ h5 ~/ p" c9 A
    然后用python对数据进行清洗,提取出了患病总数,现存患者总数,死亡总数,治愈总数,时间,省份这几个特征
    & h- ^9 p9 f0 y7 ~  F1 c) z2 U# s/ u1 [& s% s5 [1 V, f
    6 c3 ]4 i$ e' i; I& W1 |# h0 X
    对日期格式进行修改,值保留月和日,并与死亡人数的位置交换, G' K: Z, Q8 F! w6 S

    1 N3 m4 ~* @; @) i4 ]; l

    # Y9 L1 w6 l8 L) b/ P7 m4 O这里我用python对提取的四个特征分别进行了数据分析(主要包括计算最值,平均值等,),并把1.20日作为第一天,7.02日作为最后一天也就是第165天,做了可视化可视化处理。
    # X9 j$ t6 n( O' h* T8 m感染人数示意图9 X; g" L' b' D- d) i  K

    - z! X' }) q0 k/ f* k& ]

    % f9 L: l4 t) b1 a治愈人数示意图
    % O6 L$ N+ i: v
    & i* q9 ~2 W9 f% K! O8 U

    7 ~/ Q  V5 m. g9 j/ u' a  b4 r2 S
    7 Y, n- g' C# H" p' F, x6 E4 L

    6 O, g3 H. ~% t) I1 I现存患者数量图
    7 l2 H" P2 R9 M1 Q1 W/ A
    ; m0 I. J/ g* l# M5 D  @
    / k- h4 C& o: ~& F/ g
    死亡人数示意图" P! ^. L; ^. |1 o
    ; ]8 w% S2 v  i2 n

    * }+ g: p1 i7 s' w
    * d+ M; y& u5 e

      M2 w8 R2 Z+ A8 Z: k5 D经过上面的图片与describe数据分析,我们发现有一天是异常的,患者多出了平时的十倍左右,经过查阅资料,这天因加强了检测标准,所以增多了很多。为了避免这个数据的影响我们选择将这一天删去(或者用平均数或中位数代替也可): A0 I+ K+ p% V, }
    将上面清理过的数据存放到csv文件中
    * W$ W) t# u/ i+ {' v$ G: y  x6 Z# K, u" b# p

    1 ]3 S* j, u1 A模型建立- X, c% r' L$ `) A% K. c) u6 M
    模型假设
    3 n5 V% f6 G. N4 x' w经过上面数据的分析,我们大体可以进行如下假设:
    5 J0 [; L+ O1 Y6 W; M; {5 r; ^' t" T6 ]1.由于不存在封闭情况,考虑开放体系。
    7 }) F: C4 I0 F* z2 r2.目前数据以天为单位发布,因此不考虑连续变化情况,只考虑离散的方程。7 |4 `. G0 T; h
    3.新型冠状病毒的治愈人数和死亡人数相对较 小,因此只考虑 Susceptible(易感)和 Infected(感染) 两类人群。设易感人群总数为N! c; Z3 K) F6 D( e. e- o
    4.经专家鉴定新冠病毒患者治愈后至少六个月之内不会再被感染,所以设治愈后移出易感人群。
    / s0 R6 B4 [  @) B2 {9 z; i5.设每个病人每天有效接触人数为 λ \lambdaλ(日接触率),且使接触的健康人致病.! [) E% ]9 [! g/ c+ P/ G- F1 v
    6.设病人每天治愈的比例为 μ \muμ(日治愈率)
    ) S, p) L4 W& Y7.时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t).  n% [1 k4 C& r
    3 A$ I8 K0 _( j- ?4 B, b2 N
    4 m: h* V& w$ R2 ^3 g
    模型一
    ' B" U  t0 x  h7 t" z0 S. Z) {# F" X6 `: r( S* K5 i
    + P5 E2 g% A7 V: e
    分析可以得到移出者r(t)=治愈人数+死亡人数0 u8 n6 x- n. Y
    通过python数据处理,我们算出了r(t)的值,并将其可视化' b& s& p6 L; [0 E  W

    % {! j  Z( Z& i" v: t% C' e
    ; E) v" O0 f! A* B' s

    $ _, O) m* \' N( W
    * G. M; \+ a6 @2 w* M, F% _
    我用MATLAB对其进行了拟合,拟合图像为- m. ~, v/ S& W9 o' ]

    / ~1 Z# D' I3 w  w3 |  U, i

    - A. _1 s% u7 u- c' E) h3 s9 N: W8 N, g
    8 @8 a% F* x. O2 v2 t7 K" o  P2 `
    0 m, {- c& t$ l% H

    ! X# n4 _3 m6 P, F: j) _9 k+ D6 R分析可以得到患者 i(t)=患病总数-移出者
    9 g) a6 S5 k- I# f+ _可以通过csv文件的currentConfirmedCount 直接获得i(t)数据,当然也可以通过 i(t)=confirmedCountv - r(t)获得,对此我也做了可视化展示
      y3 u. Z& y2 Z- s+ z1 r9 U2 u, g; \/ Z
    & a# O* X$ `8 q4 {
    通过MATLAB程序对其进行拟合,可以得到r(t)的函数图像大致为6 t* E# E- i6 d' h
    . M' V8 {9 M" t+ u$ j" d. `% [

    4 H( Z" ?/ v  m4 F7 p# J* Q+ z  u5 x( ]) W2 p- b+ H& C

      d: j; M) _4 k% }. d
      Z8 _- z( L2 q% V1 Y5 m. b
    6 `3 l  i! S. M' J* `+ f
    为了方便,利于公式推导,我们先设时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t). 所以有
    / e7 k! d* d8 g+ {# Z) w  a/ K
    % o! V' D& q7 L
    : q# F# G# O/ R2 A, C- ?
    可以推导出每日新增病例的表达式, z$ R6 r* _% X. H. P
    + Y+ A' e+ ^' v& F% P

    : L/ O! T1 B1 Q3 T. Q
    , U# @* Z3 d, _, h9 ]
    ! f$ `  O1 Y$ v

    7 h& Q% z# o2 e" K; d3 H
    + O/ B  N; P5 x/ i" w! b2 U
    由以上两个公式可以推导出以下两个微分方程
    # ^( u9 f) J5 w% R5 `" F# R7 d- ]8 h, m

    3 [- R: g. M' I7 l- h! [' p4 x$ z+ W8 M2 c( u( A3 u
    - r9 b7 ?8 k! d; f0 E  j" R0 m
    可以知道初值
    # D, X4 {2 G0 u9 I) z- hi ( 0 ) = i 0 . s ( 0 ) = s 0 i(0)=i_0.s(0)=s_0i(0)=i
    2 P, m9 e4 J+ v! {0 N- ~" o0
    0 @1 X! ~" @" S* T8 U% n​        8 }6 y8 O; D$ i
    .s(0)=s   R2 E; _: ~- M5 e, }. d* E* W
    0
    4 m; Y: R8 D: M- S4 c​        : i, p! c1 r/ B6 b1 n
    , l9 f7 H4 I: Q0 x. k/ n
    因为一开始治愈的和死亡的肯定很少,所以r0可以看为0,于是就有:( }5 e# t6 o/ W# y: W
    i 0 + s 0 = 1 i_0+s_0=1i
    ! w# X7 f9 x: R1 t. o* m0
    ) G) s5 {& X# p3 S3 M; s( }​        & ?: u2 f. a. c
    +s
    + S/ B$ l6 I- D* t/ X+ k8 V; Q0& B7 Y  c" M0 q9 f2 Q
    ​       
    $ `3 x7 e1 g, N' G =1
    7 _) w" P- a1 J9 f7 m通过解以上微分方程我们可以根据经验假设λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)的值分别为1和0.5(也就是每个患者可能使1个正常人患病,患者可能有0.5的概率被治愈);由于一开始患者肯定比正常人少很多,所以我们设i0=0.01,s0=0.99。对其求解可以得到s(t), i(t), r(t),的变化图像
    6 t) P( G) W# K+ y, s* M6 E) ^' R' y7 }. r! V7 B
    6 F, r* I! B$ _8 j: r
    0 |1 L6 {5 u( o+ ^' M4 o

    % _: l2 B: R! D$ P% @6 b1 O2 WMATLAB程序如下
    9 b1 F! @- c3 ots=0:40;9 G5 z8 P! o" W" G+ Y; @: S( V
    x0=[0.01, 0.99];  \4 ~* J$ Y( o, y# i2 G) \
    [t,x]=ode45(‘ill’,ts,x0);) G. z% I+ i' }! `% @# Y7 ?/ S
    r=1-x(:,1)-x(:,2);/ j$ V" m8 o' o2 M
    plot(t,x(:,1),t,x(:,2),ts,r,ts,x(:,1)/x(:,2))
    - u+ F4 J( F) j  @3 flegend(‘i(t)’,‘s(t)’,‘r(t)’)
    2 T0 q$ j/ c4 K! a2 S
    * B: d3 T  D" L: n* b
    * s4 C" H: C' c, w8 o2 H9 }( O8 V
    function y=ill( t,x)- N4 j; A$ r; H% G
    a=1;- q$ f, Z6 D  u4 |9 x6 x, Y: E
    b=0.5;' J- I2 S1 J& D' K% `
    y=[ax(1)x(2)-bx(1);-ax(1)*x(2)];
    * t- I* o4 g  {6 H. G7 O, k4 X& j2 c
    / A6 c+ [& e9 x
    结果分析:患病人数肯定有个高潮,但之后高潮就会减弱,并逐步降低为0。随着医疗卫生条件的不断提升,患者的 λ \lambdaλ(日接触率)肯定降低,μ \muμ (日治愈率)肯定上升,所以我们可以把λ \lambdaλ调一点为0.8,μ \muμ调高一点为0.6,可以得到以下趋势图。所以应对传染病很关键的一点是我们要提高医疗卫生条件7 C8 M6 a+ s9 b
    ! V( Q! a* d% J7 g

    $ B$ f# f( @4 `8 |& ~) ^" h% [. s7 ^* c- b9 M- k" Q% f. |
    模型二
    + @6 m8 K- ^8 N* P5 A2 n, C# J0 F0 |) u" w- v! C6 W

      H( ?" e7 }; u5 h0 I3 l, b实际上,λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)都是随着时间变化的,这里我们设s(t), i(t), r(t) 为第t天健康人、病人、移除者(病愈与死亡之和)的数量, s(t)+ i(t)+r(t)=N..
    . l$ T7 V6 v' m: }(t), (t) ~第t天感染率, 移除率(治愈率与死亡率之和)
    & Z2 d- o9 v$ p( j有 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)$ T$ N/ w$ T6 U3 a( S4 Y' s( L
    因为s远大于i, r,s(t)视为常数,所以有
    * C: ]4 ~3 P+ P" \, ^; U/ v( J* b: u

    7 l7 N' m/ X! F& D- o: ]* D
    9 @3 n- \' G* f% y+ o4 m% R

      o1 N6 M! X: a; M% J取差分近似导数
    5 L" @  B2 ^& y, Y1 K& S
    ) [2 ^  G6 }) ?  d* x) u
      _  g1 u5 O! m1 P" m" Q
    1 ]4 [' _! g( w6 e  B* a$ ^2 I% V

    2 X% x5 w& F/ }( p% D8 [& K我们可以先用真实数据对(t)进行展示并进行拟合; W9 W% ?) [6 ]6 _

    2 ?5 z! j, d: d8 H" k0 V- r
    - o, T# H0 J% ?8 S/ t
    6 W6 r- ]/ l. x$ V' R" H
    : b# ~' J3 s" X( p, t4 y8 c
    当然同样的方法对(t)进行拟合- C2 I+ i# q: @, i2 J
    $ L5 J  w' Z6 Q9 i& B

    5 L, \& H  z7 L2 O做不出来了,好难,光这些东西就弄了四天,到了数学建模国赛得多难多累啊,哎,让我这个小白手足无措。毕竟还没有正规的培训,这个模型等期末考完试一定好好做做!!!
    - Y$ {" w6 z8 X8 }0 Z0 k( @冲国奖
    # Q+ a) D+ O  y( a% F) q! S- C冲国奖
    ( [, o) Q$ t; k" a0 T& c& t3 B冲国奖* X5 i4 C" f6 `/ r. @2 D
    ————————————————  y: c1 U2 L. i
    版权声明:本文为CSDN博主「小白不白嘿嘿嘿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    % }& r0 H! H/ ]8 N% W: R* H原文链接:https://blog.csdn.net/weixin_45755332/article/details/1070946300 P$ s1 h0 ~6 P& D( D# z
    5 D' t* H" ~, I

    ! R8 r7 ~% a& R6 X
    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:41 , Processed in 0.393937 second(s), 50 queries .

    回顶部