QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5617|回复: 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 G3 P: {/ ]/ y数学建模之传染病SIR模型(新冠真实数据)
    ( z  @: I7 f7 I3 w3 u1 S5 `4 B传染病模型的基本问题
    , f# {7 P) ]' H0 [4 J描述传染病的传播过程
    & ]) K9 j! a0 [" D9 B+ G, F7 g( C分析受感染人数的变化规律
    2 ]6 _+ N; o4 D( l# H/ L预报传染病高潮到来的时刻
    # v- L7 A) h4 g* s预防传染病蔓延的手段
    ! H5 D/ E, u; s4 Q( ]9 c8 B按照传播过程的一般规律用机理分析方法建立模型
    4 N+ w, `3 c" O% [9 u4 L注:我们这里是介绍数学医学领域中基本的传染病模型。不从医学角度分析各种传染病的特殊机理,按照传播过程的规律建立微分方程模型.
    * n; R4 k+ s% y2 m0 M" B1 v4 h( W% L  ]8 o# R& F' @
    4 S# Y+ W& V* d
    建立模型( S. E: k9 D& V2 \7 d$ k9 m
    模型一: N6 T' d+ ^' z* V' b
    假设:/ f7 S9 H/ \9 H0 Z" b' v% m8 m
    2 e; H6 s- `' D% G

    " I! g7 O# [( F% ^4 x! H( h7 v设已知感染人数为i ( t ) i(t)i(t)(病人数量随时间变化)/ P  k" s- \1 q$ M* ?9 g+ Q1 h
    设每个病人(单位时间)每天有效接触(足以使人治病)人数为λ \lambdaλ
    5 @1 |9 a0 z6 }: B  {, V模型:
    / }4 k, x# ~! x  s: \. y! [单位时间Δ t \Delta{t}Δt内,新 增 的 人 数 ( 现 有 − 原 有 ) = 原 有 的 × λ 新增的人数(现有-原有)=原有的 \times \lambda新增的人数(现有−原有)=原有的×λ,即
      F* `7 O3 v* ?$ z4 r$ S6 {( V5 p' v4 `; R- A1 y% k; l( w( J
    % H7 p& V2 W( H3 V
    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)Δt3 K. v1 ?/ n1 V: A! R6 @' k# r
    一开始的感染人数为i 0 i_0i
    " ?. t, O, ^3 c0 X* l* W0
    9 h5 ^# j- v7 M​       
    , Q8 x5 l- E7 R$ a8 w  o
    # r& _9 q9 t" ~& o/ v. Ci ( 0 ) = i 0 i(0)=i_0i(0)=i
    2 x! i. @/ H, S0& g9 N7 J5 v- T% r
    ​        - k7 D; ^: W0 G( I9 P

    8 \, z9 z5 U) X: a) S3 M( @解微分方程可以得到' o, d6 b- ^' \: L
    i ( t ) = i 0 e λ t i(t)=i_0e^{\lambda t}i(t)=i 9 X; t; c7 L. n' b( C" s/ D: g
    0! Y) o0 t: p, V
    ​       
    / X- ~/ e! e0 x% |9 h) x e
    / F- N, R1 N$ K  k$ u+ k% Wλt! i, N( M( t& q" n

    1 x2 c8 [0 T5 k5 w所以可以可到当λ → ∞ \lambda \rightarrow \infinλ→∞时i ( t ) → ∞ i(t) \rightarrow \infini(t)→∞
    : j. |  W* O+ m; J当然这是不可能的,因为我们考虑的因素太少了,首先一个是,若有效接触的是病人,则不能使病人数增加,所以必须区分已感染者(病人)和未感染者(健康人)看模型二来解决这个问题' U$ H' T; C$ h2 N/ Z

    . w3 d+ {$ J# ^: g7 I( a
    # I6 O! Y1 K6 @+ h6 o" w
    模型二
      H" [' }" t: R/ h; E9 Y假设:
    # ~0 q( V: e6 ]/ F/ p! j" P% q, l7 E8 m/ z

    ) J$ j% F1 G7 ~将人群分为两类:易感染者(Susceptible,健康人)和已感染者(Infective, 病人).4 W) {. ?9 n3 g- O, s8 d
    总人数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
    2 w* o+ k- S/ W$ p) B6 s; v/ \2 \/ J每个病人每天有效接触人数为λ \lambdaλ(日接触率),且使接触的健康人致病.- `; G/ G+ V! c
    建模:1 Q3 w& e9 H- k, q9 c
    每天新增的总人数为原有的人数乘以每个人可以传染的健康的人数,再乘Δ t \Delta tΔt
    . Z: r4 y, O- e, L4 O; y! S' ~7 ^% n/ V2 F) k9 y' {: s

      h" v& B$ ?) d+ p* q7 |+ T) M0 PΔ t \Delta tΔt除过去,两遍N约分得到下面,0 ?& V9 K$ ^' d/ h

    - k2 i) r; U. ~8 @- y

    % P! A2 _4 k  v+ g! w+ HMATLAB解一下这个微分方程- }4 O  \6 I% A7 M9 q% s

    % }# ~9 n0 O/ ~/ v6 Q

    - v* H9 T3 Z; ~y=dsolve('Dy=n*y*(1-y)','t');
    & t3 ~! A( o( z$ I+ i3 z3 ^& R& A6 D* h0 J! E& d7 ^  |
    . y+ o! \% f+ o4 a
    y =+ }- k8 d- \2 Z+ a) \! R; n
    -1/(exp(C1 - n*t) - 1)
    7 D- w* G6 [3 H3 V                      0+ _! G4 M! P1 f/ v
                          19 E" l# ?) m( V" |/ l0 z2 L$ |
    1
    2 ^: d" X# O9 k2
    ' j9 L' M# o2 B* T+ C  [! n3: v( l- s- K7 \: F' ~
    4
    ' H5 A. l6 O/ H. U. I' Z5* o0 v5 ], M- B) K
    6$ d& z3 T9 ?8 w! ~' Z: V: d. ^
    写规范点就是这个函数
    + f, q! g% Z+ T) }
      Y% ?, N5 h. t/ X6 V3 S; g6 T0 q

    9 R* v2 |" |6 e$ o' S, i$ m) X3 c函数图像大致为
    ! ]0 t9 a8 X9 S( T. K2 z8 _( z2 I& Y7 R) S0 @; N) u5 n. R
    3 g9 f& s$ X$ L. N( |" ^: I# A
    可以看出t = t m t=t_mt=t
    , |$ e8 c6 z2 x) g9 [( \m
    7 Q" v2 o) ?' a​       
    ; J$ }, a% [' \# P- z# G 时这里图像的斜率有个最大值,其也就是传染的最快的时候,即传染病的高潮时刻,当然t m t_mt ' z! z! `3 m" v3 x% J+ F2 }* ~4 R
    m( {: u* w6 D7 \3 @+ L' z
    ​        % e$ t2 s) ~# M& b- n8 S' ~
    是可以求出来的3 h; e1 x, K+ [+ f

    4 M& `* ^5 |& l: G

    + [) P& W- H% |" K6 M0 E再看原式,当t → ∞ t\rightarrow \infint→∞时i → 1 i\rightarrow 1i→1  t1 J# m$ a3 w
    病人的比例为1,当然这也是不可能的,因为我们还没有考虑有没有可能治愈,看模型三4 ~, Z4 m+ h0 O6 v3 q8 c

    / G* |( G) @7 L( c

    ) E2 }; m6 N0 T# Q$ a% ~模型三
    - L. j0 H( T8 L* |: r$ c) Y3 Q假设:
    " T& r/ A2 ?9 v# M3 B' V
    2 _3 Y2 t* B$ z0 f! N! ]3 m" O

    9 }! f( O& P. |传染病无免疫性如伤风、痢疾等——病人治愈成为健康人,健康人可再次被感染。- O* ]( V6 w8 N' ]9 l
    病人每天治愈的比例为μ \muμ (日治愈率),1 μ \frac{1}{\mu} # R# H3 h/ d- P6 G7 e
    μ
    0 }9 P: P/ U5 l8 Z- x* l1* F4 F) B' W/ [. s$ f
    ​        $ t* B2 B: U9 m4 E
    为感染期,
    ! Y5 m# s- H; N" ~+ g0 d" W模型
    7 Z, I9 P( O, C  U9 A% l; t# O* u" s这是减去了治愈人数之后的新增人数
    9 }; j/ K* o$ d2 O0 q2 C+ d- A, G) `1 j
    ; n0 d. q( s& o, \1 h( v2 h1 C& A
    7 b$ W+ r% q; G& H! G" H, L6 T
    5 s- {9 _  H5 c/ n: |( J( s
    9 V4 O3 y/ q9 J% e7 Q6 `  l: j  C- H
    σ \sigmaσ 为一个感染期内每个病人的有效接触人数,称为接触数
    2 p& R8 |' q$ {' ?* g0 e
    5 L& h  w0 S* d" P/ w

    ) `% R6 F5 G! j0 m! @# B* y可以画出上面的图形分析下
    ; Y& L$ K+ @, V' c' d2 v& ~* ~& g- \. g+ m

    * x0 {- W0 _, I' Q# j对上面的公式进行分析,可以得到,当i = 1 − 1 σ i=1-\frac{1}{\sigma}i=1− 8 m+ I" G* F4 x$ s9 q$ G/ _
    σ
    " a" o% |/ f5 \" V8 C3 r1
    1 W8 w6 j8 B7 Y' N- [; U0 R9 f​       
    3 ^0 a1 E1 c, t* L1 q0 f8 I& R 时,i ii对t的导数为0这也就到了i ii的最大值;当0 < i < 1 − 1 σ 0<i<1-\frac{1}{\sigma}0<i<1− / b; y% T! |7 h' S
    σ
    ) z7 e$ z/ s: J9 }% a, @16 }- B4 s4 B8 D/ J, a8 y* I
    ​       
    ; b! @, W1 p1 D; X 时,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−
    0 _5 ^7 K* R4 E, Q3 P( t+ Mσ9 E$ q6 @9 P" K& k" a2 O' u2 l
    1) Z& Z9 v+ J' n( \7 K, j
    ​       
    7 T& d( U" Y  i! l& [" i) T+ b ,d i / d t < 0 di/dt<0di/dt<0,i是单调递减的。" V2 m2 h# {: n
    0 G, C9 j% Q# F7 ~, V

    : O# k. ^, q  ~* |. g& N" s当然我们也可以画出i ii随t的函数图像. A0 \/ X* Q; b- z

    ) |" |: F" G* @# _
    6 c% h" |2 I9 V+ y' v$ S
    先看红线,若初始条件i 0 > 1 − 1 σ i_0>1-\frac{1}{\sigma}i
    ) w3 y; x0 v! O" L/ D" [0  t1 A& {% M- ^' r) Y9 W1 `. i. U. c
    ​       
    . q/ @3 b* f; e0 f& f >1−   j/ v4 W% @* H2 R# \
    σ
    ( j1 r% v2 I0 t2 \! Q3 V, t1, c) g9 v8 c1 ^
    ​       
    ! ^1 G) b2 b( u, o$ Q( J8 l/ D d i / d t < 0 di/dt<0di/dt<0,i就是单调递减的,7 k0 Z' z: y+ I6 M- d$ G
    若若初始条件i 0 < 1 − 1 σ i_0<1-\frac{1}{\sigma}i
    ( X" l, s" t  |* L+ z7 V0. s, ]! F' E; P% v+ I8 ~
    ​       
    ) c) a" b" D& Q7 y0 o <1− ( I6 \' B5 C! _" ]* [4 r
    σ
      @3 t' L& h% P- G8 m1
    & F3 j( W. x9 B, e: M​        $ f6 e5 p  a- z/ e4 @$ s
    ,i就是递增的,可以看到i对t的导数图像有一个最大值,下面的黑线就有一个增加速率最快的一个值,按S形曲线增长
      y: }1 f0 k* u; N0 D) ?: x' O5 }/ Y; F$ K& x4 u4 R

    ( }6 m/ G, d2 Cσ = < 1 \sigma =<1σ=<1时d i / d t < 0 di/dt<0di/dt<0 i肯定是单调下降的,最终降到05 p# U' P) i* ^% p8 v) B

    + k" ^( [- M: U& z1 N. S( s

    * X1 h/ _; o% N/ N
    2 `5 j1 C) d9 E

    : S0 U" H0 F+ i/ z7 t0 o综上:
    6 j. n1 y% L" Q- }想让患病者越来越少,σ \sigmaσ必须小于等于1,即感染期内有效接触使健康者感染的人数不超过原有的病人数.  w' E- q5 T0 Z1 H

    3 z6 t3 J5 j  f2 J# i8 Y- Y2 ?

    ; @" L- w; j8 H这里我们分析的是感染之后还能感染的情况,但有些病毒感染之后会在体内生成抗体,就不会再被感染了,下面我们分析这种情况。
    5 V9 l9 }0 H, s9 F$ o  o1 N' I% e/ M' w% a5 u" A- \- j

    / O/ ?6 j- W' ^" y2 Q! U模型四 SIR模型
    . [1 Z: [6 c  K/ a7 ~# _& x7 r" C) kSIR模型是常见的一种描述传染病传播的数学模型,其基本假设是将人群分为以下三类:& @$ t6 z3 X2 m6 I1 t5 I# B+ b- r8 `6 w
    % {! F1 y! O2 a: B2 _! \
    ; v( D( G+ u! a% k! i7 M
    1 易感人群(Susceptible):指未得病者,但缺乏免疫能力,与感病者接触后容易受到感染。, o6 j* C2 b5 q$ i% `- E& m2 q1 L" R! ]

    1 }: O$ l0 `  d: d! @
    / a# P" e$ T7 P9 w. ]- V: C
    2 感染人群(Infective):指染上传染病的人,他可以传播给易感人群。
    - s- L1 i! m1 A' m! J. Y; n0 ^3 M# C; I2 {" R4 Z3 ^3 X
      B  R) s- J) }. N2 H9 F
    3 移除人群(Removed):被移出系统的人。因病愈(具有免疫力)或死亡的人。这部分人不再参与感染和被感染过程。
    & o  ]- M5 k; A' ]4 g4 i( E7 Z/ U* \
    6 H4 l/ c- o& D: e( e* b
    假设:( s5 Q( J# l* B& \2 [

    & L+ A0 w- B( y3 s

    # N* [( h( h. L, ^5 u# L$ Z$ f传染病有免疫性如天花、麻疹等——病人治愈后移出感染系统,称移出者(Removed).5 h0 p4 \/ d3 V/ _. Z
    总人数N不变,健康人、病人和移出者的比例分别为s ( t ) , i ( t ) , r ( t ) s(t), i(t), r(t)s(t),i(t),r(t).
    9 q  x! F5 C$ `4 {# j' m2 ?. Q1 N病人的日接触率为λ \lambdaλ , 日治愈率为μ \muμ, 接触数 σ = λ μ \sigma=\frac{\lambda}{\mu}σ=
    ( e; E, f0 O0 N! n) L# R' Rμ
    5 M) _8 c6 i1 v  {0 p" r  lλ0 l% W  E3 b# E
    ​        ! J& x6 s% F6 }1 C  B! L( }2 ?! O

    " T( B4 H1 _$ ^2 Y# P- u建模:
    7 Y0 F+ ?% M+ Xs ( t ) + i ( t ) + r ( t ) = 1 s(t)+ i(t)+ r(t)=1s(t)+i(t)+r(t)=1
    + I1 k/ ^. I+ Y4 i这个就是病人减去治愈的人,和上一个模型是一样的. H! l4 H6 e- p4 F0 U

    8 j& @) |" [% O! x+ k
    ' Y3 g; {  I! `( R" i2 b& e
    因为有治愈后是有免疫性的,所以可能被感染的总人数要减少,减去移除者就是# K1 t3 W, N. u1 @
    1 H# \- s1 \' B6 i

    ' D: N3 p2 E0 C6 S& [* J1 W( X将上式化简为:+ t8 A: N9 P  G$ W1 M" c

    0 G  c2 l" z5 h& o8 X: {+ `" O

    $ q' K0 j, e5 [0 p4 Fi 0 + s 0 ≈ 1 i_0+s_0\approx 1i
    7 u8 k2 c- N! [2 _( y+ O0/ H( B* q! h- F6 R# K3 U9 _) c/ T) s. ?
    ​       
    4 q4 K1 r2 _0 t% j0 F5 J +s
    3 |3 x( ]2 C7 U. h: [% Z0
    ' [5 w' D  f0 k( p1 I3 a​       
    % B, Y: A& {" S; [! v0 f ≈1(通常r ( 0 ) = r 0 r(0)=r_0r(0)=r
    + f* Y9 q' T3 |! }# G4 ]# i: l1 \) a0 n0& w3 Q# S3 Q6 t2 N
    ​        5 k+ W5 A! d" J' z& ]8 |0 q
    很小)" i" E2 V4 e6 p* y7 t/ e
    8 |; `( r& a+ S% w

    % X7 ~3 G. V% K. Y1 |) \1 j关于i(t) , s(t) 的非线性微分方程组,没有解析解,只能通过数值计算得到s(t), i(t), r(t)的曲线,下面来看下曲线的数值解的MATLAB程序
    5 T7 E/ X& S3 ~3 Z! L) Y1 q, [( ~" Y2 R" J7 f% H9 j. K
    . Q  ]1 a9 }3 E' S9 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- ]& Y8 ~$ W4 h
    0# w% i+ f. E! G! A% z
    ​       
    / R2 W. {6 y& U) \6 _: L =0.01,s
    " z+ U6 {1 v( S* E0
    . Y/ H* I: u6 e. m! F. c​       
    ( ?+ t+ u; K+ k% C =0.99
    7 _. e+ L0 A1 h! ~: b也就是平均一个病人人传染一个正常人,治愈率为0.5;开始的病人比例为0.01,正常人为0.99,设没有天生带有病毒抗体的人,所以r 0 = 0 r_0=0r 6 u9 V# m. p6 G! Z& O4 P% p9 I2 r4 v
    0
    8 d% O( x: V3 O# e4 Z1 y​        4 @0 V( L5 n% U: S  W' ^, s
    =0,之后若果病人被治愈,则具有抗体了,有抗体的人为:r = 1 − i − s r=1-i-sr=1−i−s& V+ {0 N) y; a
    8 u/ S, z1 Q4 N7 p
    3 y6 R" X6 z; U! X8 N% o1 h
    ts=0:40;! D* B/ O2 f& }! @& a- i. @( w
    x0=[0.01, 0.99];4 R/ X$ h* q. L" c+ ^9 q1 K
    [t,x]=ode45('ill',ts,x0);
    ; I! a2 T7 F: i- ^* i, l& nr=1-x(:,1)-x(:,2);$ {/ b) D& e9 k4 d
    plot(t,x(:,1),t,x(:,2),ts,r),grid; j, G8 ~6 }& P1 W2 Z( J& `+ D  H
    legend('i(t)','s(t)','r(t)'); O3 J3 x, X/ E9 e8 r+ ?: h

    ' k& O0 i: [) \1 A" R$ C# X
    # c6 C4 U2 M% y, P
    function y=ill( t,x)
    % l5 W$ @1 o! d# Y$ w! ta=1;/ b5 o  O/ G$ f" L
    b=0.5;" V1 ~8 n( |+ {& o
    y=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];! N4 f/ X0 A5 x+ I
    18 b& ]/ W- ?  I7 t* `2 S' o
    26 a& I, s, {( d" N% z. L4 H4 @7 Q
    3& L8 w8 k2 T$ {& A( Z
    4
    ; Y5 n6 U7 \7 J1 K* x5 ]5
    # \* r" l$ s9 T8 d* ]6) @8 x% E9 e& R3 [" {
    7% J8 |( F" b5 b' x+ V6 R& m
    8. `7 Y3 V' p1 {- Y2 z; {  A, s
    9
    1 w& o. s  u$ Q5 k: {7 H8 W1 W# R10# B. i6 x$ i, |! _, V
    11$ e0 H2 O( |+ L& C
    4 @* l% O+ r6 `6 K
      P0 d' w, C' m; `1 V1 h
    可以看出:s(t)单调减,r(t)单调增,都趋于稳定, i(t)先增后减趋于0.7 t' x. H: K4 D7 R- u8 o
    结果分析
    ! u9 Y8 ~" o; [% J: D先回顾一下参数
    4 Q3 v- `8 A# \接 触 率 λ ; 治 愈 率 μ ; 1 / μ   平 均 传 染 期 ( 病 人 治 愈 所 需 平 均 时 间 ) ; σ = λ / μ   接 触 数 ( 感 染 期 内 每 个 病 人 有 效 接 触 人 数 ) 接触率 \lambda;治愈率 \mu ; 1/ \mu~平均传染期 (病人治愈所需平均时间);\sigma =\lambda/\mu~接触数 (感染期内每个病人有效接触人数)接触率λ;治愈率μ;1/μ 平均传染期(病人治愈所需平均时间);σ=λ/μ 接触数(感染期内每个病人有效接触人数)
    7 g, |, n/ M1 F" X! W: [可以分析出:
    % s: s& @, w' u7 L) T& J  A, V; U, d' t1 E

    + s5 I! C8 y7 e: J- I5 z' P随着卫生健康思想水平高,接触率λ \lambdaλ变小! ?, l1 V5 G  Z- M! M3 z
    随着医疗水平的提高,治愈率μ \muμ增大) q, {1 A; d# E- _- M6 i
    接触数σ = λ / μ \sigma =\lambda/\muσ=λ/μ减小——有助于控制传播., C9 o; t8 }5 T- `
    我们可以试试稍微减少一下λ \lambdaλ,增大μ \muμ,来看下效果
    1 s% V* F1 o, ]# W, q; j7 Y  ^* f' k8 D9 l  f, X8 B
    # b9 S1 D- }6 x
    ts=0:40;% {" M  l9 c# i! v* e1 \5 p$ h6 l
    x0=[0.01, 0.99];% B2 X, Y/ ]7 e4 D; ]$ z- q! K2 j
    [t,x]=ode45('ill',ts,x0);
    / O6 h1 y& f, H; p' mr=1-x(:,1)-x(:,2);
    ' n" [7 w, {6 {$ E" s# V" Iplot(t,x(:,1),t,x(:,2),ts,r),grid
    6 y' M* H3 N. ]- c2 v( @legend('i(t)','s(t)','r(t)')
    ) N1 Q3 g; _5 p/ ~; G  W" G
    4 J3 _1 T+ K2 S6 E% R
    + ^* h, m- ^, p* Y
    function y=ill( t,x)+ @  ~4 ]- k6 H: m* C1 n
    a=0.8;
    " G! a& V) l1 D- }! u! Mb=0.6;$ a( v& W4 z6 i, e' x. i1 Y* b
    y=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];2 F; X2 ^: a+ _2 I5 L% C
    1
    & F0 x: a! I  @2
    $ \: e, ?  E) [8 G" |3
    6 ^3 ]" W+ G2 w8 k5 o& ^5 W4
    - N& b, h. a( J0 p5 b! S! a6 p( f, K5
    $ P6 ^" f2 i1 s4 N. D6# o. t% q1 D9 S4 \
    74 Z7 ]! W3 k# `
    8
    7 y0 W1 B3 ]3 p5 R. P9; ?. m/ m. d+ f
    10
    4 v: r1 c, h# ], W11( `: Z  p# f3 K- ^4 n* C( a. [8 y
    1 C4 G; k/ h; m" x2 q$ q2 y

    % u7 f2 F$ a2 q% A7 L0 @综上我们可以得出结论:想要减少传染病的传播,我们就要在接触数σ \sigmaσ上下功夫。
    1 W' B/ I1 L4 x) S, \2 @. A1 m" C& F4 Z2 X8 ~& l. n8 A1 `
    & r! S& a% N( R6 f4 h  V3 I; c
    实战建模9 U; }( ~' k$ z  ]$ [
    数据处理
    $ v3 A# Y* j9 M2 `1 \  ?
    5 I% k  U' x4 s% E* h( T

    4 T( q* s: u$ o; n3 ?% [首先,我用python爬虫爬取了丁香医生官方数据,一共5534条数据 特征包括感染、死亡、治愈的总数,当日感染、死亡、治愈新增,疑似病例,时间,省份等14个特征$ A! s+ C9 ]9 x& [7 Q* ^/ {1 u

    - y5 u# o# i2 K

    2 q; ]  z/ U% ]' X+ w1 P
    . i4 I3 T# V, a! V

    5 k6 s+ q3 C9 U* f7 p然后用python进行数据提取,提取了较为典型的湖北省的数据作为我的参考依据3 ^* ?! p4 X/ W- U; k: m
    / g) v# ~- x0 z8 Q1 ?' P: D$ e# }8 x
    ! O( J8 q; E5 Y$ \

    ) {$ h  H7 f5 }5 ~% y
    - s7 O3 T: g5 B" y6 n
    然后用python对数据进行清洗,提取出了患病总数,现存患者总数,死亡总数,治愈总数,时间,省份这几个特征" l" [: P# y% T' l$ s7 g% _
    / b8 M% H) U4 v1 x* D
    9 X, f4 s" a0 N+ \
    对日期格式进行修改,值保留月和日,并与死亡人数的位置交换# i  _: B) Y# C, H

    % T0 M/ O1 L/ N) h
    4 e3 g- Q* x( k. I
    这里我用python对提取的四个特征分别进行了数据分析(主要包括计算最值,平均值等,),并把1.20日作为第一天,7.02日作为最后一天也就是第165天,做了可视化可视化处理。# \1 Z6 H& M$ J& w- z9 G9 V
    感染人数示意图2 r% R( u( J# I% T1 Z0 [2 t
    + j. k6 Y0 a2 L) e' h; o" i
    2 r6 C4 r" `- c& I5 l9 ?
    治愈人数示意图8 N% i  ]8 }! N6 T8 S
    9 |/ c' i: E: r: n' W8 {. p
    1 D' a4 U5 r" W8 b+ M
    * X( p9 i  F: X2 o, Z. k' I
    " p) L6 W+ M! O
    现存患者数量图7 E2 D* `/ P: l$ D

    2 b7 v/ ^7 X8 A, _1 \$ T
    : j2 o' r& H- [. R2 d
    死亡人数示意图5 v& g  t- L0 ?1 x
    $ U  M# G# t3 n- S$ z3 N) F1 Q$ }$ a

    * r; n4 Y. i  P0 t& O6 i# I( z  r: h! z1 q
    % {, P! y# Y) q' j! |# ?& Z7 ^
    经过上面的图片与describe数据分析,我们发现有一天是异常的,患者多出了平时的十倍左右,经过查阅资料,这天因加强了检测标准,所以增多了很多。为了避免这个数据的影响我们选择将这一天删去(或者用平均数或中位数代替也可)
      C5 f2 g0 Y4 I" i将上面清理过的数据存放到csv文件中
      }' r! R% k2 x! H4 F. V* l( \9 X! J

    * M; Q; r  }4 |0 J/ w, e模型建立
    - c8 \* |  ]  D/ ?! K* L* H# T模型假设
    " t( ^! u. U6 a- i% V经过上面数据的分析,我们大体可以进行如下假设:/ P" Q& _2 f3 y/ f# X
    1.由于不存在封闭情况,考虑开放体系。- `$ w+ j; u8 G5 ?1 E, L
    2.目前数据以天为单位发布,因此不考虑连续变化情况,只考虑离散的方程。
    4 t. i! ]/ V  |3 Y5 H) V3.新型冠状病毒的治愈人数和死亡人数相对较 小,因此只考虑 Susceptible(易感)和 Infected(感染) 两类人群。设易感人群总数为N+ C* m5 ?8 F/ y, D! p& d# ^2 E
    4.经专家鉴定新冠病毒患者治愈后至少六个月之内不会再被感染,所以设治愈后移出易感人群。; U9 S: j5 [! h) q( C: M' ~8 V
    5.设每个病人每天有效接触人数为 λ \lambdaλ(日接触率),且使接触的健康人致病.
    ( @/ z/ y9 x: a- Z6.设病人每天治愈的比例为 μ \muμ(日治愈率)
    + o1 V' u  W$ \) g7.时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t).' a0 a: Q3 f4 }) b- U

    ) h7 c9 V2 m7 C2 K. I
    " A% j2 h5 }% t( p
    模型一
    , Q% D9 n5 y8 ~% U# p% j, u& O$ [7 |! |9 r
    . K# k, ~! v& a
    分析可以得到移出者r(t)=治愈人数+死亡人数. k  t! Y9 M- A( g
    通过python数据处理,我们算出了r(t)的值,并将其可视化
    + E$ [$ n, \9 Z. V1 o$ L
    $ k+ M. |; V9 a- s. `' _. I/ _
    ( U) U7 k* t4 Z0 I# }  w' t/ d5 n

    6 U; o) V9 h& l! b/ y

    " X8 a7 H% c0 U% y7 }+ v5 T/ l我用MATLAB对其进行了拟合,拟合图像为
    - ?$ C3 {. f1 a2 ?
    / E% [" B9 B% B+ T

    # E& t  T0 w, h5 X
    3 ~- M2 W9 u8 g/ D1 g1 h

      _' ?% Q' S  w3 l' @) z! d$ Y% B8 {! J' u7 K, \

    % ^1 a, \: D* r3 s$ O& Y分析可以得到患者 i(t)=患病总数-移出者
    7 I) z% p' S" w( }# V1 o可以通过csv文件的currentConfirmedCount 直接获得i(t)数据,当然也可以通过 i(t)=confirmedCountv - r(t)获得,对此我也做了可视化展示0 P- c* u& F$ m
    6 I) D$ e4 b/ t5 v% ?

    $ w. K$ L3 p6 @9 v* k通过MATLAB程序对其进行拟合,可以得到r(t)的函数图像大致为
    ' }5 E; s5 ~  y3 N1 i: _4 T$ q# ]% V* Z1 {* Z  T
    1 M  D/ e* p+ j( C  C
    * t4 _7 C5 {, n: \& g# c4 h/ O

    ' @4 j( W8 @' m: _3 Y8 V' \8 l; o! y2 B+ w+ ]1 M5 h
    ; ~0 M! w. G2 e3 l6 I6 }( a
    为了方便,利于公式推导,我们先设时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t). 所以有) Y- H* ]) X/ k# y7 {9 [: P
    ! ~0 o+ `. g/ R% y

    ( ?' E4 S3 I8 \2 s可以推导出每日新增病例的表达式
      c9 Y4 P; @* P: n. m% s3 I9 X6 u+ N6 V8 q- n5 `
    8 P  q" N& r" z
    ) p0 l! Q$ Q' h! H  L9 g
    1 `* O9 d% N2 i1 D

    4 R$ W5 y, Q7 Z8 B- p3 k

    5 |4 B, o. n3 a6 ?& y3 A由以上两个公式可以推导出以下两个微分方程% A/ A, m7 w+ F0 P
    ) _2 P* {' d( J# p+ `
    8 `, |9 E; T  w  }+ M+ {

    - {% |3 a. _9 G1 Z
    + _" T# ^& _! e( P& k8 L& P! X
    可以知道初值
    # p% o/ L- \8 T* Ci ( 0 ) = i 0 . s ( 0 ) = s 0 i(0)=i_0.s(0)=s_0i(0)=i 9 o5 [( ~  q) K
    0
    $ |$ @. R. j/ M6 p, t3 R​        6 L& V+ u- _9 v4 I
    .s(0)=s 4 d) g4 e" Q# z% D: n' d
    0: m# E1 ^- k' _, J2 J/ _
    ​        8 r4 Z* J7 L/ z& B" [( {

    1 d7 o5 j' y* m: z& T% h" E0 W因为一开始治愈的和死亡的肯定很少,所以r0可以看为0,于是就有:
      f6 F8 Y# e, L# j$ M5 si 0 + s 0 = 1 i_0+s_0=1i $ N3 z- j; S, e  i+ ?7 E
    0
    * Q1 G7 k0 h( i& @, i- \​        4 a- ~& G+ P7 Z
    +s 6 x- e& b" B( F
    0
    # G0 x! S9 k- [  l2 _1 f# g! E​       
    " }5 W# x' O* j; P6 c =1
    0 [1 Y& B' v2 E$ h( E( G: U% |通过解以上微分方程我们可以根据经验假设λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)的值分别为1和0.5(也就是每个患者可能使1个正常人患病,患者可能有0.5的概率被治愈);由于一开始患者肯定比正常人少很多,所以我们设i0=0.01,s0=0.99。对其求解可以得到s(t), i(t), r(t),的变化图像. B5 K8 @2 a7 G" a1 g) }
    8 @; ?3 f( B2 i- o3 x5 v2 v

    * f6 R7 N/ y. f7 D7 P8 I: w  P% q, b' X7 d2 c7 G; u/ I

    9 b' F( A4 z9 w/ s4 o  LMATLAB程序如下
    + h& u6 N. N+ |+ m7 xts=0:40;
      k+ Z: a9 Q/ _! r6 Ux0=[0.01, 0.99];# _, u: X+ }! F* D% g, I
    [t,x]=ode45(‘ill’,ts,x0);
    2 v8 I2 h6 T0 [r=1-x(:,1)-x(:,2);& \) q, R; S5 [. G# d; R6 }& V
    plot(t,x(:,1),t,x(:,2),ts,r,ts,x(:,1)/x(:,2))/ q, a, K1 \# ?9 Q9 w
    legend(‘i(t)’,‘s(t)’,‘r(t)’)3 g* {8 }, ~3 y  `, {$ f
    3 W" J3 L% u: j) f5 d1 G
    7 C+ i4 }  z' o. N' N5 v9 J
    function y=ill( t,x)
    ! g% I: X5 g- L$ e* ]a=1;
    5 W+ I5 m  R* {* i  xb=0.5;, {9 e% b( ?' B8 t; O2 n6 s
    y=[ax(1)x(2)-bx(1);-ax(1)*x(2)];
    , P# ~4 O6 c  Y4 }4 L4 {" ~$ X8 g% c# E

    ' f8 r5 k2 d- p3 U结果分析:患病人数肯定有个高潮,但之后高潮就会减弱,并逐步降低为0。随着医疗卫生条件的不断提升,患者的 λ \lambdaλ(日接触率)肯定降低,μ \muμ (日治愈率)肯定上升,所以我们可以把λ \lambdaλ调一点为0.8,μ \muμ调高一点为0.6,可以得到以下趋势图。所以应对传染病很关键的一点是我们要提高医疗卫生条件
    ' P7 A, F( P" G2 F
    5 V( a3 Q2 P9 O9 `" q
    6 m9 \# n6 A+ l/ ]$ z2 n/ T% j
    8 J3 a& p+ Q# p% l0 [' u. z
    模型二
    " E; p( c% K9 V1 J# `) t+ e) h4 C+ w- l2 A8 P
    5 A5 e9 {2 j) d7 b9 c! K
    实际上,λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)都是随着时间变化的,这里我们设s(t), i(t), r(t) 为第t天健康人、病人、移除者(病愈与死亡之和)的数量, s(t)+ i(t)+r(t)=N..
    1 c- F# ]2 p6 n  @+ ?(t), (t) ~第t天感染率, 移除率(治愈率与死亡率之和)
    ' ~" l; u( G: j% L; l  N3 l有 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)
    6 K% L( Z; y' a8 z6 u# O9 q3 g因为s远大于i, r,s(t)视为常数,所以有* v* X2 k0 ]' W* f! U* ]: q& ]+ K, i

    & m$ C8 s$ C6 t* t# Z8 I  z9 z: |
    " d! K( X4 g9 \- V' X, I5 p) G# ^' p

    # [2 X& [4 Y3 b# A, R4 D

    6 `. x7 E. \, w, K% p- N9 _# }, v取差分近似导数4 x0 o: t' h2 V+ j

    3 q5 _; b9 B: e  h
    2 K: P) y# `  Y0 k
    ' Z1 k) p" J% A( {1 g

    : R3 l+ D" O3 A" p- @7 `2 P我们可以先用真实数据对(t)进行展示并进行拟合
      X$ B+ C+ D) B! K) B' W  y
    8 w/ _  c* B- K, U5 i8 C
    ) J( {& r* _- U1 U* I% l

    5 X  e8 m; H6 u8 b$ F3 ?: G

    - E- |6 |6 v6 P! W- s当然同样的方法对(t)进行拟合! r) p+ @4 |) Q" p! y8 x

    ) ^  Q1 p. G! r$ O

    ! I  z7 _# _9 m( ]1 v' g做不出来了,好难,光这些东西就弄了四天,到了数学建模国赛得多难多累啊,哎,让我这个小白手足无措。毕竟还没有正规的培训,这个模型等期末考完试一定好好做做!!!- t/ q8 L$ o" C$ ~7 O- ^
    冲国奖0 J; ~" H6 ]4 t/ w/ G" S2 \3 t
    冲国奖
    6 c, s/ \: l! o" D: G! @冲国奖
    5 @; S! O9 J2 `; u; T7 Y————————————————
    . `7 W: U$ {- q# l8 L' ^版权声明:本文为CSDN博主「小白不白嘿嘿嘿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。% B* i: j& w: i% T
    原文链接:https://blog.csdn.net/weixin_45755332/article/details/107094630
    9 ^5 w( n, ~% r+ Y, }1 p+ x6 W. U( L4 \& j

    8 i3 U4 ~: G) |8 H- g, t
    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-6-15 08:42 , Processed in 0.584343 second(s), 51 queries .

    回顶部