QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5553|回复: 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
    : I+ m* U# c) y, f
    数学建模之传染病SIR模型(新冠真实数据)
    9 r& O7 E- y$ D( Z2 e. `传染病模型的基本问题# Y" a' V4 j$ |) K6 h; K0 {9 v
    描述传染病的传播过程
    ) t% e; T- ]+ ~% f( l分析受感染人数的变化规律
    # h; {& x1 g4 c) @7 S: X预报传染病高潮到来的时刻
    : r/ {5 W9 B6 h3 T- Y$ W: l, Z预防传染病蔓延的手段) x) `( L: ?$ J3 j- F
    按照传播过程的一般规律用机理分析方法建立模型
    4 x1 Y# }! @, k/ w. e注:我们这里是介绍数学医学领域中基本的传染病模型。不从医学角度分析各种传染病的特殊机理,按照传播过程的规律建立微分方程模型.
    2 V2 ^% i( M. V! l$ ~
    - Z/ h, g* L$ l+ w! c. g5 b

    , Z, U7 u4 @! I4 Q# N建立模型7 V; @& [" e6 V2 H  w+ J0 q
    模型一) C) g/ k  G1 B- i0 x6 r
    假设:
    9 X+ H* R2 n) F0 s& \% D
    0 I: }6 q4 ]/ O  H7 E* Q

    5 h; |1 g- Y" T, c设已知感染人数为i ( t ) i(t)i(t)(病人数量随时间变化)! \6 V) c% i5 ?/ Z
    设每个病人(单位时间)每天有效接触(足以使人治病)人数为λ \lambdaλ7 P% _) b0 A5 Q
    模型:6 ^- H0 X% }/ |" \
    单位时间Δ t \Delta{t}Δt内,新 增 的 人 数 ( 现 有 − 原 有 ) = 原 有 的 × λ 新增的人数(现有-原有)=原有的 \times \lambda新增的人数(现有−原有)=原有的×λ,即
    7 i7 R0 Q* q5 Z: g
    3 G- m6 v+ i5 W3 E+ V

    " @7 V: N# v! ^5 u( X" ji ( 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
    3 I, A4 N0 r; W: z- H一开始的感染人数为i 0 i_0i
    ! v( A& L0 S& T5 |! a1 J- Z4 D0 @0# O" i" G% ^% ]4 O( [
    ​        ( g! l: C! }+ I' d3 R

    ) d  _' D7 S- X7 V1 Pi ( 0 ) = i 0 i(0)=i_0i(0)=i " X" d$ p% [8 g( d
    0, h+ ?, t& S/ s
    ​        * l- s* K8 \% G0 l1 o- N$ e

    , Y% h0 A; H2 C* G( F解微分方程可以得到- Q* E2 {; k0 `6 b' R$ p# W2 ^" p
    i ( t ) = i 0 e λ t i(t)=i_0e^{\lambda t}i(t)=i
    ! M. w+ T$ {4 m# S, `. C0' L3 A& b# |6 f% i+ O. J
    ​        ' ~; t9 P- c# Z, Z- V
    e ( e0 i3 X) u+ j. D% H* \# {
    λt9 V- u( C' x1 J! p% \* _6 S2 m( l
    / a" k" L# l% o- `6 ?
    所以可以可到当λ → ∞ \lambda \rightarrow \infinλ→∞时i ( t ) → ∞ i(t) \rightarrow \infini(t)→∞
    ) h# R2 {  h! s, E. W2 b当然这是不可能的,因为我们考虑的因素太少了,首先一个是,若有效接触的是病人,则不能使病人数增加,所以必须区分已感染者(病人)和未感染者(健康人)看模型二来解决这个问题3 p5 K6 ?1 ?0 T1 `
    4 `* a- B; o/ _
    ! B6 Y/ \# H+ M: f9 q" Y& h
    模型二
    ) |3 U8 T* g2 ?1 w" D假设:
    5 F7 T5 }( x. ^6 S6 ?
    7 A% M+ h: r. a! k9 P2 s# L

    & Z3 N! |2 n6 N" H, p2 e! t将人群分为两类:易感染者(Susceptible,健康人)和已感染者(Infective, 病人).& r. |, O: O! w' }: g
    总人数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)=10 N9 h; i3 N  f& B4 s* I4 C
    每个病人每天有效接触人数为λ \lambdaλ(日接触率),且使接触的健康人致病.
    ' V; e3 t+ I9 w, Z& d9 [: _建模:' F0 L3 u" D, w3 A
    每天新增的总人数为原有的人数乘以每个人可以传染的健康的人数,再乘Δ t \Delta tΔt
    $ v% s* y7 V: R9 F1 E# L, Q+ \4 `; Y8 p: z
    * ?/ }5 E% m" O: C: e1 j
    Δ t \Delta tΔt除过去,两遍N约分得到下面,
    * V, s& q* X- Q$ f' V. }
    0 d' g/ \" |* [8 B  M# Q0 t1 k$ w

    & B+ s- n9 s0 G- f6 V9 mMATLAB解一下这个微分方程
    4 u1 g0 W' w. n
    8 S! p/ O3 x8 W" F2 e; Z

    ; {+ @% C" O6 C1 Jy=dsolve('Dy=n*y*(1-y)','t');$ \# {0 ?1 l9 g

    # [$ e6 ^( g8 j6 w, ~& A3 I4 Y; V7 I& ~

    * N7 `9 H' W6 V( xy =
    + ^+ f1 y3 j" P; c9 E7 d* ^6 U -1/(exp(C1 - n*t) - 1)' M. P, A0 d0 z3 R2 k" C
                          09 d! o, G$ w; L3 u
                          1) l  P. ~3 C- Q9 l4 J5 {" d3 X
    1
    * X. [9 ^& ^( V; ?2* e0 _5 x2 ?4 s" P
    3
    ! ^% e) H# `3 o40 D4 L3 @2 U$ u+ S
    5  c4 m. A0 V7 q7 X. W
    6- D7 }* ~, o9 U* }& D) ^
    写规范点就是这个函数
    0 ^$ ^$ F: n$ \4 _/ S! N" B& T) t& ^4 M

    , O" ~1 p, Z. C2 c函数图像大致为& I$ B/ e) X) \* r( \
    & J" {( v7 o% T5 E4 u. C

    % X. J  l7 k% l& s: Z可以看出t = t m t=t_mt=t
    " p# b; p% `3 ]2 Am
    ' v+ m5 i  a& n7 B( s0 x9 N​        ! @/ Q" U& k0 X8 M
    时这里图像的斜率有个最大值,其也就是传染的最快的时候,即传染病的高潮时刻,当然t m t_mt 9 w2 Q+ R2 m% K. O
    m
    6 R+ i2 `5 G2 b; T1 m​        3 z- ^2 S% p  h5 ~# P! |, L
    是可以求出来的: G+ C" Y5 H: W' {' J; i& I. R
    6 }" D+ V; _& f8 Z
    6 F" q5 J0 X2 o" s( v: r# Z8 m
    再看原式,当t → ∞ t\rightarrow \infint→∞时i → 1 i\rightarrow 1i→1
    : l4 v1 y. Q. f- ~/ ?; C! K( a病人的比例为1,当然这也是不可能的,因为我们还没有考虑有没有可能治愈,看模型三
    $ I/ c  ?7 ]; W# O8 A$ K  k# e
    5 F/ r$ \* S. s- e: R4 u! H

    # D" M( J: \& T3 o, n2 O& |% }模型三
    ' A4 m% n# }9 L假设:
    % d* X/ H! K: u( t, T
    : f" K7 `8 ?8 ^3 b2 h
    7 C3 e) }/ C3 y9 A. y9 Z
    传染病无免疫性如伤风、痢疾等——病人治愈成为健康人,健康人可再次被感染。- g- A1 X( n6 W, s3 o
    病人每天治愈的比例为μ \muμ (日治愈率),1 μ \frac{1}{\mu}
      p: B# y+ U$ C+ G7 W0 x2 h' Uμ
    & O$ |& C+ M5 z, r2 m( L" d10 S( K9 Q" S- M6 a
    ​        : B. M7 _2 \, W" x
    为感染期,6 R( r( M5 D( O/ \. a4 _3 C" V; g
    模型
    6 Z6 h6 z0 s* [  g- ~6 [4 R这是减去了治愈人数之后的新增人数5 A, }% q8 S& ^5 Z
    5 o. m7 {6 c6 f$ X0 T5 b" X+ N; I

    ; Y% ]0 ~( b/ V! _* y; x& s7 s, |' m5 W2 h5 E/ ?  U0 p  O
    : a) w& D9 J& l& k
    σ \sigmaσ 为一个感染期内每个病人的有效接触人数,称为接触数  w) y6 D! \3 M6 q+ B) ?

    5 [( z3 X4 \3 ~! I4 M& h

    1 k5 }6 f5 {6 U$ h6 g4 ?! h/ p可以画出上面的图形分析下/ m. ]5 a  p# S& @

    6 h& c2 m$ n( _# v% @

    8 A) I# A" m4 C对上面的公式进行分析,可以得到,当i = 1 − 1 σ i=1-\frac{1}{\sigma}i=1− * i4 f) i7 I1 C3 V
    σ, t0 y  O9 b2 n3 O' y
    1
    , G( A- f( x2 g9 v​        : {1 N+ d5 b! `0 i! G, g) P
    时,i ii对t的导数为0这也就到了i ii的最大值;当0 < i < 1 − 1 σ 0<i<1-\frac{1}{\sigma}0<i<1− ( M6 `+ V* w' R2 k! P! I: u! S" R/ R
    σ
    / m' ?6 f# V% K( l1
    ' J9 [: F2 [% S- R3 f/ o  B4 \, D​        * E3 a  `+ Q, _# _$ v5 l
    时,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− 6 ?8 Z0 z6 ?- _7 b6 O* T
    σ* {* Q1 F6 U, W: M9 c6 J1 Z
    17 Z6 j- k5 e; [0 {+ ~' N! V8 D# h
    ​        $ u- `5 W1 k* H8 C0 B
    ,d i / d t < 0 di/dt<0di/dt<0,i是单调递减的。
    ( e0 ~! Q6 i- R9 I* c4 J* O
    0 s! O; h4 C0 ^! d. j2 _
    * A% e, }3 }; c/ ]. N5 m+ q4 M
    当然我们也可以画出i ii随t的函数图像
    ' D& o$ ~* u, ?7 n8 @* p3 @# R( t6 c9 k' ^2 F" S

    ; m, n" y' H4 D* E) d先看红线,若初始条件i 0 > 1 − 1 σ i_0>1-\frac{1}{\sigma}i 0 u' \- K6 [2 a% `0 V& _9 _. o
    0
    - P* g& p! Z  @2 E! A& Z7 H​       
    : L0 P: r- q# A; F( Z  c >1−
    " f! ~" S. W  o5 w$ U& xσ
    5 Q0 Y2 a9 w1 f, }+ ?. }1. R5 X  H& j0 v
    ​       
    5 @; X' r! f; L4 |5 I d i / d t < 0 di/dt<0di/dt<0,i就是单调递减的,, C* R. n0 O2 a4 y8 C
    若若初始条件i 0 < 1 − 1 σ i_0<1-\frac{1}{\sigma}i
    ( @% N1 M. R6 Q" m! s: G0
    " ^& {* v6 _. S; X$ y0 x​        3 K: N! }5 i: b8 O7 a
    <1− 8 W* S" `4 D2 e+ m) Q: W
    σ: b, |* v, l. m8 h
    1
    " x, X$ o( w. R0 O​        ' I: r4 A6 v+ H7 b
    ,i就是递增的,可以看到i对t的导数图像有一个最大值,下面的黑线就有一个增加速率最快的一个值,按S形曲线增长# S1 L1 @$ X9 Q% ?2 p3 M

    5 c) M9 j, [2 Z0 s  L' X8 R
    6 g: F* h) q( F, I4 z- `/ W
    σ = < 1 \sigma =<1σ=<1时d i / d t < 0 di/dt<0di/dt<0 i肯定是单调下降的,最终降到0
    ! u: ?( L6 a: y
    / T. N- N' k5 T3 z! C1 Q" C

    1 B  G! A$ g3 b1 u4 U6 C- k$ U- ~! y, y0 q  N  Q! b

    * k0 q7 [$ C7 ~/ l+ u/ {( b3 w+ q综上:
    ' p! F- e9 w  }, o/ f6 b想让患病者越来越少,σ \sigmaσ必须小于等于1,即感染期内有效接触使健康者感染的人数不超过原有的病人数.) D7 A8 M" r# F' Y
    9 ]; C: q  k' v0 {! I% P

    / l" E7 L# {  J  K" r; s这里我们分析的是感染之后还能感染的情况,但有些病毒感染之后会在体内生成抗体,就不会再被感染了,下面我们分析这种情况。
    . C7 `" C" q* Q. M" t+ y/ ~2 [! I& y
    ( P- t6 D5 n4 s: F

    2 t% H6 h2 d; e8 O, G# \" |模型四 SIR模型
    * L1 p% p, e3 {SIR模型是常见的一种描述传染病传播的数学模型,其基本假设是将人群分为以下三类:
    ' O7 A2 v0 e3 `% U% T- Z$ c; v! G5 n' L- w7 a- X

    4 Z$ j5 l) s& [1 易感人群(Susceptible):指未得病者,但缺乏免疫能力,与感病者接触后容易受到感染。! M9 \# S/ w- v; j4 s8 E

    , y- W- p& z, s2 m3 q, Q
    ( K2 V' O2 J7 Z/ e
    2 感染人群(Infective):指染上传染病的人,他可以传播给易感人群。, s% t. t( G8 f$ I
    ! G3 O7 ^  e0 A/ m8 z

    5 U3 {$ q, J1 u5 b3 移除人群(Removed):被移出系统的人。因病愈(具有免疫力)或死亡的人。这部分人不再参与感染和被感染过程。
    $ n- R) v  k5 z5 p0 L+ f' l! o5 b7 x) h& N1 \& {0 ^
    ) _4 Y& U9 m( {  H
    假设:
    4 S% P2 P) B; M7 |2 X- i0 R
    & w/ s. B4 \1 g. ^6 w

    - e5 t" J! q1 r+ J" c& a3 g( R" n传染病有免疫性如天花、麻疹等——病人治愈后移出感染系统,称移出者(Removed).
    7 K7 @+ v( ?/ J, H: y) q总人数N不变,健康人、病人和移出者的比例分别为s ( t ) , i ( t ) , r ( t ) s(t), i(t), r(t)s(t),i(t),r(t).
    - r+ |5 ?0 I4 B4 A病人的日接触率为λ \lambdaλ , 日治愈率为μ \muμ, 接触数 σ = λ μ \sigma=\frac{\lambda}{\mu}σ=
    2 t% J2 K( G; G& jμ- Z# a5 Z2 b) t
    λ
    - q$ Y2 t/ X3 z; m' q​       
    / ?9 ^2 |/ t' }- T$ `  ~
    6 a6 }. U8 t9 h% M! }建模:% [7 j: Y/ k6 d- d  B, S: p2 q
    s ( t ) + i ( t ) + r ( t ) = 1 s(t)+ i(t)+ r(t)=1s(t)+i(t)+r(t)=1' \1 ^5 |- s% E" g/ m
    这个就是病人减去治愈的人,和上一个模型是一样的( W. `! I7 ]2 }) [

    3 P, H1 @7 @: u* ^/ V
    + E2 B, t/ u3 [  e1 r2 D+ |
    因为有治愈后是有免疫性的,所以可能被感染的总人数要减少,减去移除者就是; f  o2 l4 ?3 n
    0 S, O: c3 w( v* z6 ~, h

    & ]) G% W) N+ q* m将上式化简为:7 j. R( x# ~' J$ N7 z
    9 D7 l) Y8 F$ `( O- S, a) O: Y) t9 J6 `
    6 w. W9 C' W* B8 B( f5 k
    i 0 + s 0 ≈ 1 i_0+s_0\approx 1i
    ' T8 h; Y& K( u' \) V) J7 M. g0
    2 J; Z0 N8 F( C0 ?​        * H( S& k7 ^, b1 i# N; j# b. P+ J: R. Q
    +s
    0 D# A# k( ~7 m8 |( i) [' k0 E0
    % y# H9 ]1 H4 y+ F, w$ f! J. P​       
    9 h- l7 i0 A' q' P, q9 y ≈1(通常r ( 0 ) = r 0 r(0)=r_0r(0)=r
    / z: w0 O4 p( h  z( Q0
    4 }- @7 b3 [+ I. z4 s. u+ q​        ) T+ R$ A" i+ k7 K+ w
    很小)/ `) `$ y! v7 j' h: t9 w
    & n4 y( c6 N1 b; u: t/ y4 [, \' J
    2 r2 L( H9 n1 J7 V& H2 P
    关于i(t) , s(t) 的非线性微分方程组,没有解析解,只能通过数值计算得到s(t), i(t), r(t)的曲线,下面来看下曲线的数值解的MATLAB程序( s3 s- L# D: ?

    0 H1 `" z: U) q0 l4 j1 U, {

    , p* D+ y  r: r' G这里我们先设λ = 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
    2 }7 n( l( G5 p4 n1 I8 ^0
    . p# C( G( l0 `​        ' Y) s! L" l. {4 R) P
    =0.01,s - ^3 A. p2 x0 U
    0
    / D9 Q! S# j* S$ r+ @​        & f* R8 o1 Y" b+ `
    =0.999 O, x; {0 w$ e3 N
    也就是平均一个病人人传染一个正常人,治愈率为0.5;开始的病人比例为0.01,正常人为0.99,设没有天生带有病毒抗体的人,所以r 0 = 0 r_0=0r ! R3 y; v5 Y1 {
    0
    3 @: N9 ?7 f% W0 r( |0 n( c​       
    4 ~. y' z* i5 l7 r; q  X& v2 q2 j =0,之后若果病人被治愈,则具有抗体了,有抗体的人为:r = 1 − i − s r=1-i-sr=1−i−s
    . @0 x4 A5 E0 O4 e, g
    $ O7 Y* E2 G+ G# q1 F5 o( r5 C
    4 M* Y& l6 [1 J# x: m0 Y
    ts=0:40;! q) B1 o* u# I4 \0 V
    x0=[0.01, 0.99];
    % F% n, ]8 z0 D: t" o[t,x]=ode45('ill',ts,x0);
    : C) x4 L0 p, c/ J. p3 t9 L/ C8 I  j2 [r=1-x(:,1)-x(:,2);/ o. I: h5 z: f* G0 L: P5 ]% F4 e
    plot(t,x(:,1),t,x(:,2),ts,r),grid* E# `, N: A4 a3 u! K$ }# m
    legend('i(t)','s(t)','r(t)')
    0 G' \) l( ~7 ]/ n" Z7 r& Q7 F! t  S
    ; `9 r$ E) |! _0 \
    function y=ill( t,x)
    1 d4 ]: R  H* o: f+ l; j5 L4 |a=1;
      }! J" M/ h- ]+ l9 Z1 a1 [0 eb=0.5;3 U5 s* E: I+ P5 \% r9 R" U) _+ \
    y=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];4 P5 O( l& }- b( d6 ^9 |
    1
    ! K, I* B& c% S( A2
    7 N4 }" R1 m8 r& l: [' X3
    , z/ `* h! _" X: j6 Y46 P# }/ I; Q  w, R
    53 V3 b0 N* h% g
    6
    - ?; N" l8 s& X* O7
    6 B4 {4 A6 u. g* ?3 K: G% J/ G8
    ) V' f& _# _% C1 `9
    5 ~, a5 |5 D; n% h, L* t  n+ i10
    ( X. E6 `; m9 C11
    ; F. _# J- j% f0 `# o8 J  P  ^" r% j' Q( p6 l  _' w
    6 A7 m) {  ~" r# Z* K- Q
    可以看出:s(t)单调减,r(t)单调增,都趋于稳定, i(t)先增后减趋于0.
    / U1 f  ]  {' `7 Q, Q结果分析7 s0 q$ @2 m1 D7 l+ }% y3 z% k! p
    先回顾一下参数
    + i' Y' k$ k8 c+ X" t8 r- P8 u接 触 率 λ ; 治 愈 率 μ ; 1 / μ   平 均 传 染 期 ( 病 人 治 愈 所 需 平 均 时 间 ) ; σ = λ / μ   接 触 数 ( 感 染 期 内 每 个 病 人 有 效 接 触 人 数 ) 接触率 \lambda;治愈率 \mu ; 1/ \mu~平均传染期 (病人治愈所需平均时间);\sigma =\lambda/\mu~接触数 (感染期内每个病人有效接触人数)接触率λ;治愈率μ;1/μ 平均传染期(病人治愈所需平均时间);σ=λ/μ 接触数(感染期内每个病人有效接触人数)
    ; R7 T  ^6 }0 U* |  b$ M9 t( x可以分析出:
    " A6 m- v& P" u8 I1 c) N3 n7 N, p2 m

    2 k' d0 q0 f% n9 l# s随着卫生健康思想水平高,接触率λ \lambdaλ变小" I- `' ^. [/ s0 H# ^- ~
    随着医疗水平的提高,治愈率μ \muμ增大
    . F. Z7 W6 M$ z$ |9 s% T* U: S! J$ ~) u接触数σ = λ / μ \sigma =\lambda/\muσ=λ/μ减小——有助于控制传播.
    9 k& }  y4 f4 i: b8 z/ E% X( U我们可以试试稍微减少一下λ \lambdaλ,增大μ \muμ,来看下效果2 r$ D( W( n0 K) a+ E" ]& |
    : i3 x9 t( d/ c- F# L! E

    4 V4 D! V+ ?' E, }) E* l8 Kts=0:40;$ W7 _4 n- B  l6 K# x
    x0=[0.01, 0.99];
    . G$ h+ i6 D* b6 N/ d[t,x]=ode45('ill',ts,x0);
    ( E- v) }% t; W8 r0 a$ {& Sr=1-x(:,1)-x(:,2);
    . y) v% N- v6 s8 g# Oplot(t,x(:,1),t,x(:,2),ts,r),grid
    " q( l* V) H$ T) u! {! Alegend('i(t)','s(t)','r(t)')
    4 d! S8 R3 ?0 E1 g' @
    ; z3 S: x  D% s9 s8 e* y

    6 q/ |0 y- `" m6 l- bfunction y=ill( t,x)# x- A4 m2 @* _
    a=0.8;
    ! {) G: k9 p+ s2 B9 K4 Hb=0.6;
      B! |0 T3 J  X, vy=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];
    1 a0 j7 d. k- ~/ Q1/ Z: [& c' \2 J* U; j" w! x- b. N
    2
    & Y- j, S, M4 Q3" O) Q) k6 I) S  }( z( h6 K
    4- V6 C; h- b' H" Q& H
    5$ t, H& w5 F, W) G, `8 g
    6
    & q) v" H' E9 t' M& g7
    5 G1 I# N: I& w, g+ W2 e, N1 L3 l8
    # G! _, r1 z8 m  _: }9
    & Z; S% n  ^' ^2 }( p2 q8 Y105 s+ I( |+ U- C2 X) s0 E
    11: Q: O8 P$ m; G8 g3 ?

    $ x% C8 M! ?) G' f5 Q8 H
      I' z9 Q0 a1 _. k
    综上我们可以得出结论:想要减少传染病的传播,我们就要在接触数σ \sigmaσ上下功夫。
    - ^. P" P0 ~" `4 U9 @1 f9 D4 M3 S, O! T. y! Y1 g4 ~& A" W

    , |, i  Z6 u$ B" Z: E5 x3 _实战建模4 G0 A3 L% m5 F9 ~9 J
    数据处理
    / g0 I# k  E3 ^4 U) Y7 H2 y8 {/ g  a6 w% r7 m0 L( s% s! `
    4 E: o7 _# u/ i" W% E7 q
    首先,我用python爬虫爬取了丁香医生官方数据,一共5534条数据 特征包括感染、死亡、治愈的总数,当日感染、死亡、治愈新增,疑似病例,时间,省份等14个特征
    * v3 k! l5 n) {  `/ M7 A
    : _# f% `2 |; \  N# L$ A: D

    1 e1 `( {* m1 ^: h. {8 ?7 C1 a$ I  L) ]1 B% j/ u

    , b% K5 M* B. p$ e8 P然后用python进行数据提取,提取了较为典型的湖北省的数据作为我的参考依据7 O* {- G6 @% w* E

    % t) `1 h' A/ g6 o) N# h( X5 F+ {& B

    ; U) Y1 n$ t" k4 `/ t  O2 B
    ' [/ C" C1 p+ N) o! ?4 W& H
    / H1 v7 v1 z- M% L' x0 Q& c
    然后用python对数据进行清洗,提取出了患病总数,现存患者总数,死亡总数,治愈总数,时间,省份这几个特征; y# f2 v! [9 m) L# ?' \3 j  r9 Y
    & G, J# ?, P5 U+ p/ a( Y; x

    5 {2 y; c4 ]; [& s9 z对日期格式进行修改,值保留月和日,并与死亡人数的位置交换/ a* I- p2 N. J& j9 d/ t

    " `) g. }* a8 X0 |* _* D- J
    $ @' n7 z" L- @' f  M
    这里我用python对提取的四个特征分别进行了数据分析(主要包括计算最值,平均值等,),并把1.20日作为第一天,7.02日作为最后一天也就是第165天,做了可视化可视化处理。/ X+ w$ U0 _' O
    感染人数示意图
    $ Y. d" X1 [3 F2 J8 q- y3 m: G
    ( W! q) d7 p( O: }. }+ }
    0 @3 @  n7 w( B5 l4 x4 |( B+ f
    治愈人数示意图
    & X* G9 ~8 |2 f; s$ E2 _5 k. P9 _" H) p* b
    8 n$ E& p% B$ G9 R% ?9 @7 z) V# @

    2 u: ~5 v/ s  W$ b  g& r

    ; B6 G8 P# v9 R. @, |现存患者数量图9 i, F3 I% L& |" _

    & c) u" r1 v5 v6 ?1 q& ]

    % V8 N, `4 P! V& ^死亡人数示意图7 Q2 V7 M( u. c; {+ i

    * z) w8 J, B% h
    6 P% \) \, R1 ~- N& v$ `! {0 k3 ^$ x

    : A% m' a, G$ ~' N% _1 i( k

    - L* S; c, c" v. |( i& `经过上面的图片与describe数据分析,我们发现有一天是异常的,患者多出了平时的十倍左右,经过查阅资料,这天因加强了检测标准,所以增多了很多。为了避免这个数据的影响我们选择将这一天删去(或者用平均数或中位数代替也可)5 F. p1 @$ q  l' u& {
    将上面清理过的数据存放到csv文件中
    ! |  a* b8 n4 x) S* y/ X& {" {1 n  j% j: O3 C, L4 I+ o/ R
    ( T5 W6 |+ f2 R  Z& a  P
    模型建立
    1 T+ E! P* C1 |8 I# j  D! s9 q模型假设1 n4 H, |3 L  b, O6 C
    经过上面数据的分析,我们大体可以进行如下假设:/ N8 F. H9 G. ]9 B, _" F0 ]; Q
    1.由于不存在封闭情况,考虑开放体系。: x; s5 H1 A0 e
    2.目前数据以天为单位发布,因此不考虑连续变化情况,只考虑离散的方程。' v7 p/ Z4 ?8 [' P
    3.新型冠状病毒的治愈人数和死亡人数相对较 小,因此只考虑 Susceptible(易感)和 Infected(感染) 两类人群。设易感人群总数为N
    - a: a# z  v# u" R. y4.经专家鉴定新冠病毒患者治愈后至少六个月之内不会再被感染,所以设治愈后移出易感人群。3 `, l3 h2 ~+ ~5 M! m
    5.设每个病人每天有效接触人数为 λ \lambdaλ(日接触率),且使接触的健康人致病.
    3 b6 ~& Z2 |+ }7 `6.设病人每天治愈的比例为 μ \muμ(日治愈率)! X2 P' f3 m# T% C$ M3 d% d
    7.时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t).
    ' y& L7 j! h, @# c- r5 B+ f! l$ S/ i& @) _

    2 U( @! A  P5 D' j& I6 O模型一
    1 s# K! B: E' `: B2 b/ C: d% X5 [9 E7 j0 a
    ; ^$ ~% T0 X1 P3 {( m, o
    分析可以得到移出者r(t)=治愈人数+死亡人数
    & @8 L" ?# m5 D; d7 I0 K! U$ `通过python数据处理,我们算出了r(t)的值,并将其可视化
    ) p6 O* W2 p" T& p' D6 _) c! J  b5 U6 O" F( Q# Z/ v% m

    . Z6 s0 e% w9 u9 j% G& t$ c* \# t5 \7 ~  {2 h

    - u7 Q# z+ O  j我用MATLAB对其进行了拟合,拟合图像为6 ?/ ~9 D  I) D1 V: _7 ?
    3 ~. ~+ V# P$ L7 J6 p

    3 d1 q4 j/ F( z; w% N4 D# ^" |" ]: j* z7 m& I7 g" ]

    $ s, i" c) k8 Y& D4 x: v2 c+ V' S1 l* F

    + I% `" a9 |; Q0 h. K3 n, t: z分析可以得到患者 i(t)=患病总数-移出者
    & o. ~% y9 k; p% N' d5 l3 [7 L+ r可以通过csv文件的currentConfirmedCount 直接获得i(t)数据,当然也可以通过 i(t)=confirmedCountv - r(t)获得,对此我也做了可视化展示' P- O" F5 b3 i+ n
    & g- D0 T4 j" [# b1 w, \
    ' s8 M1 T5 ~( Q0 U
    通过MATLAB程序对其进行拟合,可以得到r(t)的函数图像大致为8 r4 o7 `3 m. S+ R( z5 ~( i( s
    , H7 ~  h4 t7 U0 c2 C: S- h
    3 N2 h6 ~% j& `2 z

    $ W3 h9 A+ G& l* b
    ) A; B- Q: Y; y% w6 u# \2 d1 b3 p
    4 @. q  `: ^! I' D
    8 Z& N& {. P4 k! H; V1 C7 ~0 K0 F/ K
    为了方便,利于公式推导,我们先设时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t). 所以有. \4 B3 N% I4 \+ Y

    - R4 ~) s5 _) Q& p
    8 r& a; H, E- |5 }7 q$ _5 M
    可以推导出每日新增病例的表达式
    ' |- O8 Z1 n* l+ X" y- j6 |$ z, \3 A. ]* [; L$ A9 |

    & T0 E( ]# u4 {
    1 k4 I3 E* ?: _

    4 R9 s+ V' ~$ p) I6 r
      B+ Q9 E* \" ^7 Z
      X6 Q- X) B" x6 q- E6 p# j
    由以上两个公式可以推导出以下两个微分方程/ t* D4 v4 s2 Y( m! V. I8 J  R

    6 x& b% N+ X8 p3 ^9 k5 q' l2 p

    " g. n/ V. `# A& d% {. d8 P
    6 \: c4 l7 q7 }/ x  X( i: Q0 n9 W
    / n# d! j4 O8 f
    可以知道初值& a* v" {/ l: d, I
    i ( 0 ) = i 0 . s ( 0 ) = s 0 i(0)=i_0.s(0)=s_0i(0)=i
    ; Z0 n' k  Q' m4 K0: L4 |) k/ n0 W& i7 P# D6 N$ b
    ​       
    7 W3 c) P$ z$ D) x. {* T  U, o! i .s(0)=s
    5 \  Y0 B' ^6 ]( G" U; c0
    . z! L7 `+ C6 z, C  e* L7 S" t0 K​        6 a0 ]" Z4 {. w- A: b

    ( U% D/ T4 m5 ?3 C5 N5 f; Y因为一开始治愈的和死亡的肯定很少,所以r0可以看为0,于是就有:
    6 v  k# n4 [* [' i1 Q8 ii 0 + s 0 = 1 i_0+s_0=1i
    1 R  v: s6 m3 ]5 {: S2 h1 Q$ d0
    & b' q+ x' Y4 O0 Q) R. Y​        * n6 G0 E8 f' I. m# ?6 r' s
    +s " _* w: j4 U- a% @3 f8 F% O
    0
    $ h$ W8 P8 J( e7 ?1 R​       
    # I) }8 s% t8 p5 y =1) ]( ^7 d6 _% o8 Y
    通过解以上微分方程我们可以根据经验假设λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)的值分别为1和0.5(也就是每个患者可能使1个正常人患病,患者可能有0.5的概率被治愈);由于一开始患者肯定比正常人少很多,所以我们设i0=0.01,s0=0.99。对其求解可以得到s(t), i(t), r(t),的变化图像2 t" ]* s4 z) C% n3 k, G$ t

    7 T1 z9 {$ k" R9 N7 }
    ' p7 ]3 A0 Q6 e9 H$ A2 N6 K" O6 |
    5 N: k2 J' j9 y% W, u8 p9 c- x

    & ?5 d* H* ?1 F2 ~- h- ]# cMATLAB程序如下
    ; t; W: `$ V8 t/ ~ts=0:40;- F5 ^2 }% f/ C! s0 r4 X4 g* M" `2 P
    x0=[0.01, 0.99];. r+ j. r  ]; Q- [1 q
    [t,x]=ode45(‘ill’,ts,x0);- m+ x$ g! U6 I
    r=1-x(:,1)-x(:,2);" d5 x  K8 u1 U% W! ]" M( n% D
    plot(t,x(:,1),t,x(:,2),ts,r,ts,x(:,1)/x(:,2))
    ' C& C9 R+ e) y: G! Dlegend(‘i(t)’,‘s(t)’,‘r(t)’): I, w% D( I  n9 b: [
    7 O3 W; @0 ]$ h9 `4 ^6 W

    9 t" w6 h+ Q1 M0 c6 Pfunction y=ill( t,x)
    * u" E( X& [1 X5 v$ e9 ha=1;
    3 U  |! C6 I8 J7 p: e8 `. [' }b=0.5;
    ' q& ~8 l0 _% ~4 C, e9 zy=[ax(1)x(2)-bx(1);-ax(1)*x(2)];
    2 a2 C6 P* O' ?* w
    1 |' \5 l0 q$ ?

    / h- O5 }  Q( A- @. V& |" g# X结果分析:患病人数肯定有个高潮,但之后高潮就会减弱,并逐步降低为0。随着医疗卫生条件的不断提升,患者的 λ \lambdaλ(日接触率)肯定降低,μ \muμ (日治愈率)肯定上升,所以我们可以把λ \lambdaλ调一点为0.8,μ \muμ调高一点为0.6,可以得到以下趋势图。所以应对传染病很关键的一点是我们要提高医疗卫生条件: a; S0 I* |4 v/ t$ k) w  X
    ( R& C# k" f: z! R, n8 Q

    ! l( E- ?" K1 a
      D& X6 W$ b8 Q' K  h! f. I! T模型二
    ! Z6 x3 R  J) E7 i& K
    , e. b5 r/ j. k( B- x4 M- E5 X

    / u/ y( ~: T+ @# I1 J  U; Z实际上,λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)都是随着时间变化的,这里我们设s(t), i(t), r(t) 为第t天健康人、病人、移除者(病愈与死亡之和)的数量, s(t)+ i(t)+r(t)=N.." r5 [% b3 ~2 z3 W- D6 Z5 J
    (t), (t) ~第t天感染率, 移除率(治愈率与死亡率之和)
    ( w+ A1 ~" Q: f# @3 w: _: Y) O有 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)+ ?; x& g& k7 a" d
    因为s远大于i, r,s(t)视为常数,所以有7 y, g$ h! w4 \3 O2 v* F& y
    . @$ W- b) X, `
    3 L' e" \" j. F7 E# w, O1 b0 z8 M/ o
    % K( K2 R; |7 N2 a: Y2 J

    5 U' w: ?4 _& A- p! ~/ C取差分近似导数
    ) [0 K6 Z2 S! ~+ h; q* u) L; Y4 O2 S

    + B* Y) @1 \1 r
      f! l7 I6 {6 d) W3 `
    $ ?% t: B# z7 }( p2 P. I
    我们可以先用真实数据对(t)进行展示并进行拟合
    - l4 Q! _6 H3 J9 i( c6 f
    4 u9 e' ]' j1 q4 n, W

    2 Q' c3 Q+ k  C) t4 Q+ Q! E
    5 D" B+ J& v8 C8 h1 B

    - h# o! z% }- ]" f, n4 x当然同样的方法对(t)进行拟合! }" Y+ Y+ \' y/ j! u2 Y" t& i

    ( ~2 O" p' S8 u& d5 c5 W7 B
    4 B4 a" v5 u5 ?( s- S
    做不出来了,好难,光这些东西就弄了四天,到了数学建模国赛得多难多累啊,哎,让我这个小白手足无措。毕竟还没有正规的培训,这个模型等期末考完试一定好好做做!!!$ P! I) `. [0 M: Q2 U1 i
    冲国奖& s- Y  l! ?. i6 U" v
    冲国奖6 m, j# X# g0 F  a, {5 T( _( B
    冲国奖* w6 @# n8 u  t* _
    ————————————————3 r+ R* ]# C( c( p7 v7 d
    版权声明:本文为CSDN博主「小白不白嘿嘿嘿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    / d8 ]: N: \5 {$ v  P原文链接:https://blog.csdn.net/weixin_45755332/article/details/107094630; f# @! [6 G; p$ r! r3 h

    & q" v' J* s0 H' r" M( R9 o- W/ W* M& ?4 |2 O# X- 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-4-11 01:42 , Processed in 1.607194 second(s), 51 queries .

    回顶部