QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5673|回复: 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 M/ E. D/ e0 H6 n数学建模之传染病SIR模型(新冠真实数据). H# D- R1 e7 G! K% V3 f& c
    传染病模型的基本问题
    , W# j( {: {1 n5 f描述传染病的传播过程, R& b" T# T' z6 ^  U
    分析受感染人数的变化规律
    / t8 r" p; Y2 h9 Q6 s) g预报传染病高潮到来的时刻
    % i% m  }( J  M3 @预防传染病蔓延的手段' G$ c8 J3 r/ M& {4 w* Q' C
    按照传播过程的一般规律用机理分析方法建立模型
    7 F5 _) R& R5 w8 _. G1 q" y注:我们这里是介绍数学医学领域中基本的传染病模型。不从医学角度分析各种传染病的特殊机理,按照传播过程的规律建立微分方程模型.% y3 K7 U9 U; k; }. _; b' ?
    $ Q8 q: Z1 ]3 ~  g! k; |

    * L0 G& H" `( X9 x. w# O* E4 v& j建立模型
    ) S! U% s5 M0 S2 o+ v4 f; o/ E* _9 s模型一
    - D$ L( m$ N/ P3 f5 P) d假设:% I' m* p/ ?6 t

    0 Q  s! J8 s1 W: U

    3 D* V$ @8 Q! F* ~% n( y设已知感染人数为i ( t ) i(t)i(t)(病人数量随时间变化)- E# s5 ^' v5 V. @( I& e2 C
    设每个病人(单位时间)每天有效接触(足以使人治病)人数为λ \lambdaλ& R# \) J* S6 f
    模型:: h: L$ f0 D' z2 s
    单位时间Δ t \Delta{t}Δt内,新 增 的 人 数 ( 现 有 − 原 有 ) = 原 有 的 × λ 新增的人数(现有-原有)=原有的 \times \lambda新增的人数(现有−原有)=原有的×λ,即3 Y# `2 D7 W: K( x1 L5 T
    9 b. w! ]" v5 [, b$ O9 W) B/ {8 F
    % p5 E0 T: r3 X- r, L5 ~
    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  @, d1 r0 \! j* @
    一开始的感染人数为i 0 i_0i
    4 ]- J' t) Y. C0 S' c& q3 A0. J$ m% H/ o  K% m2 {$ Q/ Z: R0 y$ J
    ​        ) A- g! Y8 O9 |9 F" A; I2 ?
    * L; K6 G; k# E4 o$ G
    i ( 0 ) = i 0 i(0)=i_0i(0)=i , K9 N& v) y+ p3 u# P8 z8 @) Z
    0
    8 V. L1 y3 ^0 B; O/ A% S/ }# t  Q​       
    2 _/ E% Q6 l" R2 j0 p* t
      w. l6 D& N# o9 u. E解微分方程可以得到
    ( ?6 L8 ^+ U" A$ x9 T: Y8 U. ci ( t ) = i 0 e λ t i(t)=i_0e^{\lambda t}i(t)=i
    . O8 ?, P+ j/ R* {( Y0
      o4 v9 ^/ N5 M9 G​       
    & C/ C) P; X- v( F+ h6 A e
    , E2 z0 e' I( ~4 c* zλt
    2 J% b6 p# t  ^, a( s  b7 I
    1 Y6 f+ n8 o0 g! o4 o" f6 r$ \8 l6 T所以可以可到当λ → ∞ \lambda \rightarrow \infinλ→∞时i ( t ) → ∞ i(t) \rightarrow \infini(t)→∞% B+ l4 t% U- I
    当然这是不可能的,因为我们考虑的因素太少了,首先一个是,若有效接触的是病人,则不能使病人数增加,所以必须区分已感染者(病人)和未感染者(健康人)看模型二来解决这个问题
    ) T. T- M" O2 K; O- @" P6 L
    ( F7 y! n8 r. I$ J+ z
    ! i* {) o5 i- k; [+ S+ x- _
    模型二
    . I' {; ?6 m" G1 K1 h* m. p假设:
    5 g' }) _7 a  e" p1 b$ e8 j- O$ i; C/ v% J; ]1 U* F
    ( o# q. P/ X9 \- p. r
    将人群分为两类:易感染者(Susceptible,健康人)和已感染者(Infective, 病人).
    . e8 W* T3 z: `) ^# s& z* V总人数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$ ~& y8 @* t+ m/ m
    每个病人每天有效接触人数为λ \lambdaλ(日接触率),且使接触的健康人致病.4 b9 J( q# T/ N
    建模:6 }& Z* E* r% c5 V" U- L# Q. y
    每天新增的总人数为原有的人数乘以每个人可以传染的健康的人数,再乘Δ t \Delta tΔt0 S4 O- P5 J' k; }. J5 e# s. M

    : }9 ~& ?5 p4 G" _0 U/ l) @

    ( f/ Y  {1 |* AΔ t \Delta tΔt除过去,两遍N约分得到下面,3 j; Q+ v# _9 v4 Z, B1 @

    - X  C8 k% r5 L3 R( M
    ; p# n3 @* Z5 E# X- T9 A& E
    MATLAB解一下这个微分方程% T' G5 j' h6 h! O0 Y1 a1 A/ |
    / M7 i0 ^0 F* i0 G) g
    ) ]) X" W, E" x* t. ?# m, x  M
    y=dsolve('Dy=n*y*(1-y)','t');4 f# h# a+ s2 W2 a7 y

    . a9 a) e" G+ n) @! @6 z3 w

    ) I: N. |3 F& q. g% M6 Ky =
    / O5 Y5 v9 M' M -1/(exp(C1 - n*t) - 1)$ c9 h. |) x" w3 L5 Z
                          01 {* A& f% v2 ~4 T% j! Z( z
                          1
    * {& V' C4 _$ q' B8 i3 ^! \1
    ) u: v/ z0 F! h" v' A" h2
    7 `2 H# n& q& Z- G& F3$ `, ?" e, s  ?$ o- V
    41 u# X8 h( I) h. N
    5: D5 z6 M  e. V3 o
    6
    7 G7 f/ A3 S! E: ]写规范点就是这个函数( k# w5 N! }' E
    7 _6 r8 m  @; @# E  F

    & u9 ]4 f0 j( s5 [/ D+ o/ u函数图像大致为& U+ X$ e' A% ?# \$ `0 J7 a9 ~
    8 ^8 T5 W+ W7 W" N" R

    5 R) ?$ d: {7 W% A0 l7 e7 y- M可以看出t = t m t=t_mt=t
    . [6 J& `* V  m# T# Em+ _. \7 w0 N/ L) J% i
    ​        $ }& j, l/ n) @5 i
    时这里图像的斜率有个最大值,其也就是传染的最快的时候,即传染病的高潮时刻,当然t m t_mt & w# h% ~  x5 |: X
    m
    9 |% L1 I2 _& k, Q​        3 z" ]7 P+ g) B8 h+ z
    是可以求出来的8 {! n. ]' X4 c7 R
    8 L6 W0 ~4 q7 e3 n5 L# P

    - ~2 B; }, L& k7 b再看原式,当t → ∞ t\rightarrow \infint→∞时i → 1 i\rightarrow 1i→1
    : a8 Z6 _5 U; j- [8 J* H- \病人的比例为1,当然这也是不可能的,因为我们还没有考虑有没有可能治愈,看模型三6 K( W) i  T- a4 U1 a, @
    ! z8 t% E6 J: E7 W

    0 Y3 C3 H4 s$ k! Z模型三
    9 _8 j4 I, ~9 {% H& q假设:
    ) h1 [3 y9 S! G6 n* X. B6 t- A4 I3 V
    " t6 {/ {' K. G% D3 L

    6 |5 D3 ?+ W9 P7 {传染病无免疫性如伤风、痢疾等——病人治愈成为健康人,健康人可再次被感染。; S% c4 p5 B+ P1 ]5 B* K4 j/ ~
    病人每天治愈的比例为μ \muμ (日治愈率),1 μ \frac{1}{\mu} " D# n* N$ t3 w" Y( F
    μ: S5 F2 ~" ^- G2 z
    1
    1 R9 _( J$ N0 w% f2 C​       
    " @4 c: q+ I) b$ E+ k" D( H: a: E 为感染期,4 V7 W! }( T/ `/ l
    模型0 t7 m, L* d6 ~
    这是减去了治愈人数之后的新增人数
      T3 r. t- T7 V; B5 C/ }4 s
    5 X: k1 Q! C" Y* c! o- \, |' w
    " \0 [( u  o, C$ y3 [6 ?* a% v
    & A4 e% T# l0 H

    5 W$ b' a6 n' q0 Qσ \sigmaσ 为一个感染期内每个病人的有效接触人数,称为接触数) k3 ]8 |9 D7 Z2 [0 Q" Z

    8 b$ Y- \; m3 L
    + ]! L4 ^( X% Q1 V2 |8 Q) j" ]
    可以画出上面的图形分析下( B% a8 g, y9 y1 [& L& Y( g3 J, b

    " q1 F' x3 e* z

    # f2 g8 a4 F8 w& z! C) C对上面的公式进行分析,可以得到,当i = 1 − 1 σ i=1-\frac{1}{\sigma}i=1−
    & Z$ j" @( Y* U- m% c  `% n! zσ
    : Y  u( I+ p4 T6 b! K, l; ~1# v0 U6 u1 l2 O  _& x
    ​        8 R- s; X- E" U$ O+ D5 R# P& S
    时,i ii对t的导数为0这也就到了i ii的最大值;当0 < i < 1 − 1 σ 0<i<1-\frac{1}{\sigma}0<i<1−   S1 b/ C- @9 @3 |# ?1 ~. x
    σ4 o7 _7 ~% E2 T7 i* O8 K, l
    1
    - E* r) i6 z" w, T( k7 n( t​       
    9 t5 l! N: n6 [- H6 ~6 f 时,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− / ^. h1 {0 u6 W! `7 W$ q; {
    σ+ A% U9 [1 R3 V6 ]0 Q$ i
    1- ~( x: k. L5 l* q8 i3 J
    ​       
    - M& w$ ?8 v8 y; c ,d i / d t < 0 di/dt<0di/dt<0,i是单调递减的。
    4 ^* P5 {7 f% h2 i1 y* u
      \; w+ B; w, o

    6 @$ Q$ T- F* ~% M当然我们也可以画出i ii随t的函数图像
    & n$ @! P) c0 M& j3 s9 k
    $ |: r3 j: c! |! S

    1 f+ Y( C, o4 U3 x4 M5 L先看红线,若初始条件i 0 > 1 − 1 σ i_0>1-\frac{1}{\sigma}i - }+ J) f/ m: O) e# W: V
    0
    : U  ?/ |& Y. I: r​        " Q+ C! s: I0 \. n' |3 d3 {
    >1−
    ) \6 `% m& h" ~* B8 z: a9 rσ9 ]6 [- P2 a! s
    10 K. Z  S0 S. A: |: @& q
    ​       
    . U( R6 p9 h; P( D2 s d i / d t < 0 di/dt<0di/dt<0,i就是单调递减的,  J8 J8 h4 y0 n3 M3 u4 [8 Q
    若若初始条件i 0 < 1 − 1 σ i_0<1-\frac{1}{\sigma}i $ o7 L, C% s( z' N' X# ^5 o; W+ o
    0
    # F$ v% x, \! U4 ^* }/ H​       
    + S0 ?/ M. k6 [1 f2 W. z* Q- w <1−
    % G: t; r" a* \6 n: N" g6 vσ) v# C" [8 d% U' ^" J+ Q: d( \
    1; p. A* s7 A( n  }
    ​        # S& _' B, P# ]8 `, Q: u% `" Z8 l
    ,i就是递增的,可以看到i对t的导数图像有一个最大值,下面的黑线就有一个增加速率最快的一个值,按S形曲线增长! r) F+ Y' j( z' E
    . l$ f& u+ h, c7 M1 `" p
    8 p1 u' H5 E: w
    σ = < 1 \sigma =<1σ=<1时d i / d t < 0 di/dt<0di/dt<0 i肯定是单调下降的,最终降到0. f; s' k/ P" b1 j: T0 M

    + w- c, E0 g. B: V; ]  u' P

    + y6 @) P3 n/ ?& }! Q0 {- P) M5 s% e/ e  w  r) N

    6 h# g; W1 U2 t2 _' S/ Y, ]8 J综上:
    6 t6 ?' M% J& K& F; J2 @5 l/ T7 B$ y想让患病者越来越少,σ \sigmaσ必须小于等于1,即感染期内有效接触使健康者感染的人数不超过原有的病人数.
    0 q% [" M/ s- s! }' \# D3 F, s# a" _  {# G8 i! N% R# ~* O% ]

    2 u5 v( G- O* w- f这里我们分析的是感染之后还能感染的情况,但有些病毒感染之后会在体内生成抗体,就不会再被感染了,下面我们分析这种情况。
    ' Q2 S, C4 v: r) z. l* I& f; d1 d3 Z) P
    8 X8 |4 M3 w9 i* m) G
    - ^" ~  i0 i5 G# w
    模型四 SIR模型% m2 ~  C1 I4 Q, V4 m
    SIR模型是常见的一种描述传染病传播的数学模型,其基本假设是将人群分为以下三类:
      j% d5 ~+ |" k: l; |2 q& r( [! J( {, u8 W" }. X
    6 a) V6 j. n7 k4 F2 {
    1 易感人群(Susceptible):指未得病者,但缺乏免疫能力,与感病者接触后容易受到感染。
    + T1 H, E  u0 R+ \. g
    7 M% x* U& E4 _9 o  o

    ( M) X' w# E1 j: d7 \2 感染人群(Infective):指染上传染病的人,他可以传播给易感人群。
    , F* B1 e+ i0 Y" m, }" x8 m5 p, Q- ^$ |$ O

      Z$ A1 K# }- C* d7 H% A8 K3 移除人群(Removed):被移出系统的人。因病愈(具有免疫力)或死亡的人。这部分人不再参与感染和被感染过程。. D, b' E& V1 S0 g. r5 i% T. d

    : q) b% E$ W1 `0 x+ j
    # o4 E- H  U: K% Y' k! t
    假设:* \, t6 ^, E) Y+ _* @
    3 G9 z! r! V2 q; @

    5 q7 B% Z: t( P5 p8 y传染病有免疫性如天花、麻疹等——病人治愈后移出感染系统,称移出者(Removed).
    1 |7 x4 T0 ~1 v, l+ v, E总人数N不变,健康人、病人和移出者的比例分别为s ( t ) , i ( t ) , r ( t ) s(t), i(t), r(t)s(t),i(t),r(t).' a1 I7 [9 e! n* E0 O! B
    病人的日接触率为λ \lambdaλ , 日治愈率为μ \muμ, 接触数 σ = λ μ \sigma=\frac{\lambda}{\mu}σ=
    9 c% b, A7 _: a1 Uμ
    9 {3 |- n& L* }! E) vλ: ^3 a& ^* }/ a) E3 X' J  Y
    ​        0 D/ f" s9 q" D! H+ r0 N0 t" J
    4 m( B1 ?$ h: o
    建模:
    / X  n. p) d/ i# g% Z( Es ( t ) + i ( t ) + r ( t ) = 1 s(t)+ i(t)+ r(t)=1s(t)+i(t)+r(t)=16 s( n  D1 o# N1 |/ l. o9 P
    这个就是病人减去治愈的人,和上一个模型是一样的
    ! _% g9 X: d+ m; y7 w/ {& ]) D: F+ n+ F7 v9 a9 K. v! V, g: _

    2 X1 C) ?) I2 \; i2 Y: P1 U4 j因为有治愈后是有免疫性的,所以可能被感染的总人数要减少,减去移除者就是1 @6 v/ O" {2 M4 t5 q

    8 V: L7 o3 w7 Q& b

    - R. F7 L& z: `# u/ q9 z# Z* H( D2 m将上式化简为:- K6 r$ o+ T% v% ?" ?) E9 Y0 F! Q
    ) X  q" s$ p$ Y4 U! G
    ; S  `% g, t7 }. C/ C6 Z8 X* h. Q
    i 0 + s 0 ≈ 1 i_0+s_0\approx 1i $ J4 U/ |) j5 x4 P
    0
    " O9 y! n4 |. v# W​        9 h, Q; _' G% X% G( Q0 C
    +s 3 N2 G! A. h% [1 c/ j4 G3 r1 c+ O
    0# m0 e, x7 ?( P- e
    ​       
    5 ^: E. G: B5 ?/ w: b0 h ≈1(通常r ( 0 ) = r 0 r(0)=r_0r(0)=r
    / M& G+ S# V9 `6 H0+ o6 Z7 d. q- K: {
    ​        ) [- k3 x# W  z) ~( T: Y0 u
    很小)4 A7 s- y% W, K0 @" W" G/ y
    : o0 R' T5 A2 a
    , ^. u1 I# v# @
    关于i(t) , s(t) 的非线性微分方程组,没有解析解,只能通过数值计算得到s(t), i(t), r(t)的曲线,下面来看下曲线的数值解的MATLAB程序! _( L7 d" i3 ?0 Q2 x: S

    $ Y0 I" g& \+ ]. |0 c
    $ {4 y3 \* G6 B5 h6 G3 B
    这里我们先设λ = 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 8 N! D; a/ H2 }5 {
    0& W8 @4 a$ |3 b6 \. C: S  y$ w0 j; V
    ​       
    , V; q  @& l" V =0.01,s
    ' y; Y$ H' Q' J# Q, F0
    ; N6 m0 q3 O( s, l  g​       
    0 A2 u; _* k2 f3 ]' _ =0.99* ?- f, [; R9 @+ {* p6 O) P) K
    也就是平均一个病人人传染一个正常人,治愈率为0.5;开始的病人比例为0.01,正常人为0.99,设没有天生带有病毒抗体的人,所以r 0 = 0 r_0=0r ) R& S5 g# n3 s
    0
    0 G! [( y- p/ r" w​        # K" y6 Y6 {. @: v  Z/ @
    =0,之后若果病人被治愈,则具有抗体了,有抗体的人为:r = 1 − i − s r=1-i-sr=1−i−s0 R( q  a7 {" m3 X8 X3 P0 Z( {
    2 S7 v" _" t/ i# h

    ) l" K7 q# U7 T7 r: hts=0:40;
    4 o8 C' p" s6 @" Cx0=[0.01, 0.99];6 o" H- P3 m% u! t" A3 Y$ A
    [t,x]=ode45('ill',ts,x0);; N2 Z" Y% e& @
    r=1-x(:,1)-x(:,2);( Z! p8 ]4 y1 ?/ U; ]# G/ U
    plot(t,x(:,1),t,x(:,2),ts,r),grid
    ! ^; C6 F# ^! y# Ulegend('i(t)','s(t)','r(t)')
    0 K+ I. ?% \- o/ Y: c% G& t1 }4 V$ o, x
    # p2 y( e2 b( t; B7 @4 ]9 p8 W
    function y=ill( t,x): l+ W. V' ^6 s, d$ _5 e5 C& ?
    a=1;
    ' o) l2 d# v; B% s7 N( j4 \% ~! zb=0.5;% I3 V# S8 |4 i0 D, S! o
    y=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];
    : r' l1 n  U" f4 F4 h  ~1  R, N" R6 |1 ]! u) O& O& K
    2
    4 Z6 Y8 `" B: A32 l% I0 _. ]1 |0 J3 b6 Q
    4
    + H( R; C1 ]! \  _4 w5) d; p" Y' K/ i) s, f" d. C
    68 U- O9 ~8 {2 n! e
    7  {5 B$ ?. @1 Q' w3 x
    8% o/ j( f" Y# B/ X& j. m. _6 j
    9: X& Z3 ?& g! G% q
    10
    / l, F3 B( |6 q9 X, c11
    ' L& L8 x3 U8 m# s1 g" \- q# l$ P1 s3 ?- ]- q
    7 ^$ N: ~4 s0 m9 Z5 G
    可以看出:s(t)单调减,r(t)单调增,都趋于稳定, i(t)先增后减趋于0.
    0 Q' ~4 u8 W2 ^0 |8 |0 E# b$ v结果分析
    " |) J! ^* t$ Y先回顾一下参数
    * ^: [$ C/ P6 I7 q/ I6 b) H接 触 率 λ ; 治 愈 率 μ ; 1 / μ   平 均 传 染 期 ( 病 人 治 愈 所 需 平 均 时 间 ) ; σ = λ / μ   接 触 数 ( 感 染 期 内 每 个 病 人 有 效 接 触 人 数 ) 接触率 \lambda;治愈率 \mu ; 1/ \mu~平均传染期 (病人治愈所需平均时间);\sigma =\lambda/\mu~接触数 (感染期内每个病人有效接触人数)接触率λ;治愈率μ;1/μ 平均传染期(病人治愈所需平均时间);σ=λ/μ 接触数(感染期内每个病人有效接触人数)
    : V7 s! q/ D. L1 o, r  G/ l可以分析出:
    & J1 o- t2 H9 J6 q8 u6 _
    $ ^2 ^( \9 U% X$ Y( d: s

    ' c+ q0 o+ n/ u1 z随着卫生健康思想水平高,接触率λ \lambdaλ变小
    ( v# W7 ]& \( F! s随着医疗水平的提高,治愈率μ \muμ增大
    , a2 q" I: N, Q' y2 J接触数σ = λ / μ \sigma =\lambda/\muσ=λ/μ减小——有助于控制传播.7 T" }( {+ d, h# {; F
    我们可以试试稍微减少一下λ \lambdaλ,增大μ \muμ,来看下效果
    # o5 W7 f* m. ?; Q$ f
    ; g5 a/ F2 E) Y# a" M' p

    8 X# l9 l5 ^6 [, M; B5 G+ ?$ y9 B5 bts=0:40;
    ) J% p; V7 N, ~) B! w7 T# \& f+ B  ox0=[0.01, 0.99];1 G2 Q8 p. _1 ^8 l9 F1 l+ h
    [t,x]=ode45('ill',ts,x0);
    " }- h! A7 o- a; d5 p- {' _r=1-x(:,1)-x(:,2);! ~% [$ I9 S. `: V+ D
    plot(t,x(:,1),t,x(:,2),ts,r),grid- O* m1 A, I* H' W) I, v# x( t& {
    legend('i(t)','s(t)','r(t)')
    4 `/ \! \: y% W4 L6 _  S
    ) x3 h3 j9 T' O. h- b% M
    6 T  g' q7 G; {) k. E2 f
    function y=ill( t,x)4 q3 I/ B* d$ t) e, V
    a=0.8;; y2 {6 K# `, m% G3 A
    b=0.6;
    0 W" w9 z$ L: E& p, O, d1 @y=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];
    / S4 i3 t( J; Y5 P10 |9 s9 o( g' }8 B; ~3 h. D# k
    2! R6 ]( ?% E7 y8 W8 S: P( E" h
    3
    4 U7 p9 o0 A. f49 X  v# T2 r% `, C) y7 X
    51 z& g# M9 m) B- M, J
    62 b. T. o! V% L7 {0 B
    76 t$ q: ]/ e- j: n0 a6 _& x
    8
    & A6 c3 ?+ ^* O2 ?4 I7 Q9  U# u" y9 G0 t* f; C7 |7 B
    10
    0 d6 f' [- h+ B: i6 X0 H11
    6 g3 T! H" Y5 f/ M- F
    8 i) J% X$ L& i$ X" g' C, d3 J' Q1 Z2 {9 k

    : Y+ b& |1 B. L6 a7 S: ^3 h- P综上我们可以得出结论:想要减少传染病的传播,我们就要在接触数σ \sigmaσ上下功夫。
    # I* E" I1 P0 w9 z% z* c6 o2 N: ~/ A( n

    % O' D" F2 m7 L% j6 ?) p! I+ \实战建模% r0 l* x# D  h' h/ F6 M
    数据处理, E& I1 d' Y/ L3 x/ Z  V

    9 v: [& q5 m6 ?2 w$ Y" B. p

    7 I5 `) _& q. T; k首先,我用python爬虫爬取了丁香医生官方数据,一共5534条数据 特征包括感染、死亡、治愈的总数,当日感染、死亡、治愈新增,疑似病例,时间,省份等14个特征
    ) c: |) o+ E5 s+ }2 I$ Q4 C
    . I6 D) I8 q1 X' m; g4 H

    3 W4 A* U3 y  g! V1 \7 b6 \) U" \/ k- j4 _3 O8 Q

    & t1 O; ?4 K1 ^然后用python进行数据提取,提取了较为典型的湖北省的数据作为我的参考依据
    5 P1 w- Q7 N$ ~  J. U  S
    $ d. v& Y/ L/ X( L. c
    ' ]8 N- d) \5 W5 t" n
    ' d  u8 v6 i% j( ^: E; \8 d) h
    4 D( V& w5 f+ i4 p1 o1 `
    然后用python对数据进行清洗,提取出了患病总数,现存患者总数,死亡总数,治愈总数,时间,省份这几个特征9 r# d4 W% G- t( Z9 p

    + U& `0 s0 G( `! b
    . A2 W( H) C+ _, y8 M
    对日期格式进行修改,值保留月和日,并与死亡人数的位置交换! z9 j& W1 G% q2 R  @
    . E) c* x; h. s9 p

    ( e2 ?1 C) m/ I, ]  O) A) T2 G这里我用python对提取的四个特征分别进行了数据分析(主要包括计算最值,平均值等,),并把1.20日作为第一天,7.02日作为最后一天也就是第165天,做了可视化可视化处理。6 i# k, q' o; L, j! I" p2 R) q1 ?
    感染人数示意图8 ]3 n  V  W5 M  {) M, @4 E4 u' r

    6 p5 M1 V! f0 U+ [( Y' q
    / k$ w% i# G6 ]% S/ N
    治愈人数示意图
    0 G4 U5 L3 g1 c1 r6 Z9 ^0 _* }' s0 L5 i6 A' u7 V6 a* N
    0 \4 x: H* z" X" }! a4 H2 E

    . i4 O6 S: N7 Z: |, }

    % m1 ~1 C* A! L( P% R6 |+ }现存患者数量图
    6 F, F' Y/ [7 a2 x( T7 Z% Q7 B. Z5 ?9 T* Z

    9 x1 A8 R7 C+ L死亡人数示意图& u! t* R, D4 I- }

    4 r: ]9 ?3 h+ L* M& a

    ( M5 w$ R7 b6 q& o+ X2 a% s" s' y9 M3 F7 d2 ]6 [+ V

    ' O4 D3 L5 ]" ^" m6 ?4 w$ k+ `8 b经过上面的图片与describe数据分析,我们发现有一天是异常的,患者多出了平时的十倍左右,经过查阅资料,这天因加强了检测标准,所以增多了很多。为了避免这个数据的影响我们选择将这一天删去(或者用平均数或中位数代替也可)9 w3 P) d) T2 G8 F, n  s  v1 z- F  o
    将上面清理过的数据存放到csv文件中
    1 r* J- a- E8 G
    # C+ G, w( u/ F

    ; `5 G4 ^7 p! u8 X模型建立3 x9 S0 C8 T) u
    模型假设9 j4 A; h8 F  _" g
    经过上面数据的分析,我们大体可以进行如下假设:
    3 S; i8 _' {/ f1.由于不存在封闭情况,考虑开放体系。- m4 o2 S! I6 t, C0 t1 a
    2.目前数据以天为单位发布,因此不考虑连续变化情况,只考虑离散的方程。; J: q& m- B# x, `
    3.新型冠状病毒的治愈人数和死亡人数相对较 小,因此只考虑 Susceptible(易感)和 Infected(感染) 两类人群。设易感人群总数为N& W1 U# W- S& x# [* u, e
    4.经专家鉴定新冠病毒患者治愈后至少六个月之内不会再被感染,所以设治愈后移出易感人群。- Z$ k* Q0 M/ d. V/ _
    5.设每个病人每天有效接触人数为 λ \lambdaλ(日接触率),且使接触的健康人致病.
    / f' H& |) F. W5 K+ h# _( u- k  p6.设病人每天治愈的比例为 μ \muμ(日治愈率)
    + X* `! p0 }3 H8 w3 D6 K+ h7.时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t).
    ( K( {, w/ Y1 E; R) F$ X& ^% u+ L9 l2 k8 Y* l3 L% i
    % {" B$ [2 z- c7 ^8 o- L* ^
    模型一9 ?% |) l  O1 Y+ F

    ' {5 `. z& M" ~# Y+ K- L! I

    0 j; T9 l+ y! q5 B% V& E分析可以得到移出者r(t)=治愈人数+死亡人数
    " P- K- u( Z' I6 e通过python数据处理,我们算出了r(t)的值,并将其可视化
    . G* U5 i' d8 x
      K& F" [% B) g* a' ^. H2 _2 {, u

    5 T$ E8 _! t0 I$ L8 s
    / _% F' P7 _$ e1 m/ F

    ) z! b/ ~: k1 W; H  x1 C, c我用MATLAB对其进行了拟合,拟合图像为/ D% W7 w+ v* X9 z

    $ G' p0 U5 p: T/ W& T0 {7 ]

    & Z5 u1 u! h9 d$ P: ~7 ]
    6 J) r6 S. m% g- \
    ! b3 r0 b5 j- |
    ' n+ D! G0 z* U" w( F7 r

    5 d( X5 H1 c+ z3 T分析可以得到患者 i(t)=患病总数-移出者
    * Y: X9 l' N+ q可以通过csv文件的currentConfirmedCount 直接获得i(t)数据,当然也可以通过 i(t)=confirmedCountv - r(t)获得,对此我也做了可视化展示
    . C8 b' l8 h1 h8 @, k9 Z; f& p% l
    " T6 z* R+ I  u

    6 J" u( o+ W; ]* i  j; g. Q通过MATLAB程序对其进行拟合,可以得到r(t)的函数图像大致为  _6 w) _; @2 j- X, j

    ; n! {. D0 ]: q5 G
    & Y( n6 Z/ ^% u

    , z" f0 E8 u4 L6 ?. y

    6 m% R7 f0 j3 F# U# z7 r5 p8 v% U4 E
    % a0 l# S1 k0 w
    为了方便,利于公式推导,我们先设时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t). 所以有
    ' f* z3 V- J+ ~- }
    7 o% ]* G# N: U
    , @5 q$ t# J. X: L$ K
    可以推导出每日新增病例的表达式
    2 L$ {3 P2 P: k, e' x. M2 H( v# b! ]4 t. L
    : h1 [" c% T( a

    ( Y* n# s( {4 u! w

    9 J# ]) x, C2 U7 B& n  P
    ( [. a6 h$ E5 k' U. D- Z7 Z/ {

    ' E" \0 D. X, y# I9 I; w由以上两个公式可以推导出以下两个微分方程
    9 ^; W2 T. A3 L2 _  q5 P3 K- {; ^- V% A; I# G

    % R" H& x( t9 s- y  R) c
    % X2 d  ]) ]" q. r8 K( p7 t

    : \( f" {6 m2 i, q* q可以知道初值4 h% S! e. b+ P* b
    i ( 0 ) = i 0 . s ( 0 ) = s 0 i(0)=i_0.s(0)=s_0i(0)=i . x+ \- T3 f$ D8 \" _
    0
    / D- \( _6 K2 y/ {3 u​        ( v- n9 \  I, K9 J; \  G
    .s(0)=s 6 V8 p! F( ^+ U+ {0 U- a
    0
    $ Y& z4 b3 j3 j+ {9 w$ w2 K6 j7 F​       
    9 P! v8 `8 e" v# C % D9 {+ W+ o' a% R8 F
    因为一开始治愈的和死亡的肯定很少,所以r0可以看为0,于是就有:' Z4 T6 t- c2 c: C
    i 0 + s 0 = 1 i_0+s_0=1i 3 |: m4 M# T: ^# ~) V/ s* V
    0/ I5 A; h/ l# |) v; G* p
    ​       
    8 y- Q6 f/ A/ f1 z2 E8 ~7 h +s ) o- \# R: R( g
    0
    9 y: x" T. V3 A7 B, X​        ( t7 |) |. K: c& |# x# k
    =1
    ' v; Q' ~4 x# _4 k+ c% e6 B通过解以上微分方程我们可以根据经验假设λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)的值分别为1和0.5(也就是每个患者可能使1个正常人患病,患者可能有0.5的概率被治愈);由于一开始患者肯定比正常人少很多,所以我们设i0=0.01,s0=0.99。对其求解可以得到s(t), i(t), r(t),的变化图像. {7 D, E* L3 @
    4 L; b8 z- K# ~4 E! y

    + d/ b) q6 `9 A# z4 ~2 @) s- S) h5 Z& i4 E

    , E1 N! {& b# N% FMATLAB程序如下
    # w7 u) s/ F$ _2 H: g" J$ W5 d2 i3 U0 gts=0:40;
    - N- F* P& m( b2 h/ W5 ]# Hx0=[0.01, 0.99];% M8 e( h; T4 j. O4 m
    [t,x]=ode45(‘ill’,ts,x0);
    1 T( ^/ T' z' W2 j; f( wr=1-x(:,1)-x(:,2);
    " Q* K2 d/ W& c1 Pplot(t,x(:,1),t,x(:,2),ts,r,ts,x(:,1)/x(:,2))
    - {. `( M# z0 j; Olegend(‘i(t)’,‘s(t)’,‘r(t)’)
    9 t8 \9 n' l) \: U! W3 P1 G
    0 V9 u, k+ m' n  `, {- V" q, X

    ' J5 O4 i7 K5 s$ }0 Qfunction y=ill( t,x)+ e- X9 R4 o* t+ G9 Q
    a=1;
    0 q- u* Z) D- y5 Yb=0.5;0 K0 b9 R0 ?# i& N
    y=[ax(1)x(2)-bx(1);-ax(1)*x(2)];# Q+ l/ L; O. n6 w( D$ _. e, }

    3 X/ @; I& k' Y7 C1 C

    2 ~* Q8 T* S7 n7 I# o! K$ q) A结果分析:患病人数肯定有个高潮,但之后高潮就会减弱,并逐步降低为0。随着医疗卫生条件的不断提升,患者的 λ \lambdaλ(日接触率)肯定降低,μ \muμ (日治愈率)肯定上升,所以我们可以把λ \lambdaλ调一点为0.8,μ \muμ调高一点为0.6,可以得到以下趋势图。所以应对传染病很关键的一点是我们要提高医疗卫生条件
    2 Q4 t+ l  W& t! C3 k' u- {9 m4 a
    & _1 a5 R6 Y5 V/ d) i! \2 U/ W
    " F( X/ ^9 r) ?4 i' y6 |4 h' i" g

    6 @+ P4 s# t' m& T, K模型二
    : X$ Z3 ]" G+ w% B8 A8 l$ ~. T- r
    ; c% c# m" r! k

    0 I& E8 m- E; @$ ^5 B: v实际上,λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)都是随着时间变化的,这里我们设s(t), i(t), r(t) 为第t天健康人、病人、移除者(病愈与死亡之和)的数量, s(t)+ i(t)+r(t)=N... `% _6 u" n( M) }9 Y8 P
    (t), (t) ~第t天感染率, 移除率(治愈率与死亡率之和)
    1 ]% U# f( _1 t# f) P0 G% S有 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)
    ! L* S" v& j; p4 c因为s远大于i, r,s(t)视为常数,所以有
    7 z$ u7 n+ c5 C
    , s& }) E+ {% Y( P5 ?0 ?* S

    0 ^5 s1 Y" r* A1 \' a+ y5 C: v
    , g) ?" G6 E9 t! F4 w
    " M) E& w0 W/ o' i- S3 [
    取差分近似导数
    2 g2 p0 {. i5 |9 G, V2 l' v" w2 p& Q3 V! H

    ! j  A* f. \8 Y/ B' I
      `0 H) q! O& n
    & v/ w9 S0 n0 I$ O5 U
    我们可以先用真实数据对(t)进行展示并进行拟合
    ; O: V* C" A4 l2 t/ }3 }& P* J8 K/ Y6 K

    8 I& u# n! b) G: s( w* p! ?* m; y4 r7 b. [+ j3 y
    - {2 s# Z, [# i' ]$ N+ U& {
    当然同样的方法对(t)进行拟合) D( L: H! s. O8 d
    . w( j  X' F4 I& A

    $ W9 h1 n1 ^4 i' ~9 C8 ?# k. i做不出来了,好难,光这些东西就弄了四天,到了数学建模国赛得多难多累啊,哎,让我这个小白手足无措。毕竟还没有正规的培训,这个模型等期末考完试一定好好做做!!!1 _) i+ y* t, J2 u
    冲国奖
    ) O4 ~  R( o% g+ g# Y冲国奖
    " Y# _! o% D, a' ?冲国奖
    - R9 X+ I1 g: j$ v% Q% X————————————————! c$ Y* \; U6 C6 g
    版权声明:本文为CSDN博主「小白不白嘿嘿嘿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。. ~( d% \+ t. u7 g5 @
    原文链接:https://blog.csdn.net/weixin_45755332/article/details/1070946301 u/ S0 ?: H! @& b# L( o+ G* }
    " _8 v5 I, n* t1 i1 D

    $ w  N8 Q$ z4 H. y0 K1 Y
    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-7-28 19:54 , Processed in 0.427650 second(s), 51 queries .

    回顶部