QQ登录

只需要一步,快速开始

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

    " O' z9 L4 V0 U$ f# C& z& h, e数学建模之传染病SIR模型(新冠真实数据)) z7 M% {# w# ]+ T
    传染病模型的基本问题
    8 A# g* ^; g9 |: L6 l4 ^. E" t  ~4 I描述传染病的传播过程# w- p: q4 d$ C, c5 z
    分析受感染人数的变化规律
    ! e! i, m; Q3 y6 f1 h& j1 Q* A预报传染病高潮到来的时刻! t! H! h! p* O5 ~& z8 @
    预防传染病蔓延的手段. y) s, [! g/ Z" _# M8 b4 d$ z) O
    按照传播过程的一般规律用机理分析方法建立模型2 {2 K0 P$ J5 j
    注:我们这里是介绍数学医学领域中基本的传染病模型。不从医学角度分析各种传染病的特殊机理,按照传播过程的规律建立微分方程模型.# l4 K, l- c6 Y9 I

    . p% Y3 H) @: k8 H. h' T1 S

    2 T8 m" M: K4 q- M- `建立模型; O1 Y# t* W" B8 A( ~6 J
    模型一
    , C; _" H% i# V; ^% v假设:
    7 V( A  T. X8 M
    & \1 u8 b1 Y6 x+ R# c" D* o+ \/ _
    0 L3 c2 V, p: R  S, [6 c0 w
    设已知感染人数为i ( t ) i(t)i(t)(病人数量随时间变化)
    - t& c8 G+ P& g5 o, [, i设每个病人(单位时间)每天有效接触(足以使人治病)人数为λ \lambdaλ
    8 q5 f) A# N6 ~" M$ D- k) I模型:; q% r, ~' X8 r  \# {$ r3 E
    单位时间Δ t \Delta{t}Δt内,新 增 的 人 数 ( 现 有 − 原 有 ) = 原 有 的 × λ 新增的人数(现有-原有)=原有的 \times \lambda新增的人数(现有−原有)=原有的×λ,即1 n1 b7 I( _- d. z1 e( L: x

    $ x+ M2 G& K: T

    : V  Z7 ~2 k  Z' ri ( 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)Δt7 A3 I' s3 t/ L+ @: S! B
    一开始的感染人数为i 0 i_0i 7 y; \" x  z$ Y7 y( Q% ?( e8 r2 f
    02 w6 Q! r0 U  M( o
    ​        % e+ Y; p! R4 w, {
    ; a% b6 I2 U( B& u1 n
    i ( 0 ) = i 0 i(0)=i_0i(0)=i 0 G$ o3 p9 Z0 v$ F( V7 F
    0. P8 t3 F1 x. K' Y) m+ q
    ​          T* E- z( n5 ~  z( a4 T7 l, m3 b

    / t3 b+ X8 [$ U: z4 |0 e8 P" S解微分方程可以得到
    7 K; [. Z+ r9 H) ~+ I. F- z7 G& gi ( t ) = i 0 e λ t i(t)=i_0e^{\lambda t}i(t)=i + `) l' m  a! h% f- b! c/ G
    0
      c! z9 l2 Z9 G/ g" n1 Z* H​       
    2 _8 A4 a+ b6 z; a e
    ; x* \6 N8 g) `- a) ^" s  @7 K7 H) Hλt/ g& I3 e7 m/ w% e
    0 s/ B- t9 y9 R$ O9 \! k; W8 X+ Z( W
    所以可以可到当λ → ∞ \lambda \rightarrow \infinλ→∞时i ( t ) → ∞ i(t) \rightarrow \infini(t)→∞
    1 J* _% _# r+ I2 S% S+ E当然这是不可能的,因为我们考虑的因素太少了,首先一个是,若有效接触的是病人,则不能使病人数增加,所以必须区分已感染者(病人)和未感染者(健康人)看模型二来解决这个问题8 I4 v$ F& F4 t; Z- ]
    4 S. U, u* m. O2 E2 ^' [
    + \- f4 e5 [9 r, ~  \8 `
    模型二4 }5 ~0 ^* j9 y1 Z5 A
    假设:( x4 c' @2 c0 _- g8 r, ]
    1 r7 F5 F# @* R5 h1 o8 _

    $ \0 @2 L) z3 M6 o& v. Q4 k将人群分为两类:易感染者(Susceptible,健康人)和已感染者(Infective, 病人).7 v( e- V+ B3 @
    总人数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
    0 W0 p! I6 U3 O( z! L每个病人每天有效接触人数为λ \lambdaλ(日接触率),且使接触的健康人致病.* G6 A  h4 |% q4 B
    建模:% X7 Z$ Y6 H4 G- K* e
    每天新增的总人数为原有的人数乘以每个人可以传染的健康的人数,再乘Δ t \Delta tΔt
      o% Q& f, r* _, l  ?  c7 n0 h/ `" @: ^9 b* L
    1 q3 }+ q; d/ v: f" b. H; e
    Δ t \Delta tΔt除过去,两遍N约分得到下面,( R3 J+ B+ P' g: W% |! }

    + d6 Z. k* }& y/ N2 W1 y6 a4 E# m

    ' r3 A) m. e. U, f( Z& h: \( SMATLAB解一下这个微分方程0 }3 T# f, k! u! }
    * x. ?8 T7 n  ^# e, U9 ]

    4 `) h( n) }" j( ey=dsolve('Dy=n*y*(1-y)','t');
    : H, M2 R* @, i- D1 E
    , f2 i' @+ L% W. C' \1 l, h2 }

    ( {+ k, r, `: Ay =
    0 H  N4 F. i0 M% @$ [5 G/ R: X# M -1/(exp(C1 - n*t) - 1)/ s9 E9 f7 k5 h* P$ T+ U6 q
                          0. \( S& O5 m  @- |2 y+ r3 b$ j
                          1
    6 r4 O7 S! ^% Z1. c8 x6 c+ \6 O4 b, z2 U0 o/ J
    2) C) \0 U) x+ Y  [/ k
    3
    ' x7 I' ^" k- k; d7 J4
    . N; ?$ y* T1 n; O  n5, o0 ^4 H  y. g9 g, r
    6
      l" o+ Y1 S2 s. j写规范点就是这个函数# m8 c* v8 F7 }) G
    0 I" J* Z: L  e9 q: U' Z

    " a3 T* L& a- M1 \/ U函数图像大致为8 J/ S4 V! p, h! T0 O

    + Q0 e  s+ y% s% @" o" O1 R3 }; x) f2 B

    % J8 u% j/ V; O: R' B% h) v可以看出t = t m t=t_mt=t
    * }$ d. R8 J0 e( zm
    ( N# _& e, z: l" N$ P' Z​       
    - [2 ^4 M- ?  X: z5 N 时这里图像的斜率有个最大值,其也就是传染的最快的时候,即传染病的高潮时刻,当然t m t_mt " k' j3 s% t9 `. `
    m
    . l( Q" \( b) v) G​       
    ' [* E  L$ J# J6 ? 是可以求出来的
    + v. L* |, Z! _& _6 p9 Y0 `' z' Q1 U

    ( x9 Y) b. o0 F' K再看原式,当t → ∞ t\rightarrow \infint→∞时i → 1 i\rightarrow 1i→1# V) _1 E1 L# ?! D7 ?, C
    病人的比例为1,当然这也是不可能的,因为我们还没有考虑有没有可能治愈,看模型三
    8 l# _, D. ^/ z: r( B! @9 n" j' Z6 s" y. |. P2 S

    0 N# H% J( o+ a! Q9 @, F模型三1 V9 C+ T8 x" b, F- @6 W
    假设:4 K% ~% I2 V: ?. W: i

    7 u0 J' A+ ?/ y5 d9 X
    4 R! F3 W/ h3 n: S
    传染病无免疫性如伤风、痢疾等——病人治愈成为健康人,健康人可再次被感染。
    2 c7 T$ m4 w5 \& i/ {病人每天治愈的比例为μ \muμ (日治愈率),1 μ \frac{1}{\mu} % J# _! T% f# b! y" A& a
    μ! ~- w. P# X8 s- T; B
    1! `7 c& x. y& C2 }  ^8 G% R; c
    ​       
    : w5 u/ l0 _9 w+ m% t* P 为感染期,' K+ G  w8 r  F! q& |4 }- f4 M8 G3 z
    模型
    9 m$ L( I  s, A这是减去了治愈人数之后的新增人数
    $ f% `! `/ u) o8 x, k
    7 P3 x5 ~7 x% q

    7 C8 n: w6 `  }; ~; |  i. W' E* R4 w/ j$ V7 D

    " J! z3 A4 @: u" Wσ \sigmaσ 为一个感染期内每个病人的有效接触人数,称为接触数
    9 w/ A" ?7 ?4 [5 [  \( `3 P) z: \+ C1 `. F+ ]$ z

    , J  y* i) P! I0 W# Q5 I- C可以画出上面的图形分析下* y- I3 h, G/ t' ?) y" n' H

    0 Z5 v. ^# y/ u; D, ]

    ! E: }& o# l- L8 y$ }: o对上面的公式进行分析,可以得到,当i = 1 − 1 σ i=1-\frac{1}{\sigma}i=1−
    7 p  n) l6 o8 o2 ]- W8 K3 t$ Vσ& }, a: A3 w, q
    1
    6 ~! w' M. Q  J" q​       
    3 T0 i+ n7 }; I 时,i ii对t的导数为0这也就到了i ii的最大值;当0 < i < 1 − 1 σ 0<i<1-\frac{1}{\sigma}0<i<1−
    ! P- L8 S) D3 `! wσ
    6 C) b% x/ }1 k# O1! v  U8 J4 {6 N/ o
    ​       
    1 t9 X) z% ^2 ]2 J$ L4 o7 R+ q+ N* Y+ 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−
    ! ^, X% @) h) F' iσ
      t6 `+ @2 J" E1 n: S, Z: `1 @1
    . o  S( ^' w% D- t2 K: l! t​       
    . y2 R) n$ U/ Q, Z8 _' d& ] ,d i / d t < 0 di/dt<0di/dt<0,i是单调递减的。
    " z4 ^+ T3 L' ~
    9 p3 U1 s7 j+ y! p7 _& I/ ^* C$ L0 ~

    ' q6 o3 Z8 R) W' U6 a- O当然我们也可以画出i ii随t的函数图像( q1 @: d" C! X+ |; ^/ _4 j. L
    4 w4 \) w  a) f7 p  y$ H6 I9 }

    - f1 N2 {( J8 P1 E先看红线,若初始条件i 0 > 1 − 1 σ i_0>1-\frac{1}{\sigma}i 8 m8 }. Y6 c) _7 [
    0
    $ l* v: C; ?. O/ D) G5 d​        * V3 s: {8 e9 Y' z
    >1−
    6 t4 C* d% S( Gσ
    * z+ T! z, x1 E3 f% d1' O. j2 D& S0 B' Y! B3 L* ^+ [
    ​        # t, q" c" T2 S( u+ H0 F. x6 f, B
    d i / d t < 0 di/dt<0di/dt<0,i就是单调递减的,
    5 \. l9 Q9 o' I( P. B) K8 P7 D* V若若初始条件i 0 < 1 − 1 σ i_0<1-\frac{1}{\sigma}i * k6 l  J* g* V
    0% f. D$ d( p! V% i! o
    ​       
    " _8 P4 Z. R$ O. o$ t  }' `# I% W <1− $ W. {8 k7 f4 R
    σ
    ) I: O+ f6 k: R8 v0 Z) d6 k$ F. U1
    - k' l; Q. w! V3 t9 [​        ; m9 @$ T+ c/ e/ l/ w2 M
    ,i就是递增的,可以看到i对t的导数图像有一个最大值,下面的黑线就有一个增加速率最快的一个值,按S形曲线增长, y0 e$ s( f+ }/ V- C! v
    6 t/ \  R) i4 ~! b3 m

    $ y; l0 e( E0 Z, l' H4 K5 _- T: sσ = < 1 \sigma =<1σ=<1时d i / d t < 0 di/dt<0di/dt<0 i肯定是单调下降的,最终降到00 m: d- S9 c) [# i) b0 d0 F/ i

      P. N4 P; p# K8 B2 N6 F/ b
    4 b' ^7 ~$ E+ F0 B

    & h8 L$ b& F5 T: G5 y8 q
    - ^8 B9 S# R+ R4 ?
    综上:! D# s0 C9 m9 r/ `0 V, @/ U% |% c# C! {
    想让患病者越来越少,σ \sigmaσ必须小于等于1,即感染期内有效接触使健康者感染的人数不超过原有的病人数.
    / G/ v" o! c0 q9 F. @$ ^
    8 Y2 r" W  ]( o. R0 a2 z% [6 H
    0 r- l$ i; n+ m* q( a
    这里我们分析的是感染之后还能感染的情况,但有些病毒感染之后会在体内生成抗体,就不会再被感染了,下面我们分析这种情况。" f4 J5 \6 J0 K' y

    - p: B2 e6 W) Q& R1 I0 _6 W
    0 B0 x) d6 C* @
    模型四 SIR模型
    4 O% Q9 y  C4 U: `" W5 DSIR模型是常见的一种描述传染病传播的数学模型,其基本假设是将人群分为以下三类:
    8 V" y2 z, a8 v, Y- _7 s/ P
    1 x8 A0 }3 B) S$ U$ N: c
    9 O% f1 U+ X6 c; m9 B
    1 易感人群(Susceptible):指未得病者,但缺乏免疫能力,与感病者接触后容易受到感染。
    2 l$ c4 y) P! @( c4 @' [& Q, I* A: _$ j7 C* ^  M

    - Q+ A) O+ X- d9 `2 感染人群(Infective):指染上传染病的人,他可以传播给易感人群。2 B0 h$ r" Y; C1 V: U5 ?" A  f
    : H! ~- P% A9 X( e

      q, r1 H5 r+ o, k3 移除人群(Removed):被移出系统的人。因病愈(具有免疫力)或死亡的人。这部分人不再参与感染和被感染过程。2 O+ _! L% G' |  Q$ ]7 V
    , o: }8 O1 q! K1 ]" y
    2 A  E; I& X; b; }9 [9 Z3 C, C
    假设:8 G1 M3 e5 x1 U7 u8 k; D2 b

    ( r2 [; w3 B, [4 |5 x* V

    - @- @- W5 e4 n2 `4 f* f; Q3 C# {传染病有免疫性如天花、麻疹等——病人治愈后移出感染系统,称移出者(Removed).2 F' s: v8 S8 d
    总人数N不变,健康人、病人和移出者的比例分别为s ( t ) , i ( t ) , r ( t ) s(t), i(t), r(t)s(t),i(t),r(t).
    9 R2 K2 \1 z" X病人的日接触率为λ \lambdaλ , 日治愈率为μ \muμ, 接触数 σ = λ μ \sigma=\frac{\lambda}{\mu}σ= . M. @: a+ S6 S$ ?* v9 Y( `) v
    μ. f" s+ l& R1 c  J+ Y) X& Y5 ~
    λ# n+ y  f& R  I. ^6 t/ y' G/ u
    ​        ( o; I" \5 r/ r7 L4 ?

    . m5 P6 B3 z: M! W) k3 R7 B建模:
    ' R3 y  Q% n9 l6 P  Q! F1 as ( t ) + i ( t ) + r ( t ) = 1 s(t)+ i(t)+ r(t)=1s(t)+i(t)+r(t)=1
    : ?4 ~0 P0 Z3 X! s% ~7 u+ n- _这个就是病人减去治愈的人,和上一个模型是一样的
    , h5 R, v* H9 Q8 P
    2 X" C8 l/ P$ u3 g) `

    0 E, e3 e) l6 w" m9 K因为有治愈后是有免疫性的,所以可能被感染的总人数要减少,减去移除者就是
    - G# ]. R3 g& u5 l: Z) ^# z5 f0 b8 m9 c" u$ l9 Z/ R/ U

    5 R! e& T* r- h) h) m# T. t将上式化简为:
    + Y+ ^7 ?* U' B# a$ H4 W0 q' k) |" h* }# K4 E( G5 v* f
    7 ]7 ~) k; v3 F5 E
    i 0 + s 0 ≈ 1 i_0+s_0\approx 1i + m( g- p# j7 k8 Z
    0
      K- ~5 C; K* Z7 x0 w: c​        $ n; i3 c' \& f, o$ G0 L
    +s + O- g, ^# [1 }+ n3 ]/ k. j
    08 q+ F/ G8 O8 m. }  q  d1 j5 H5 E" O" ^
    ​       
    * H4 Y8 b& C: F2 J/ r ≈1(通常r ( 0 ) = r 0 r(0)=r_0r(0)=r . A* S/ f$ ~' L' ?/ |
    04 i, @8 j1 D1 y
    ​        : h% y; a& C; F8 R, u$ L# A' g
    很小)( C5 q- s1 j# F9 k' }! Y1 c; |

    + k3 Q+ |+ z  N$ {6 E
    2 c: c$ Z4 S6 x" T2 v. q9 q
    关于i(t) , s(t) 的非线性微分方程组,没有解析解,只能通过数值计算得到s(t), i(t), r(t)的曲线,下面来看下曲线的数值解的MATLAB程序& y5 c7 }! O$ _7 X

    . U% I# s; {5 ]" W
    ) ^5 t- `9 Y8 w% O2 \8 ~
    这里我们先设λ = 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
    7 p& ]' h. l4 Y: s- ?' t0
      k7 W) t* w& a4 Q! t/ R1 B8 b​       
    ( N0 l1 K1 T8 J1 M1 S+ d' E8 } =0.01,s / v; ^( h* S, Y# s
    02 T8 c6 `1 ?5 f, B5 _7 s
    ​       
    - `+ G( p( q5 j$ T* E* e =0.99. F5 q' I$ F4 [) Y6 P3 ]
    也就是平均一个病人人传染一个正常人,治愈率为0.5;开始的病人比例为0.01,正常人为0.99,设没有天生带有病毒抗体的人,所以r 0 = 0 r_0=0r   X, t: m( Y5 _0 G( X
    00 Y. C' \+ \, M
    ​        6 E( z' M* ~2 _8 x# b
    =0,之后若果病人被治愈,则具有抗体了,有抗体的人为:r = 1 − i − s r=1-i-sr=1−i−s/ T) V! c% {: e: Q. T
      ?: I- `% ]4 J* H
      Y3 Q0 E# d! S. L% p$ N
    ts=0:40;
    9 [2 O( y- f  X0 `3 ux0=[0.01, 0.99];" }: ^9 q" r6 \9 T. p
    [t,x]=ode45('ill',ts,x0);
    8 m7 m: J0 U4 ^* A/ W  A% ?r=1-x(:,1)-x(:,2);
    3 O; D( Y- z8 n$ J5 d3 D4 Qplot(t,x(:,1),t,x(:,2),ts,r),grid
    ! S! s$ }# ]2 q. h7 R: {7 Hlegend('i(t)','s(t)','r(t)')
    . @5 U" @8 t, U) [% _  h2 x3 ^* L
    7 y5 Q" Q# t7 ?/ \2 g$ S% i0 c9 _

    : i& j5 m6 Y. U" Wfunction y=ill( t,x)- R  u; R# [* m" x1 T) Z: X" k- J& z
    a=1;/ W- [" }" L& g* `4 c+ T
    b=0.5;5 z  b5 ]+ p1 k3 K( }; |# ~8 u% t
    y=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];- X  ~- U! z1 q+ O+ k# V/ i- i2 k
    1
    6 d0 ?5 W2 J3 P$ L- s2( m8 u; W9 w5 `$ s
    3/ P5 M$ d( z# \0 j/ [! r
    4
    * F* }; }7 J& N, Q; [! G: z6 h55 s+ P& L# @. C6 l0 V
    62 z6 K0 I) [& x! `$ }* j
    71 Z  C8 Q: U$ {8 P. o' {- Z7 M
    8+ P' {& Z: _% C; F& S
    9  y3 q' ~  b' ~& s4 W) g
    100 U" J( e4 U7 t& x7 m
    11  P- u6 ]; B9 E

    : d$ ~  O0 o' L5 c! M3 y
    . P, r2 O* @8 ~' U1 K" l' }
    可以看出:s(t)单调减,r(t)单调增,都趋于稳定, i(t)先增后减趋于0.
    1 e' X! f' C4 P" @! n$ x6 P+ X结果分析
    . r; p! N+ ]2 O  @先回顾一下参数+ Y- }, ?0 [: j8 |) v" Y
    接 触 率 λ ; 治 愈 率 μ ; 1 / μ   平 均 传 染 期 ( 病 人 治 愈 所 需 平 均 时 间 ) ; σ = λ / μ   接 触 数 ( 感 染 期 内 每 个 病 人 有 效 接 触 人 数 ) 接触率 \lambda;治愈率 \mu ; 1/ \mu~平均传染期 (病人治愈所需平均时间);\sigma =\lambda/\mu~接触数 (感染期内每个病人有效接触人数)接触率λ;治愈率μ;1/μ 平均传染期(病人治愈所需平均时间);σ=λ/μ 接触数(感染期内每个病人有效接触人数), _6 R! Y; g/ O9 \8 S8 {1 b; \
    可以分析出:
    + g, v, i# Y$ x- p$ A3 F- T% t0 E# }6 h* z

    & |3 T) e: l0 S随着卫生健康思想水平高,接触率λ \lambdaλ变小
    0 T: F# n6 a3 T; ]5 a( W& d随着医疗水平的提高,治愈率μ \muμ增大
    ' O* k& J* P. \  |, M8 e接触数σ = λ / μ \sigma =\lambda/\muσ=λ/μ减小——有助于控制传播.
    7 ~; N0 M- J7 q" r7 i" k0 E% k我们可以试试稍微减少一下λ \lambdaλ,增大μ \muμ,来看下效果  t, W4 h4 v1 N2 p' F
    2 v/ K/ t( \$ \' O& W4 r1 f

    ' m$ Y7 ]) r/ R- xts=0:40;8 `1 p* K! z" Y) f: t: r& m
    x0=[0.01, 0.99];0 p) |' G. N+ |9 ^! V# @2 R
    [t,x]=ode45('ill',ts,x0);! r3 A9 f; X- m& @; i% e+ O: J) f# v
    r=1-x(:,1)-x(:,2);
    , H0 s3 m  ~+ }8 {plot(t,x(:,1),t,x(:,2),ts,r),grid
    % x. ^0 n+ {/ r. ^! Z1 z  Flegend('i(t)','s(t)','r(t)')
    # K: s7 ?1 Y0 @# D6 ?
      y4 R3 Q8 F0 ~7 p2 {9 h! V9 {
    4 W) D; t- \6 \4 v$ \
    function y=ill( t,x)
    3 b  _- J$ f- r! W0 V8 ?/ La=0.8;/ z  U% |+ K5 \  }
    b=0.6;
    0 F0 K5 B3 U6 I" s) qy=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];! o5 e& J2 T& b, _1 S& Z2 I
    1' j  q' i4 |2 y, h
    2- F& }) u! ]. m4 m: S
    3" ?& `! W' U0 A3 Y' g1 X
    4
    + R/ M( ^: [, f- O5& ?+ p( F( A5 G
    6$ z) g# p3 s: l6 c# }' S7 n
    7, n5 c; b; E" I2 y
    8
    " c4 g, E3 ?8 P9 r99 g5 O* S( O9 E( H: n* J
    100 g6 Z, i0 Z! }" m
    11
    + I7 K0 K; x# @4 Y: G3 q* o- b9 j7 B  v8 V! {6 n  A& Y5 ?
    * I; o/ D9 e" @2 l8 R( \/ M
    综上我们可以得出结论:想要减少传染病的传播,我们就要在接触数σ \sigmaσ上下功夫。3 Y1 {) x& [) M/ S

    + b6 ]1 o2 ~: \

    & ~( h  T5 I) p实战建模
    ' m$ e6 S' \3 r4 X$ Y数据处理% I. b7 r3 x% V7 `
    5 Z7 M7 w9 M5 v9 S* g& A

    ' y- W- x4 I* Y9 O4 `. m首先,我用python爬虫爬取了丁香医生官方数据,一共5534条数据 特征包括感染、死亡、治愈的总数,当日感染、死亡、治愈新增,疑似病例,时间,省份等14个特征4 d/ I) B/ r( }9 D1 m" l+ l
    : t, V2 s) \0 E0 D# ?& [0 K
    . c. g2 j) D: V. O/ q/ [# {

    % B" s9 G+ e* q) U% a, L
    7 N, q" U! ?6 J" h3 d5 L
    然后用python进行数据提取,提取了较为典型的湖北省的数据作为我的参考依据
    . ~& I) z7 h5 r3 C" m5 ?, {+ B" ]/ M6 {- T$ k6 |
    0 V$ T4 j" k  i# R4 S

    $ G5 m/ X. A, t0 e& ]: s
    ( H4 J8 y: a" z$ p; h
    然后用python对数据进行清洗,提取出了患病总数,现存患者总数,死亡总数,治愈总数,时间,省份这几个特征3 ~) w$ S" @' j1 g5 S5 N+ c

    0 b; s' R1 q* z5 N
    + \9 y8 t3 p4 I6 a6 a
    对日期格式进行修改,值保留月和日,并与死亡人数的位置交换( r0 g) _8 K% f1 E

    6 g* x+ N- E  c. X

    9 f4 f# b/ @2 n9 u1 v  ]# e这里我用python对提取的四个特征分别进行了数据分析(主要包括计算最值,平均值等,),并把1.20日作为第一天,7.02日作为最后一天也就是第165天,做了可视化可视化处理。. |* o9 U7 f5 B* H
    感染人数示意图; D: u6 ?3 L3 f. ?, e
    / |5 E% U9 Z& E2 D  S
    - Y3 T+ }& Y) |. x# J% f
    治愈人数示意图: T" u; @; C" m, a- \' ~
    6 \. @& ]; W1 u) C8 E8 F
    " y9 n7 ^, \% Z: K! }! V- [

    % b% h4 @# H- J: ~2 L3 v; ]7 y
    3 R( q) f4 ]# ~& G
    现存患者数量图
    9 D! ?1 r  M. @6 B' X
    , `8 O& R1 T& J- \( V; Y
    3 U6 G* t; ^/ m) M. q) V4 A( j
    死亡人数示意图2 h4 C* w  c4 J; |1 [" C7 K
    . h+ K# L" S, n& u7 @5 [# l
    " H. P% n) N. `
    # J$ [% D& I% C# o

    " ^" c$ y6 I8 {经过上面的图片与describe数据分析,我们发现有一天是异常的,患者多出了平时的十倍左右,经过查阅资料,这天因加强了检测标准,所以增多了很多。为了避免这个数据的影响我们选择将这一天删去(或者用平均数或中位数代替也可)
    : |6 y+ z  C: J  P7 O将上面清理过的数据存放到csv文件中6 ?7 k" A( a! x3 h

    . u5 e& F/ ~+ @+ ^4 Y8 q
    8 z! i7 N' R+ h  r) g
    模型建立( ^6 v7 C8 h' D& R
    模型假设
    % \/ A5 e! J/ y' y" [) z, a/ g经过上面数据的分析,我们大体可以进行如下假设:7 V' e$ ]1 s* w0 C$ \- ?
    1.由于不存在封闭情况,考虑开放体系。
    . |  Q+ k' y1 x3 E' R2.目前数据以天为单位发布,因此不考虑连续变化情况,只考虑离散的方程。; @$ \) A: b5 H% [$ j+ {6 `- w
    3.新型冠状病毒的治愈人数和死亡人数相对较 小,因此只考虑 Susceptible(易感)和 Infected(感染) 两类人群。设易感人群总数为N
    9 j9 _8 F% x' d* |0 [4.经专家鉴定新冠病毒患者治愈后至少六个月之内不会再被感染,所以设治愈后移出易感人群。4 W2 t$ f1 M9 A7 `& i1 k
    5.设每个病人每天有效接触人数为 λ \lambdaλ(日接触率),且使接触的健康人致病.
    ' t, z: r% k0 b) H( ?6.设病人每天治愈的比例为 μ \muμ(日治愈率). \3 g. X1 F8 r( v* n1 o  t4 m" @% O
    7.时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t).  W! {% H1 M* n; l5 [

    " y, l& ]* G! F4 b5 K; R: {
    * H9 N0 X6 [! N1 j( n9 h7 Z* Q
    模型一. X4 K0 O: F% _5 x: i" ]# F3 e
    + k1 ^, k+ u  D( {/ n

      g0 ?+ @( B7 F1 S  |( i分析可以得到移出者r(t)=治愈人数+死亡人数5 s! a4 x( W; N3 V/ X) A
    通过python数据处理,我们算出了r(t)的值,并将其可视化
    ; g: }! g8 O5 Z6 L, C  o, {7 L( [, ^+ x3 g& V3 H! M; z! Y) a' W

    ( L+ M8 x, L- E1 y& W; f+ u" i+ I
    - n8 a$ y* c* P3 ^" M2 @

    * c8 x8 G( S5 p4 [$ i' n我用MATLAB对其进行了拟合,拟合图像为
    + v* |8 r% g6 O$ f5 X. q! V5 r* g1 _- v3 `, D% E
    % H+ ?; l0 v# r: P1 B" i
    - e$ K7 ^6 Z4 \' B
    ! h8 o8 U  ?& N, ~& b

    5 E; s/ V+ N  u8 Q6 U' d3 t, p( v
    0 S4 E9 O9 ?) _  f: |
    分析可以得到患者 i(t)=患病总数-移出者: R% _2 B9 f) J8 y% D. T  |7 w
    可以通过csv文件的currentConfirmedCount 直接获得i(t)数据,当然也可以通过 i(t)=confirmedCountv - r(t)获得,对此我也做了可视化展示: h; ^3 {0 ?4 t2 p4 r
    : ]2 c6 f- r! d  @3 L7 Q* t) J
    8 |; H- c2 s  e' L
    通过MATLAB程序对其进行拟合,可以得到r(t)的函数图像大致为( \7 [4 w# Y: g# K; A5 D/ ~# f/ \

    $ @' S1 p' Q- r5 M0 Q! Y

    8 f6 J# N& h4 r5 Q8 u. D" E$ }/ k7 \8 ?1 w$ ]9 |
    3 Q, \" A% ~0 d0 c0 L& i+ j! n
    ) S6 ?# E4 N, J& |5 F# O* P7 R
    8 T8 ?5 Y' ^+ A, o: H* {" X) \
    为了方便,利于公式推导,我们先设时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t). 所以有- c; g. O% [0 \" Y; X
    ; B& R0 N0 P- P, w

    ; H7 K) O! x0 A可以推导出每日新增病例的表达式
    : \( U' A* Z0 A/ X& I( ~7 l
    : W- j; _, g. P4 j' o  D

    % w. P" T) d3 F9 J) ]2 G" I
    ) `; G0 Q4 D( K6 j- e% \

    ) N. N+ C4 F8 F. Y& f0 O
    6 x' P9 T: b# Z

    ; r4 L. p  q% B0 o. T. |1 ~" P由以上两个公式可以推导出以下两个微分方程
    ) _6 }2 f# v2 p" U4 d- m# q/ Y- W* h7 v" K+ R* y& j9 q0 @

    4 ]* `" s2 R' V; w/ e. \" l
    ( \( z' P/ q+ O' f' H

    , ?7 U7 G5 J# `# Z0 W可以知道初值. {. {1 S4 X/ \( D! b
    i ( 0 ) = i 0 . s ( 0 ) = s 0 i(0)=i_0.s(0)=s_0i(0)=i 0 o( f* i$ n, b" F. d
    0
    6 _3 K9 D! K, {( b​        8 n- e; F; m, |7 K% c
    .s(0)=s % B# P0 r: S; c! Z
    0; G, k' F) _- \
    ​       
    . ~: `: h6 B2 i. C' A $ l% u- b) [" ]& S. P: @
    因为一开始治愈的和死亡的肯定很少,所以r0可以看为0,于是就有:2 j/ u: ]$ |8 r8 m, i" z# `. |! g7 c' ]$ G
    i 0 + s 0 = 1 i_0+s_0=1i ! Z& p9 O! T" Y4 \/ o
    0% ^, d. B- Q/ v1 r1 A3 a5 M
    ​        , q7 O- o. t# J+ _( T$ C
    +s 2 O% s. C5 }& R/ v
    0
    ( t6 A# V$ A( O7 r; i0 t​       
    ! F) H& h. R- b, v =1
    1 f+ x; Q. w0 b通过解以上微分方程我们可以根据经验假设λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)的值分别为1和0.5(也就是每个患者可能使1个正常人患病,患者可能有0.5的概率被治愈);由于一开始患者肯定比正常人少很多,所以我们设i0=0.01,s0=0.99。对其求解可以得到s(t), i(t), r(t),的变化图像1 m0 p9 E. T9 @. n3 D9 g; E$ c

    * C( B! ^, O4 G- V2 J# O0 L3 ?; A# D
    ' N  k9 ]2 _* [

    : R, k: I2 y2 A8 J9 o) w
    + T1 F7 r2 ?) V
    MATLAB程序如下
    / n- j7 p. v5 D9 H" f  A$ b1 Jts=0:40;; m  H( J8 P- r8 d5 b7 w
    x0=[0.01, 0.99];% [3 Z, d* I( n2 X7 M% p! K! K
    [t,x]=ode45(‘ill’,ts,x0);" B7 k7 q4 p; H+ H$ }( w4 s
    r=1-x(:,1)-x(:,2);
    , M& w: s9 y4 L" K  jplot(t,x(:,1),t,x(:,2),ts,r,ts,x(:,1)/x(:,2))/ N7 F" Z) z! G5 s
    legend(‘i(t)’,‘s(t)’,‘r(t)’)
    1 H2 g# L( b  N; E+ x
    $ l* y; W* e" E5 T2 ?) U

    , J. e7 h* F5 P- w+ k2 E! Ofunction y=ill( t,x)5 ^+ {. t" b' ~# _% f9 _& p
    a=1;
    0 m$ ?7 j& A3 @$ Lb=0.5;
    9 s) _: f" u3 G8 e7 B' uy=[ax(1)x(2)-bx(1);-ax(1)*x(2)];& K/ R( V* K7 n% v& {* Z

    1 m+ P) w* \6 W5 f4 }9 ~

    " S1 t. [* P: x0 I9 l结果分析:患病人数肯定有个高潮,但之后高潮就会减弱,并逐步降低为0。随着医疗卫生条件的不断提升,患者的 λ \lambdaλ(日接触率)肯定降低,μ \muμ (日治愈率)肯定上升,所以我们可以把λ \lambdaλ调一点为0.8,μ \muμ调高一点为0.6,可以得到以下趋势图。所以应对传染病很关键的一点是我们要提高医疗卫生条件
    : x% A. L% _! l5 y/ l
    6 D1 ^% z- t, }" f1 b
    ! f/ a0 x5 }# {1 q6 }" n: k
    9 ?2 ~5 T$ [) n& ?
    模型二
    ( }/ O+ i( A( I4 w* k6 Y2 f( b9 R8 C! e- p

    ! A1 |# h5 _- A( e2 n2 o实际上,λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)都是随着时间变化的,这里我们设s(t), i(t), r(t) 为第t天健康人、病人、移除者(病愈与死亡之和)的数量, s(t)+ i(t)+r(t)=N..
    5 ]9 V5 c9 U! n0 X5 B  r  p(t), (t) ~第t天感染率, 移除率(治愈率与死亡率之和)
    ) {* M: O( D. I" ?( Y) X* O/ j2 R0 R有 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)
    3 w% @6 n+ e, S' U4 I( D7 M" v因为s远大于i, r,s(t)视为常数,所以有) m% |+ q/ E  n/ P+ N" i6 l

    , y% j% a7 W' ~

    + l6 ?+ I- \8 V4 X) P4 k) u
    - V7 c' |3 z( ^

    0 p! B4 Y- k& S4 B! h5 h) w( d" ^取差分近似导数
    / c6 v& `2 o( Z* ^' ~. i0 i. q) N6 {3 ]( c
    6 W" Q; E; r3 p3 F
    " b7 W% d  {, P& B6 u6 x6 g2 _

    ; m  c' n- s4 U我们可以先用真实数据对(t)进行展示并进行拟合
    7 C: B7 H: X% D; h. w; a. _4 o4 j4 p2 E4 l: `
    2 f9 J# W- g2 z' r
    1 n! n# s; B  g3 m3 I

    5 x. N/ |' I4 Z; K0 w  x- A( j当然同样的方法对(t)进行拟合5 |! A' h& h) Z* W  W$ q2 Q# t

    & }; [2 K8 N* U, h) V8 W
    3 e; C9 @. }7 j  d  g. n: \+ h( k2 @; N
    做不出来了,好难,光这些东西就弄了四天,到了数学建模国赛得多难多累啊,哎,让我这个小白手足无措。毕竟还没有正规的培训,这个模型等期末考完试一定好好做做!!!
    ! p& V' y6 [0 _. l) X; G) s冲国奖# l0 |: O  Z. X* d- x. R7 s; u
    冲国奖1 p& W2 g- @! l7 Z5 ?
    冲国奖" U- C7 V6 Q4 F% U
    ————————————————- C9 {! T0 V) \7 N
    版权声明:本文为CSDN博主「小白不白嘿嘿嘿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。8 t: X5 u8 g' r3 i
    原文链接:https://blog.csdn.net/weixin_45755332/article/details/107094630' U* W# J2 H: Q: S/ H/ z
    ' B1 U) U3 _, t- F

    . E8 u' D- }% i( T( q6 |1 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, 2025-7-27 06:05 , Processed in 0.729442 second(s), 51 queries .

    回顶部