QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4979|回复: 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 F1 N! g3 }  t$ Q数学建模之传染病SIR模型(新冠真实数据)) ]9 n, d9 k, v
    传染病模型的基本问题" ~: l2 s, d+ H1 e( {+ Z6 W% r0 X3 ]
    描述传染病的传播过程
    # D5 f2 g: w4 Y% Y( U分析受感染人数的变化规律
    - `2 `1 V1 r3 q2 I1 x2 C0 o预报传染病高潮到来的时刻
    ) ?0 x* p/ B. I  r3 H! D预防传染病蔓延的手段
    6 E$ e- `" V8 l8 q4 B按照传播过程的一般规律用机理分析方法建立模型9 A; b+ ?. U* A* \/ e1 p  A" N
    注:我们这里是介绍数学医学领域中基本的传染病模型。不从医学角度分析各种传染病的特殊机理,按照传播过程的规律建立微分方程模型.2 K/ o) o" ^8 J0 |2 d

    4 D% r; H) B$ q
    ; z- E1 f3 s. U0 R& N
    建立模型9 w! D; l  T* Y5 v4 m6 U
    模型一; @4 s+ F" V) D* Z
    假设:
    ) _' @  y0 ^1 n- Q6 W# y
    . B+ p: [* J# P; X' i6 c6 m3 ^
    6 f4 J9 K, s* O8 y1 I) G5 I1 w
    设已知感染人数为i ( t ) i(t)i(t)(病人数量随时间变化)/ V4 i8 V, D$ `! n4 S% ~* w
    设每个病人(单位时间)每天有效接触(足以使人治病)人数为λ \lambdaλ6 V' t0 `/ d3 p: p! M
    模型:
    * W$ W" i4 w' i4 Z. v) Z单位时间Δ t \Delta{t}Δt内,新 增 的 人 数 ( 现 有 − 原 有 ) = 原 有 的 × λ 新增的人数(现有-原有)=原有的 \times \lambda新增的人数(现有−原有)=原有的×λ,即1 b, j' [- n+ K+ c

    : q" b( v0 Y5 v0 w

    8 q3 n" j# p% k! d+ ni ( 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
    + ?" [& I" n$ Z8 [! ^" X) @' A一开始的感染人数为i 0 i_0i & u" F2 F; L, F: Q) i
    0
    ' c! d5 L' u# O3 {3 O​        , G/ V6 f* c6 T& g& b

    1 E0 W1 Z4 I9 P/ Ti ( 0 ) = i 0 i(0)=i_0i(0)=i 7 t3 s  I5 A$ R
    0/ U( l  G1 H, Z$ ^, u  K
    ​       
    3 F5 _+ \" b8 a) N! U+ u
    7 F* h) t0 f7 i! V+ G$ Z解微分方程可以得到
    ' M3 r" b3 u+ A4 @$ K/ Ci ( t ) = i 0 e λ t i(t)=i_0e^{\lambda t}i(t)=i
    ( |( I/ G9 d: U5 Q0) o" [! {' l4 Z% g/ `2 L  N! r$ x! Z
    ​        % T( x4 S( f$ I  U
    e 3 G6 N% s( d5 d6 c1 s( T; X, k, J
    λt  S2 t+ ^( ?/ e& H/ l8 |
    9 r+ t( W* G$ o7 w% E) U# B
    所以可以可到当λ → ∞ \lambda \rightarrow \infinλ→∞时i ( t ) → ∞ i(t) \rightarrow \infini(t)→∞; c6 `; `- _1 o' W+ }' l4 q) q( L
    当然这是不可能的,因为我们考虑的因素太少了,首先一个是,若有效接触的是病人,则不能使病人数增加,所以必须区分已感染者(病人)和未感染者(健康人)看模型二来解决这个问题# r4 X& u( q7 l& ]; [

    + H$ i9 M4 \7 p/ h* Q
    $ `& y) ~5 L: m
    模型二
    0 z4 l- T3 L7 ~* S0 O6 m假设:
    % |- K2 `6 H. v/ C) T
    ! i- ~5 i' t. x# T: ?
    $ u; e- M& D' t; G+ f6 n7 ^3 m  |
    将人群分为两类:易感染者(Susceptible,健康人)和已感染者(Infective, 病人).
    # i" i2 y5 n, y6 @5 b总人数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) l* q, I1 ^4 o- l* }9 ?
    每个病人每天有效接触人数为λ \lambdaλ(日接触率),且使接触的健康人致病.
    1 E+ n" X: {8 Y# F3 c建模:
    . e3 g# i: d* b! `1 M每天新增的总人数为原有的人数乘以每个人可以传染的健康的人数,再乘Δ t \Delta tΔt
    % h0 e* e. D! R; j6 W( `
    ( m6 \. S% Z* ]2 H

    ' `! Q, f8 H' J$ i% ^1 `. ]0 Y6 PΔ t \Delta tΔt除过去,两遍N约分得到下面,/ z- [$ E' e! F9 F* P
    1 r( w3 w: s4 Q1 ~* e2 s% ]5 g0 `0 O7 O
    6 I' i; z  x1 R
    MATLAB解一下这个微分方程; ^; _2 u/ x- |8 Z1 C( m

    1 ~/ k/ A1 b, u7 l9 Z0 E) {  C
    7 q5 \$ c# n( l" J0 P. N
    y=dsolve('Dy=n*y*(1-y)','t');
    0 G" o4 x% v: Q
    8 P2 ?6 \6 f1 K4 v8 m* Z3 r2 ]

    ' L: {( V6 c. X% R% ky =6 X' z* v, g- z* l% a: h8 r
    -1/(exp(C1 - n*t) - 1)
    5 ?; S; t+ t9 B- r8 w7 Z                      0- f+ S! w4 I4 h& n! S' \( W) n
                          1  v* P& f! J5 Z2 ^3 Z# F. _4 Y
    1
    ( T( s# W$ b1 Y9 p$ I" N2
    . o0 k3 y( f% S* }+ n3 ?8 \* Q/ z& p3
    : f  o6 h& y3 \4/ C+ X, {: ?0 L2 a- L
    5& L8 W, s% j+ L5 Z6 I1 x2 c
    6" V% B: @: N$ y$ Q
    写规范点就是这个函数
    7 i) q& c0 q) M7 J+ `7 _. C+ V6 m
    ( N& {) A- ], ~$ _* z/ T
    $ n- X; e5 z/ a8 ?3 J
    函数图像大致为, O/ l- T7 x, M: ?" z
    * N2 q1 x6 f9 ^* k6 a% n
    # p0 H& f! w7 L! d9 M
    可以看出t = t m t=t_mt=t . ~" H9 L- s+ t# i
    m
    ' s8 f$ r$ e% [. D9 F​       
    # y3 o2 G; h, c8 ^# G 时这里图像的斜率有个最大值,其也就是传染的最快的时候,即传染病的高潮时刻,当然t m t_mt
    + O4 v" k1 S' y# B% W% `! lm
    9 n' B  B: \% l  d4 @​        9 n3 ?0 h& |* j/ L
    是可以求出来的
    ) P5 H; F# s: J, x7 D, t- L2 a/ A+ u% S# }

    / L3 @0 l, [% M, x+ l' K再看原式,当t → ∞ t\rightarrow \infint→∞时i → 1 i\rightarrow 1i→14 a4 N- T" Z. w! B4 C
    病人的比例为1,当然这也是不可能的,因为我们还没有考虑有没有可能治愈,看模型三; ~  o: K5 D# N) h
    + {6 X9 W# H- `; Q8 ?. d

    : J" w* K! x; M模型三
    & e( N* Q+ u& ]4 v3 [- z  w; W3 y$ w假设:2 L7 v% s1 h2 F/ j1 Q
    ; c  B# l. s: D! k
    ( P$ x1 s5 ^  r, Z; K
    传染病无免疫性如伤风、痢疾等——病人治愈成为健康人,健康人可再次被感染。3 L# P) Q! H3 w/ q" n" ?! [6 ^
    病人每天治愈的比例为μ \muμ (日治愈率),1 μ \frac{1}{\mu} 5 q2 h4 c( T: {8 R& B0 t8 {
    μ1 ?0 V3 K* T6 P9 |5 t
    1
    1 C5 L, y3 C7 X5 p0 V  q4 M: ?​        - s" g% O7 ~# K% x9 Y
    为感染期,
    # }1 ~" d$ r9 _模型
    1 A3 g7 V# F" D. i: R8 s& K4 _这是减去了治愈人数之后的新增人数
    " P# P7 w: H$ Y& u" z3 Z& k9 x- Y7 G
    , j- r. e' b" h4 \+ E  Q6 t( l" _

    & }  _$ d9 t, R" x. E% s2 j3 b: Y2 }2 G5 v( r

    ' j# D% ?! Z$ D1 B* Fσ \sigmaσ 为一个感染期内每个病人的有效接触人数,称为接触数
      S- }3 C3 T8 m7 N7 N+ w! Q( j
    % j# N- S) r( S& y7 v

    8 p7 }6 Y. h6 L: R1 O3 O  ~+ \可以画出上面的图形分析下
    + J) L3 w0 ~6 C& _8 n8 g1 O+ {, V+ P
    $ X" J4 D8 j% Z- w$ j, h
    / y! a/ X1 v. Y
    对上面的公式进行分析,可以得到,当i = 1 − 1 σ i=1-\frac{1}{\sigma}i=1− ( x, c. w) _5 P* A) B4 |
    σ# }9 p  I2 S5 G% v* C
    1; Y6 L( i; J" N/ X3 B
    ​       
      k3 o; v% Z+ ^/ S- P+ T 时,i ii对t的导数为0这也就到了i ii的最大值;当0 < i < 1 − 1 σ 0<i<1-\frac{1}{\sigma}0<i<1−
    ' t: _) D. o* M2 a9 G$ @σ
    ' h  y" `& b. `3 Z; L- c/ B1
    3 f6 B2 G8 T5 H! l9 ], L* b6 _% Q; Y​       
    7 O" p6 L$ U" 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− , x- p) t: V& T+ E' Q2 ?: f
    σ
      C% N4 o6 c, P4 L/ t" ~1
    + ?8 Z1 Z' R8 T4 `+ B9 B3 X% z​        1 `, [9 e" }9 y
    ,d i / d t < 0 di/dt<0di/dt<0,i是单调递减的。3 F  m1 U7 Q6 @- P

    8 g$ R% F, G( e( x" w9 {
    0 @; y' K- e/ s  r
    当然我们也可以画出i ii随t的函数图像
    3 i* D7 |9 Z! V- {8 s  S  J% b
    6 Q7 j( Q8 B( q+ V6 H
    # e4 C# e% {4 |% M9 ^
    先看红线,若初始条件i 0 > 1 − 1 σ i_0>1-\frac{1}{\sigma}i
    2 D- R, y: |9 T; [9 o' P07 F# q" @5 z7 J6 d, Z/ [
    ​        , z* r" g0 @  ?2 }( F, b. A# k
    >1−
    2 t) B. a9 v! M. [/ sσ
    9 N. G) H# z- r$ o4 D9 H1/ t# {" ?/ i0 u9 f/ I
    ​        & m* q5 `$ q0 f1 T. g& ~% i) x4 W3 x
    d i / d t < 0 di/dt<0di/dt<0,i就是单调递减的,- x1 X7 \# G( O
    若若初始条件i 0 < 1 − 1 σ i_0<1-\frac{1}{\sigma}i
    " f  L% m9 x& ]' ~5 I( \" H0
    * y' m# L& ?. @( _; i8 J3 ^3 Y​        1 ?% q1 }; J1 X/ G9 q0 k
    <1− 3 C" ~0 S- W- r+ b, i& G# Q7 w
    σ
    . o5 E0 Z: f6 Z& \8 H1
    ; k: C2 z4 M2 S( q4 f8 w4 _) Y6 h​       
    ' j9 {; y9 W$ V# {  i) M ,i就是递增的,可以看到i对t的导数图像有一个最大值,下面的黑线就有一个增加速率最快的一个值,按S形曲线增长
    + J) q3 h  D* l! K% E. G1 j6 W! {$ e8 P- U( u

    # p( `, t- P$ J6 ]σ = < 1 \sigma =<1σ=<1时d i / d t < 0 di/dt<0di/dt<0 i肯定是单调下降的,最终降到0% I' ~* w) w1 Y: c! A# h/ B! {
    ) b1 N1 t. u+ U- Q$ r/ }+ N5 i
    ! Q& \$ K& ^+ f+ C. ~: u9 T8 @- O

    ' t5 U2 X& n: Q# c3 j/ ~8 i
    & @; }( [' B! o5 }/ F
    综上:
    $ R4 U4 f; u, L; L# Q想让患病者越来越少,σ \sigmaσ必须小于等于1,即感染期内有效接触使健康者感染的人数不超过原有的病人数.9 z2 e) w: N$ m  R7 g# X
    # k. y2 ^2 b( J+ R% }$ V

    ! M" F2 T  s3 |, }* {9 _  o! t+ P/ X) _这里我们分析的是感染之后还能感染的情况,但有些病毒感染之后会在体内生成抗体,就不会再被感染了,下面我们分析这种情况。# E  ^/ s0 G2 C$ _4 T

    : `3 Z9 @* v1 H6 E
    9 p6 U$ a) X8 N$ g8 J! s
    模型四 SIR模型
    9 O0 G2 Q  y) Q7 nSIR模型是常见的一种描述传染病传播的数学模型,其基本假设是将人群分为以下三类:
    2 A7 v8 G; Y$ J+ l+ O8 ?+ J+ q( ]
    0 J! q  Y4 T6 P. z! k( e3 {2 D
    1 易感人群(Susceptible):指未得病者,但缺乏免疫能力,与感病者接触后容易受到感染。
    ; H( l- N) O  B# o$ L# X: U
    ; i: M0 z% y! `! ~* V+ y
    % A5 W% h( W/ |1 n' c, D! J: N( V
    2 感染人群(Infective):指染上传染病的人,他可以传播给易感人群。
    # @( ^) ^4 s& t% @: J
    / n+ N7 A( S  G+ I! l0 J- r8 K
    , {5 E/ M/ V6 G( Z" f$ S, ]+ U9 w
    3 移除人群(Removed):被移出系统的人。因病愈(具有免疫力)或死亡的人。这部分人不再参与感染和被感染过程。
    1 y4 \6 _0 l  a; y' Q
    2 E4 P9 v: S$ K  w6 H8 |

    5 Q- u) R& J& \! X) F& J4 T假设:/ N8 m' \- ^8 K- F, m* q, L% k

    ! w- H6 Y/ n: r: ~  {9 y9 z
    ! q& [' l/ a+ Z/ b) \" _
    传染病有免疫性如天花、麻疹等——病人治愈后移出感染系统,称移出者(Removed).
    * ?; }7 l/ t2 p  D; O总人数N不变,健康人、病人和移出者的比例分别为s ( t ) , i ( t ) , r ( t ) s(t), i(t), r(t)s(t),i(t),r(t).. |$ `6 r& m! U& ]# i2 e
    病人的日接触率为λ \lambdaλ , 日治愈率为μ \muμ, 接触数 σ = λ μ \sigma=\frac{\lambda}{\mu}σ=
      n1 B% Y# b* W7 {: Z* h( {μ7 b2 _; f6 s; l+ B/ G: P9 C
    λ
    $ }6 v0 Z7 E0 b- F' Z* Q​       
    8 g4 {$ G6 z* G  W. a" K, u1 [; h4 |; }: |
    6 K, o! A; V. ?9 S建模:6 T& X& k7 `$ n% y
    s ( t ) + i ( t ) + r ( t ) = 1 s(t)+ i(t)+ r(t)=1s(t)+i(t)+r(t)=1
    ) m. u9 ^8 t+ H, M, m这个就是病人减去治愈的人,和上一个模型是一样的
    , C- M6 z' X1 B- u
    9 B4 i! ^" A1 {. M( _

    + `% B$ l5 O. a0 ~6 d. I因为有治愈后是有免疫性的,所以可能被感染的总人数要减少,减去移除者就是
    2 O( x0 s0 e5 A; o, R" _) d
    ! h) Z/ e# h6 L1 d; x0 m
    ; v/ K& M4 |' C; y6 _$ m8 j
    将上式化简为:- r% O3 V! F3 Z" O6 n1 Z. ^
    - o/ |0 T5 e3 Y5 z8 W$ Y$ O

    ; K/ C- R3 \( B  `5 gi 0 + s 0 ≈ 1 i_0+s_0\approx 1i
    2 M5 I3 `- k8 j! n7 ?/ u0! c4 q. u: C. Z: g6 G7 i( x
    ​       
    6 M) R. M4 ?- T* u' W( f% Q +s 3 G% l6 z1 _$ {# T! c
    0
    0 k; i( o/ n& C, t3 k​       
      T. Z+ h3 \  B' z  f; Y7 f ≈1(通常r ( 0 ) = r 0 r(0)=r_0r(0)=r
    $ `8 J! Q- F: I4 @. J0 J/ c! `0" \* V$ E- I, V7 K
    ​        1 o, T7 L$ m5 ~; E! ]1 b) K
    很小)$ [+ r, s- [7 H% E
    3 A6 A% {; e1 t7 X9 v/ x8 f* W; Y9 Z

    % j/ l; x9 ^$ a* g* b4 X关于i(t) , s(t) 的非线性微分方程组,没有解析解,只能通过数值计算得到s(t), i(t), r(t)的曲线,下面来看下曲线的数值解的MATLAB程序$ e1 G0 N0 T+ W& |8 r
    2 V& l9 b4 T9 Q
    0 R6 Q2 p, l. N
    这里我们先设λ = 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
    , r  R# s2 \; }  V6 C( T7 \9 P/ b01 [2 N/ g8 F: w& v8 A% J. t
    ​       
    8 \3 l* B+ ~, j6 k =0.01,s
    3 I! C/ Y2 T$ h4 ^  U8 N02 N0 _% |* z. p/ E1 V9 V
    ​       
    $ a$ A0 _$ \9 u& n/ j7 L3 U* S+ s =0.99
    1 {- B  ]/ @. \! T) I9 E也就是平均一个病人人传染一个正常人,治愈率为0.5;开始的病人比例为0.01,正常人为0.99,设没有天生带有病毒抗体的人,所以r 0 = 0 r_0=0r 4 g5 P' q0 p  T8 V% _+ q) P
    0
    8 D2 ?) |; O( {' N# p4 A( p, c4 n( d​        , w3 `+ G- A. G, P( t
    =0,之后若果病人被治愈,则具有抗体了,有抗体的人为:r = 1 − i − s r=1-i-sr=1−i−s
    - T! \1 q3 p; Q) Y5 @% M9 M
    2 P+ b% r4 G! @5 o2 }. n
    ' h( b8 c" y: e2 J- I" k$ R
    ts=0:40;  J9 X& B% N: \  _3 v, X' ~% {
    x0=[0.01, 0.99];) q7 E, L2 t4 A, K
    [t,x]=ode45('ill',ts,x0);/ @6 M% \% b( [2 \$ f
    r=1-x(:,1)-x(:,2);# |( r8 {/ E1 t$ j* r
    plot(t,x(:,1),t,x(:,2),ts,r),grid
    0 b7 x4 K. R& e7 f/ alegend('i(t)','s(t)','r(t)')' {* i7 B. \) z7 o6 N9 u
    ) B  s6 p$ g. l: q, a1 b- d  O; f

      S3 ]+ l' u* Cfunction y=ill( t,x)
    8 o4 ?* N: J6 l; ?! O8 P, fa=1;$ [$ b6 D! k& Q" Z
    b=0.5;$ b; M7 L6 @! l
    y=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];- [$ i, K$ ?( r. i$ ^
    1  T( p. e2 a4 O# f  A' d% G. w5 [2 o
    2: s( B& o9 k! `7 Z
    3
    ' T9 X0 \; A8 e$ B' ]9 {8 [. Z4( C2 F# r% P& Y# x3 @* V
    5+ j) U3 Y3 \! t, U  M1 Y! v
    6
    % Y, z+ f! |3 ?7
      u5 S8 ?. E) B8 N+ `8 N# A8
    ' y; Y: f: g% {( e9
    & a. Y# i3 U3 E" v% S% B10
    , o8 D$ L" @" Y+ L6 c- C, o/ U* B11' a$ i* ?+ z: V2 y0 Y" c3 I
    0 s, e2 X0 \' b$ C9 B
      Q% K) B! D+ r% f$ q" q
    可以看出:s(t)单调减,r(t)单调增,都趋于稳定, i(t)先增后减趋于0.
    3 A( a- t4 d) J# o/ w6 O结果分析
    5 M$ e( z4 F1 f/ m1 Q先回顾一下参数$ S+ I0 p9 L! x* ?6 Z0 z- j0 u
    接 触 率 λ ; 治 愈 率 μ ; 1 / μ   平 均 传 染 期 ( 病 人 治 愈 所 需 平 均 时 间 ) ; σ = λ / μ   接 触 数 ( 感 染 期 内 每 个 病 人 有 效 接 触 人 数 ) 接触率 \lambda;治愈率 \mu ; 1/ \mu~平均传染期 (病人治愈所需平均时间);\sigma =\lambda/\mu~接触数 (感染期内每个病人有效接触人数)接触率λ;治愈率μ;1/μ 平均传染期(病人治愈所需平均时间);σ=λ/μ 接触数(感染期内每个病人有效接触人数)
    5 a  [4 y/ w1 Z" R6 T  g0 N可以分析出:2 f5 u( _( }, P! O  @
    . G/ Z9 E1 v2 W5 q4 C# Q

    6 ~2 k% j/ P3 p. c& H0 i$ K! ]( J随着卫生健康思想水平高,接触率λ \lambdaλ变小
    & J2 Z) G  x3 ^+ E$ t! l' h随着医疗水平的提高,治愈率μ \muμ增大; c6 a3 c6 f: p3 a! p( L
    接触数σ = λ / μ \sigma =\lambda/\muσ=λ/μ减小——有助于控制传播.. M  `" X7 m; O' G) P
    我们可以试试稍微减少一下λ \lambdaλ,增大μ \muμ,来看下效果, _1 Y3 y2 s% |( R
    ) P! s+ w4 g8 |$ j; |6 m

    " G( @+ }" f9 o4 w  E9 k0 t! z! Ats=0:40;
    / J! o" |! Z. px0=[0.01, 0.99];
    ; N+ C( t9 t4 _[t,x]=ode45('ill',ts,x0);
    . c8 m5 ^) i$ nr=1-x(:,1)-x(:,2);0 ?* O, K" g5 n' `
    plot(t,x(:,1),t,x(:,2),ts,r),grid5 I. C( c7 `1 h- H
    legend('i(t)','s(t)','r(t)'). z" h# n. t( `0 ]" e/ u

    # i  {" r7 S! C# F

    - F& ?4 J! m( Dfunction y=ill( t,x)
    0 n2 `0 F/ [5 {8 ta=0.8;
    ) k5 m2 ]+ {* d7 d( a  Tb=0.6;  T$ `0 E7 b9 o" g' r- S
    y=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];
    * R3 v6 i( p' z1
    ) F/ [! r$ `( h27 t/ X7 c9 C8 D6 m
    39 f2 B) ^6 q" `- l) x! C( e
    4% c% n" M* `8 v! k- t$ O/ ]$ p
    5
    * w0 \4 v+ ?  F- c0 b& K: E6# [( C+ N% P; a
    7
    - k( b2 n1 B7 n- u, |) _8* H: a  {, T! s8 G; `- o
    9
    " Z* w: R* P+ @0 ]4 k102 N# a/ G. a, O9 T
    118 n& ^! z' Q" a2 i

    1 W9 K, p6 o6 N& p% e" s( t
    ; t. |8 i* q- o. w5 l
    综上我们可以得出结论:想要减少传染病的传播,我们就要在接触数σ \sigmaσ上下功夫。
    / j* v3 q, \! d$ h3 v6 v
    ; J$ U# S4 w/ C  A4 ^" f! n
    6 x; E) |: O/ L/ T! R  B
    实战建模
    . K9 F2 k+ v* w% W数据处理; u& U/ A$ H5 }. P" |2 }3 G

    0 B) ?$ J$ J  d9 [/ s
    $ D  u2 _& a3 D7 I6 T; l
    首先,我用python爬虫爬取了丁香医生官方数据,一共5534条数据 特征包括感染、死亡、治愈的总数,当日感染、死亡、治愈新增,疑似病例,时间,省份等14个特征
    7 M9 T4 f7 c3 U  r
    2 S3 Z" u( u+ W* C% D6 V* U
    & @; p$ L- w0 _: n: Q" F
    3 r( \& }# s/ e3 t/ q# O

    5 S1 ?! Q8 Z$ O; H7 h; T$ P然后用python进行数据提取,提取了较为典型的湖北省的数据作为我的参考依据! E" x8 A( B# a
    1 K1 t4 r# i% X' |! I+ k5 X

    % v3 L, N* [# ~) v. h1 _! q9 ^+ I0 f9 O! [. r4 p  B1 P7 k7 \% K

    0 U& R% @/ }4 t0 N$ Q- m) ~然后用python对数据进行清洗,提取出了患病总数,现存患者总数,死亡总数,治愈总数,时间,省份这几个特征
    5 o( M0 y0 Z& X1 K6 g8 K4 O) C* x
    1 h1 H& ^1 O, a0 c8 V' j

    3 ~0 W) F4 G  v9 m' P! S! q对日期格式进行修改,值保留月和日,并与死亡人数的位置交换
    , C, E1 q/ G& x9 t) }  x2 F5 C9 x4 l' G4 ~6 i
    ( G! s! {7 m: ?/ z/ ]( b* [% t
    这里我用python对提取的四个特征分别进行了数据分析(主要包括计算最值,平均值等,),并把1.20日作为第一天,7.02日作为最后一天也就是第165天,做了可视化可视化处理。
    ! V' {$ D' {" y% }0 R' s感染人数示意图
    & D5 k7 G: N$ F6 y, E1 m1 n; \% b' Z0 q+ D3 B7 O! w

    # [- I6 b1 t7 @% F8 D! G1 h5 R  w, i治愈人数示意图) d4 f# Y; p0 V% ]& G# [

    ) Y; D. d- p" i% B  s
    1 |7 ^, i5 p4 l

    8 T+ d; }& M- R

    9 y" v# l, g& P0 F- i. V$ I& ~现存患者数量图
    7 v8 I; I; g2 c
    1 |: E' `- T# {% p! s" ]
    # I) ^1 J+ u  ^6 Z3 x2 M; B1 N, Q# f
    死亡人数示意图" A' y5 @5 F/ c8 ?5 h$ U
    % W, {$ i4 a( ]& M! A# Y' H
    4 v3 M% ^+ a5 u7 _: [* s2 I
    6 O! @9 i2 i! c1 I. m& c* M7 N. S
    5 ?: P# B. Z/ }! N5 z
    经过上面的图片与describe数据分析,我们发现有一天是异常的,患者多出了平时的十倍左右,经过查阅资料,这天因加强了检测标准,所以增多了很多。为了避免这个数据的影响我们选择将这一天删去(或者用平均数或中位数代替也可): I; E: K4 N& |5 M- \# C
    将上面清理过的数据存放到csv文件中
    # _' l! z; Z+ W% m. F# c& \+ ^1 }' A7 r2 x3 O  x8 `* o
    ! I" H) N/ v" v* X
    模型建立
    * y+ p' ^4 [; @8 W8 A模型假设
    9 |1 r* [' n& l8 i经过上面数据的分析,我们大体可以进行如下假设:
    ! u# S9 o. Q: Z0 g" A8 H9 j* t1.由于不存在封闭情况,考虑开放体系。
    6 u: Z: I# Z/ G3 w" {# k; _2.目前数据以天为单位发布,因此不考虑连续变化情况,只考虑离散的方程。
    4 A8 P9 R; s5 x3.新型冠状病毒的治愈人数和死亡人数相对较 小,因此只考虑 Susceptible(易感)和 Infected(感染) 两类人群。设易感人群总数为N
    3 j7 O' M- \$ h; J' J: ]# j4.经专家鉴定新冠病毒患者治愈后至少六个月之内不会再被感染,所以设治愈后移出易感人群。3 @: r% Y$ a- D$ Y0 G8 z7 K
    5.设每个病人每天有效接触人数为 λ \lambdaλ(日接触率),且使接触的健康人致病.
    : b; l) _" L( k: F0 B6 U6.设病人每天治愈的比例为 μ \muμ(日治愈率)5 m1 s% }, h/ T- C6 M$ T9 f+ b0 @
    7.时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t).
    ( g$ a3 m* K: h. d# P3 v4 x/ T5 l7 W; |8 ~

    9 m' h* U/ o! J1 w$ D8 ]- H  S模型一' o* A1 x- T8 s
    # F; F9 f* `  K& T$ u! S
    ; |6 v  h  ]; s8 W0 v* f
    分析可以得到移出者r(t)=治愈人数+死亡人数
    2 f7 m+ v# R9 @1 N通过python数据处理,我们算出了r(t)的值,并将其可视化7 G. ^8 C$ J. s" P% K1 W5 `! N
    # c3 d6 P* O5 E) E9 Q. [2 @

    2 Y6 c5 H! x6 n1 z) u/ M4 G
    6 D) u1 |0 s* X: O) E* s

    9 C; R- g* L- }9 w; J# `我用MATLAB对其进行了拟合,拟合图像为
    " A3 |' K) @; b0 j3 b* N% Y% l
    % ?  T# Q- v0 K  _3 g/ L

    % d3 G  y# r! O+ M+ y1 C% S. P3 g% L

    * N" R5 a8 z( |8 S
    9 C6 `8 Y4 K" t8 ]) @5 |% s( h
    8 c' g8 J% t# E6 ]
    分析可以得到患者 i(t)=患病总数-移出者4 O/ y# [4 Z) K; f+ x
    可以通过csv文件的currentConfirmedCount 直接获得i(t)数据,当然也可以通过 i(t)=confirmedCountv - r(t)获得,对此我也做了可视化展示. h& T/ J, a' T7 |( k* }* n5 ]

    * s! N, M; W4 l& T/ P6 p

    5 w; |/ c# p/ H. f# w( @: u7 E8 d通过MATLAB程序对其进行拟合,可以得到r(t)的函数图像大致为6 a6 D9 Z* ^6 l0 p# N
    + H$ g, N4 s7 L5 J$ O. ~5 {' Y
    1 w2 S  F* A0 g3 U( d8 s3 \

    8 k! Q$ S: c" o/ u, T/ M7 ~

    6 t% x, }, i- u' @2 H; X) t' E' ^. }. ?
    8 @( t" {: h$ d# Q6 o2 K9 g7 j

    & ?& L$ O2 F; d' p+ j5 a为了方便,利于公式推导,我们先设时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t). 所以有" E" [0 J. D7 [7 K1 d
    7 A" X  x+ `0 T  I4 m9 v8 r

    8 x1 E) ^( C* w# M+ i) T可以推导出每日新增病例的表达式2 U* Z, K' n0 ~; w. ^! @/ x
    2 a  S9 W/ S2 k' a$ O3 o  A

    0 u3 _, S9 y/ N' Q- B
    . z$ k: p  w* Y/ Z

    / F! n( U& E' i6 U4 [( A1 c9 {) S% L) H+ ~# ]
    2 Z& B& Z/ a, W0 o* _
    由以上两个公式可以推导出以下两个微分方程/ D. U( R, r. d5 ?# m; j

    - I  Z1 s1 k8 n4 w3 [, o
    . I  Y( n$ N' `* c; T5 ^9 j2 T: K
    ( n4 w, j+ [5 C* x
    # v* C6 c1 M# {$ I# a% c
    可以知道初值8 `) Q/ O6 U' I
    i ( 0 ) = i 0 . s ( 0 ) = s 0 i(0)=i_0.s(0)=s_0i(0)=i
      V4 v5 q6 U% i! p) m! U) ]01 ~6 n; Q* D/ Q9 A: A/ H( L! j
    ​        7 Q  x9 q+ g) Y6 K, V( b/ ]
    .s(0)=s 1 d/ @" p3 M& \* t4 U
    0# _; u. a+ m% v  Z5 @2 j
    ​        & n7 I7 n, [4 }# w$ s3 O
    : G0 V$ c1 a" ~" O2 X4 S% n
    因为一开始治愈的和死亡的肯定很少,所以r0可以看为0,于是就有:' H& M8 f3 {  F# t
    i 0 + s 0 = 1 i_0+s_0=1i 1 U8 K9 o* d5 b6 C+ N
    06 j- W" Y. [$ }# h8 ]% F
    ​       
    8 |9 E! g; n/ \0 k4 ~+ p +s 0 A, }3 M" R+ @6 I
    0
    " H. ]' q& ]3 Q9 F5 `! c+ q​        . m' |' Q! h- k; c4 r, E9 Z
    =1% ^  c  m/ }, A$ V" k- ?( e2 s/ L
    通过解以上微分方程我们可以根据经验假设λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)的值分别为1和0.5(也就是每个患者可能使1个正常人患病,患者可能有0.5的概率被治愈);由于一开始患者肯定比正常人少很多,所以我们设i0=0.01,s0=0.99。对其求解可以得到s(t), i(t), r(t),的变化图像& s' f5 J+ ]2 {  U. q: y

    # g0 ]4 G* m2 q/ v/ ]5 o
    2 g3 p# x. j# ?/ X% H, D2 y5 ?
    ! Q8 z2 X+ i* i8 y- Q2 E! r' b

    $ u* z: ]& V' I) @MATLAB程序如下) V+ M! w6 |! T
    ts=0:40;
    - ~: q: q3 ~7 `x0=[0.01, 0.99];
    6 {3 H8 T3 n" v[t,x]=ode45(‘ill’,ts,x0);
    9 |7 k; V) y8 p8 tr=1-x(:,1)-x(:,2);
    - {1 N" R7 ^1 g( \: f5 g8 }plot(t,x(:,1),t,x(:,2),ts,r,ts,x(:,1)/x(:,2))
    ! S# R+ W. O6 t9 v4 }6 L' ulegend(‘i(t)’,‘s(t)’,‘r(t)’)
    ; m8 W3 H3 S  {4 ~! w& x9 h% R  h- ]  J- P$ I

    $ A3 h, J' K! @5 z# l/ V' Zfunction y=ill( t,x)
    6 x6 E1 \6 l- w; P' k" g0 J( ca=1;& p/ d$ P0 R8 I7 g
    b=0.5;
    * S; A+ x) @. ]! t$ ?: Gy=[ax(1)x(2)-bx(1);-ax(1)*x(2)];4 `. `. U" m* S7 u) `5 k

    ) p/ a% {0 h- @6 f. t

    8 g3 y8 _2 B  k! f7 @结果分析:患病人数肯定有个高潮,但之后高潮就会减弱,并逐步降低为0。随着医疗卫生条件的不断提升,患者的 λ \lambdaλ(日接触率)肯定降低,μ \muμ (日治愈率)肯定上升,所以我们可以把λ \lambdaλ调一点为0.8,μ \muμ调高一点为0.6,可以得到以下趋势图。所以应对传染病很关键的一点是我们要提高医疗卫生条件" }& P" w' {3 J, z; q) T- }: m

    5 C. g% h' Y; G. ^! B7 e7 m& A  j6 n

    * I6 Y; d/ k: k% U! e
    : {: m; E8 c( H- s, U9 d1 ]模型二
    " V- f: d; c& E6 X0 B
    5 E2 \& G2 ?" T  k7 W

    , `; q- B. u! {, X/ }. b实际上,λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)都是随着时间变化的,这里我们设s(t), i(t), r(t) 为第t天健康人、病人、移除者(病愈与死亡之和)的数量, s(t)+ i(t)+r(t)=N.., ~. `2 N3 h' z; B+ O
    (t), (t) ~第t天感染率, 移除率(治愈率与死亡率之和)
    5 I7 a% Q, V6 N# E5 q有 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)5 \9 s) ~) C; c) P) ~- e/ H
    因为s远大于i, r,s(t)视为常数,所以有! B* u6 g% b1 E7 X9 i
    6 e$ t# a4 ?0 j/ [1 C+ b

    3 J5 j) a7 G" E- t3 [: r7 n/ n' c, K- K$ g
    6 v/ {5 W, }6 w1 ^, t; a, @$ P
    取差分近似导数
    * i; ?% b- N0 e0 I1 O
    + E2 g# P9 g$ d5 R6 N, v
    / U  y: ~% X' y, C2 g" e
    6 @0 B2 Z7 ], b$ d! i, S! O& a' ~

    $ H! p; ]9 D8 @& o/ v/ S8 k1 ~9 w我们可以先用真实数据对(t)进行展示并进行拟合$ N' f! ~. {3 |
    & o* q1 L2 \6 ~5 i  l

    4 D8 K9 z" H7 i5 m# H
    1 F' G. B% }4 q3 _) Q$ H3 X  a& A& t

    * a: K7 T& g* j. |当然同样的方法对(t)进行拟合: p% K1 o& ~3 y, T" c4 e- j* z. a2 |
    7 {4 ]6 `- g. m+ t5 n; k/ C

    # N" ?5 a# i" I7 Y" c* h  P# w2 n& i做不出来了,好难,光这些东西就弄了四天,到了数学建模国赛得多难多累啊,哎,让我这个小白手足无措。毕竟还没有正规的培训,这个模型等期末考完试一定好好做做!!!
    ; ^* y( C8 ]1 Y. V; M* s# G! ^冲国奖! c9 a. m+ |7 V1 B3 i- b; V/ Q- @
    冲国奖
    " _" m7 H5 E! f冲国奖" R" L& I6 v8 j; p
    ————————————————6 b8 o* S! }* y' V8 W
    版权声明:本文为CSDN博主「小白不白嘿嘿嘿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。3 e- c) e- M3 C" H" ]  B$ U% ]
    原文链接:https://blog.csdn.net/weixin_45755332/article/details/107094630
    : j* N' q$ _! a) D7 Z
    $ D: J# N- C  ?5 s( l
    ( p& T4 p4 R) {
    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-23 19:33 , Processed in 0.853237 second(s), 50 queries .

    回顶部