QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4907|回复: 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
    : j7 {1 h# x, M6 U7 {0 G! a
    数学建模之传染病SIR模型(新冠真实数据)6 C: I% v& {5 H1 f/ P8 f* ~. A6 V
    传染病模型的基本问题
    # U( b, [! |! j) X2 M: n* x& a1 Z描述传染病的传播过程- _  c* j% ]# t2 c. l" [
    分析受感染人数的变化规律- q- @$ c6 [& t3 ?  Q. }5 g
    预报传染病高潮到来的时刻
    4 {' A: _7 ^: L4 i' t* n+ t! }& L预防传染病蔓延的手段
    ) i, h0 w# c: {1 b; u' K, Q) V按照传播过程的一般规律用机理分析方法建立模型$ I2 t. ?& M5 |6 L0 v. R4 ^6 ~0 y
    注:我们这里是介绍数学医学领域中基本的传染病模型。不从医学角度分析各种传染病的特殊机理,按照传播过程的规律建立微分方程模型.- ^" r8 P; r" v* v- f# D

    7 T" Q( x& I" ~$ ^7 Q6 P5 R4 t# [

    8 o4 N7 Y) i) l$ d( z6 m建立模型
    8 b: l- _9 z! x9 ]模型一7 F/ R1 b; A, [
    假设:* \# N2 k( l: e/ J1 Z

    ! W8 j8 |/ c6 [( j% K

    - A+ k. I0 o# @, ~  }: P设已知感染人数为i ( t ) i(t)i(t)(病人数量随时间变化)+ n- q  |5 T9 B  K: e8 [2 c
    设每个病人(单位时间)每天有效接触(足以使人治病)人数为λ \lambdaλ, A6 W" X7 O5 R0 A4 C6 b
    模型:; E3 }2 _8 [: w# J& d- D! W" }
    单位时间Δ t \Delta{t}Δt内,新 增 的 人 数 ( 现 有 − 原 有 ) = 原 有 的 × λ 新增的人数(现有-原有)=原有的 \times \lambda新增的人数(现有−原有)=原有的×λ,即8 p' a2 f* I# l/ P

    ( u+ s& ]  D( _  B( {
    5 l: P' H( o4 t& m
    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; r2 Q% {4 l! m4 \1 p0 ~4 R# S% A
    一开始的感染人数为i 0 i_0i 8 e2 ]: f- t2 V7 Z3 B& x
    0. A& P% T4 t' J9 T: c, O9 s7 ~$ B7 b
    ​        7 O1 `/ x: G, ?$ N! {% _) p4 [

    ( p) E$ M- ]$ W. z: E) z/ {: M8 Ii ( 0 ) = i 0 i(0)=i_0i(0)=i
    4 y# M/ x; R7 B; r' \2 r' p0& Z" e0 O6 n! T$ B) c) R, K
    ​        + n2 Q& Y) U$ v& J+ [
    . ^8 o- C+ m- D% |/ ^  X
    解微分方程可以得到
    ) e7 h- X+ V: W6 e7 Pi ( t ) = i 0 e λ t i(t)=i_0e^{\lambda t}i(t)=i ( l' Y3 ?& s% b! z' `9 c" F
    0) R9 ~7 ?8 }% a& W
    ​       
    # ~% |3 \8 X1 m/ p; {8 `# { e
    * Y- e& U; f: t6 C+ fλt/ ]8 z! U; w6 D( u( q

    ! F* L6 s6 n5 @  s% V$ S9 |3 N所以可以可到当λ → ∞ \lambda \rightarrow \infinλ→∞时i ( t ) → ∞ i(t) \rightarrow \infini(t)→∞2 G7 S7 n3 `+ N) K: I
    当然这是不可能的,因为我们考虑的因素太少了,首先一个是,若有效接触的是病人,则不能使病人数增加,所以必须区分已感染者(病人)和未感染者(健康人)看模型二来解决这个问题
    1 D9 U! k3 K/ i% {; h
    % @; h' h  @7 @( |5 G
    9 w" B! B# x" v  z; W5 @9 j
    模型二9 K" I) y* M3 T) B0 f
    假设:
    2 o2 m% O2 F0 i7 H$ H& r& S, @; \% D# _* _8 T$ n: @
    ' t/ Q) H* j$ w3 E' F* r, V
    将人群分为两类:易感染者(Susceptible,健康人)和已感染者(Infective, 病人).8 }: G3 y) `( q$ C  z+ k9 ^3 Z
    总人数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
    * d' Z5 U- \3 `; R- ^1 l+ r2 d: p每个病人每天有效接触人数为λ \lambdaλ(日接触率),且使接触的健康人致病.
    " W4 F$ y+ Q% ?; e" h; d, R7 M" v建模:
    ; r5 i9 L/ O, g5 n. x7 K% A# o每天新增的总人数为原有的人数乘以每个人可以传染的健康的人数,再乘Δ t \Delta tΔt
    9 [& R& r, t2 F7 I7 q$ s$ r: c6 D" W
    , @$ d' d7 f' T/ Q
    Δ t \Delta tΔt除过去,两遍N约分得到下面,. i, ]( U) [6 z" F* s7 R
    " j# c+ @7 f: s' C& A

    ! g: G1 Y4 i) W$ i  Z/ ?MATLAB解一下这个微分方程
    + [# h: S# ?* {' m- Q% I& ~* k, _# B0 [7 z; C8 ^" W

    9 b% A+ K6 W  ~y=dsolve('Dy=n*y*(1-y)','t');
    3 P6 d6 W# k/ R4 V' X. X/ r4 c8 }0 Q- c9 U
    4 f$ l+ M2 n/ ]
    y =
    7 Q; n* w5 s7 t9 J* Z! [8 C2 d7 ~0 M -1/(exp(C1 - n*t) - 1), ]4 z7 ?5 ~4 e- x/ Z; u3 j& M, {
                          0& l- ^2 ]: `  \( j/ t; k. U& i
                          1  \) L5 n) a8 g0 R4 N
    19 d& [+ t7 e) b, Y
    2
    ! s7 }9 M2 P$ @; T3
    4 L4 j$ p& s: _4
    3 T( W# j" {3 a* r/ s, Z8 o  v4 |57 |7 D2 x- c* ~" j! p0 x
    6
    0 e0 k6 n" b* r写规范点就是这个函数, y0 ]6 _$ Q3 e" E3 m/ t
    5 @9 D( w5 k$ x) h0 V

    * d  j4 u) R5 m6 V函数图像大致为
    2 z( j0 `5 |, Y5 t" B' |/ c2 f, B. _0 o6 G8 ]

    . u. d' C0 @& q9 Z/ F: }, ?可以看出t = t m t=t_mt=t 5 b, b% M" U5 V6 \& q  y
    m
    $ z, M" t: s/ k4 v$ ]5 r6 P5 R) I​       
    % w! ^: s8 r, c! S; E 时这里图像的斜率有个最大值,其也就是传染的最快的时候,即传染病的高潮时刻,当然t m t_mt / ^3 E. S, q- v3 j& S' d
    m
    8 g  O' x) Y9 G​        " S0 q* X9 I) D# h' ?
    是可以求出来的! `  p$ ^. e8 g: M% H% ?- C

    & \, [* s! ]% e, L9 ?$ x

      T* D  j$ E) h再看原式,当t → ∞ t\rightarrow \infint→∞时i → 1 i\rightarrow 1i→13 {7 z" k4 X1 p' w' O; c% [
    病人的比例为1,当然这也是不可能的,因为我们还没有考虑有没有可能治愈,看模型三/ e! o5 x+ k* _
    ' x3 s# W" i! ]" }$ a: O& M7 {' ^

    % N- t1 M" w' b# O4 s, D& }模型三, G1 q; r: V  y$ o
    假设:
    1 Q$ C5 k( ?" \
    5 P$ k9 m5 K  h/ h$ G) q

    ; y9 l9 f- b9 g传染病无免疫性如伤风、痢疾等——病人治愈成为健康人,健康人可再次被感染。
    % `2 P* c5 K+ {, f- \3 J, v4 F: X5 V5 m病人每天治愈的比例为μ \muμ (日治愈率),1 μ \frac{1}{\mu}
    ( m3 P; b, ~# k4 P7 I% pμ
    % f  q+ T) m6 t/ G1
    , @; f$ W0 O1 z2 A​       
    . d3 j0 Z' E! h0 ?# q 为感染期,. Y; a" S6 L" u' Z3 ]2 C& {
    模型
    ) F1 N0 i8 D) s9 B这是减去了治愈人数之后的新增人数
    ( g4 U4 [+ n6 ~" D& ^) X. D2 _+ ^2 S) ?
    0 m1 Q: H* M' j- V

    " g) f8 {* W+ a* Z$ M
    9 s' c0 z, w% x3 P$ ~% q
    σ \sigmaσ 为一个感染期内每个病人的有效接触人数,称为接触数
    : ~  y7 m0 I4 e% Z+ i$ w3 w$ v7 j2 D2 B8 H3 X" V% ~

    9 }1 G" k6 v8 A9 o' Q1 J- s9 n可以画出上面的图形分析下
    ! w4 S' H! m* j% s, k. L% n
    1 {4 h0 S0 p" _2 b8 w. O: ]" t
    0 ^' e' [) Q+ w/ R* z9 m* m
    对上面的公式进行分析,可以得到,当i = 1 − 1 σ i=1-\frac{1}{\sigma}i=1−
    & I* y/ T1 o( W( R& a" bσ; [! k% [( R0 y+ |% O3 {
    1$ `3 J! ^% R' f
    ​       
    8 ^" z! X, D( J, X 时,i ii对t的导数为0这也就到了i ii的最大值;当0 < i < 1 − 1 σ 0<i<1-\frac{1}{\sigma}0<i<1− 1 {) N" Z0 C. C4 [+ e% D/ \
    σ
    + A" ?3 R0 f$ o5 X1' }. b; u4 O. q2 u6 T
    ​       
    " O0 o9 E4 ~$ W6 `* ]+ r* r: ~ 时,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− $ L% [- T. g& O! n/ j* H
    σ$ H4 `( I! F: E% J# D
    1
    9 q$ q6 U; H% _​        : c. k/ \0 Y& ?# y7 g! m+ B
    ,d i / d t < 0 di/dt<0di/dt<0,i是单调递减的。$ g% ?+ q$ x5 ^: k) Z. X3 C/ C

    # U0 S$ Z# S2 ~( B" |8 B
    " n4 U3 \7 t& U0 o  N# m
    当然我们也可以画出i ii随t的函数图像6 l# M# ~# O8 G
    6 Z0 l1 A$ D/ Y* Q
    ; n! x/ I6 [0 D! c' @. N  N
    先看红线,若初始条件i 0 > 1 − 1 σ i_0>1-\frac{1}{\sigma}i # f( h5 ]( h# B9 P
    09 a0 Q( r% b7 ^' R  _) G' I
    ​        , E# B$ E1 @# \
    >1− 6 X* \: F( {) c& n
    σ
    9 l! C7 K$ r0 X1% g" j/ W/ E/ t" U6 ]6 l7 I
    ​        ' i% s1 h1 g# O: B* X7 m
    d i / d t < 0 di/dt<0di/dt<0,i就是单调递减的,; y$ l5 C3 Y4 ]: X
    若若初始条件i 0 < 1 − 1 σ i_0<1-\frac{1}{\sigma}i 1 P* x4 R( j4 m1 y# x5 [0 t
    0
    6 x& B6 h9 x* c$ S1 T, T+ _​       
    # O6 {4 l" T5 W$ v5 {6 @1 Y <1−
    : z+ Y9 S/ Q( g9 Z* O) zσ
    ' r& n" d1 ]! D4 P" v1& l6 ^, Z( u, R0 [2 ]1 q
    ​       
    & H7 m4 S( b6 U ,i就是递增的,可以看到i对t的导数图像有一个最大值,下面的黑线就有一个增加速率最快的一个值,按S形曲线增长
    7 e# Q2 A: J% n" m; G% ]/ Y) M' r4 Z. W, u3 y8 `& E
    6 R/ c- |& S* z& H) I8 r
    σ = < 1 \sigma =<1σ=<1时d i / d t < 0 di/dt<0di/dt<0 i肯定是单调下降的,最终降到0
    & @' L! g1 T; P9 s. O: R+ q  {4 v4 [: L8 T3 i/ j, s
    0 a" h. |7 M( L1 g8 }1 G
    3 O) u0 o' H* h  Q
    ) m: y6 ?$ M- [. d
    综上:  P7 {; T7 W$ ~% ~2 w
    想让患病者越来越少,σ \sigmaσ必须小于等于1,即感染期内有效接触使健康者感染的人数不超过原有的病人数.
    2 J: ~! h5 V, ~% h" j1 a' m/ N- d0 x+ ], k; @: Y% W3 T2 o
    - s4 W, B* E& G! p
    这里我们分析的是感染之后还能感染的情况,但有些病毒感染之后会在体内生成抗体,就不会再被感染了,下面我们分析这种情况。+ y, c9 `2 E& O! a' s; P

    7 Y/ [0 K( I2 s, [* z. P
    2 \- }9 l' U# ^. Q* ~: ~
    模型四 SIR模型; E& X- Y  v: k6 B
    SIR模型是常见的一种描述传染病传播的数学模型,其基本假设是将人群分为以下三类:
    % B9 p6 ?& E: B) L! \" b  ?
    4 m0 t7 s- K+ ~1 e

    ! g- }( Y) U- q9 @; {# A$ ~1 易感人群(Susceptible):指未得病者,但缺乏免疫能力,与感病者接触后容易受到感染。+ L, a- Q  U  ~3 d

      _, C! R- c" C5 A/ ]
    4 c: L; `1 ^* d, D" ?8 k3 ~0 x
    2 感染人群(Infective):指染上传染病的人,他可以传播给易感人群。# H" p( w4 O' u& J
    ; ~+ o3 H; z) {: v9 y
    / ?& J+ x8 G0 U5 G- [/ s
    3 移除人群(Removed):被移出系统的人。因病愈(具有免疫力)或死亡的人。这部分人不再参与感染和被感染过程。
    4 E: W- L( |) C: v- R
    5 e: N5 k/ T, a- d' l+ S
    1 i1 m$ `) Z% M% e0 I7 ^
    假设:& @. a+ Y1 {3 ]. T% a2 ]

    + V, w( g6 x1 Z* e
    3 I# q! r; ^* W6 i. ]
    传染病有免疫性如天花、麻疹等——病人治愈后移出感染系统,称移出者(Removed).- A$ w% F4 d! U* ]9 @% M; c: f6 ]
    总人数N不变,健康人、病人和移出者的比例分别为s ( t ) , i ( t ) , r ( t ) s(t), i(t), r(t)s(t),i(t),r(t).! U2 l; p- j3 r' T2 {8 W
    病人的日接触率为λ \lambdaλ , 日治愈率为μ \muμ, 接触数 σ = λ μ \sigma=\frac{\lambda}{\mu}σ= 8 i7 K8 G, v) m5 V; @- a: u. S* N
    μ$ Y0 m% g7 m3 v" w
    λ/ i% ?& N5 m- r% u# _7 s; {
    ​       
    9 }- |9 \$ d* O2 k0 O' q
    ( T: ?9 U* }8 @建模:
    ! ]4 Y" }2 s8 m4 |8 i6 Rs ( t ) + i ( t ) + r ( t ) = 1 s(t)+ i(t)+ r(t)=1s(t)+i(t)+r(t)=1
    7 u* X/ P3 a6 K* L7 V) \这个就是病人减去治愈的人,和上一个模型是一样的
      }" r4 q' L3 y; V1 t( q1 q+ A4 Q9 s, S9 Z" f& t8 E

    . O6 A2 d% y; m: e( v; j( M因为有治愈后是有免疫性的,所以可能被感染的总人数要减少,减去移除者就是
    7 ^; o8 x0 g5 c6 e. F3 o3 b7 B( L; Y4 a+ R, s* y

    2 U% G' j  |( I! p5 X2 r将上式化简为:
    5 }" O# u. Y! a& Y: j* t2 E1 A7 Q9 g8 F3 Q

    . o6 ]; s3 x: pi 0 + s 0 ≈ 1 i_0+s_0\approx 1i
    - L2 c+ w0 [- K$ @: [0 {0! l3 [/ S$ N3 Q5 X2 {/ V, J
    ​        : o  a/ G" n9 Z
    +s
    6 d  [6 g0 L! m# c# o; U1 g0
    5 Z% z# T" p9 P3 O- j- ~" A% V% \: |, V​       
    ! E* |$ e" P, G6 y& Y( [4 z ≈1(通常r ( 0 ) = r 0 r(0)=r_0r(0)=r ) l3 K0 @+ b! c. B+ b" w% S, E# Z$ m. g
    0
    % o% ^$ \. w+ t) g' z​       
    . w' I- u) a6 O5 c 很小)1 K: T6 c" q* w9 n/ q
    : t6 h6 l. x* p* V: n$ H

    4 W) q# w! l' ?( F. C关于i(t) , s(t) 的非线性微分方程组,没有解析解,只能通过数值计算得到s(t), i(t), r(t)的曲线,下面来看下曲线的数值解的MATLAB程序
    % J8 K7 s* p7 C7 R* E
    ) f6 O' j  h" A* V  [

    / x7 |% L0 u" [# Z" f' u) M7 l) 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
    " n' S' ?+ ]- _9 N7 B0# F7 F4 n1 @3 Q7 x
    ​       
    " X6 x4 @; t& _- [" s5 X =0.01,s & I$ Q( A( p, `* ]
    03 Q6 t: D0 f7 U3 J7 Q$ Q& q" q
    ​       
    ; b. ]* s& |% G+ r: @ =0.995 W0 {4 i: f: T- ~& ^# p
    也就是平均一个病人人传染一个正常人,治愈率为0.5;开始的病人比例为0.01,正常人为0.99,设没有天生带有病毒抗体的人,所以r 0 = 0 r_0=0r
    6 m( d' G6 ?3 J' j8 b9 |06 L0 G- T/ M! t
    ​       
    / {. [, i  o/ M+ n4 }+ a6 c: l; e =0,之后若果病人被治愈,则具有抗体了,有抗体的人为:r = 1 − i − s r=1-i-sr=1−i−s
    $ h5 f7 K/ w& K6 j  d/ O; Z5 ^1 y: G
    / [: D  `2 j6 k$ p: _: I, v2 E9 q( F
    ts=0:40;
    0 i% J6 V" N7 c& f, }2 Kx0=[0.01, 0.99];
    6 F" m' X: S% b' ~  V! v[t,x]=ode45('ill',ts,x0);, n# A- \8 r' J! [& C, [
    r=1-x(:,1)-x(:,2);% A1 H# `* W. c/ w' K
    plot(t,x(:,1),t,x(:,2),ts,r),grid: G2 d5 z8 D% D$ G5 N9 L7 g- _
    legend('i(t)','s(t)','r(t)')
    ( N1 {) ], s: X
    ; v3 W) m+ v: s2 [  Y. X
    ; @. X0 a6 f9 M; F' V
    function y=ill( t,x)
    ! _0 B, u! f# n( t7 Oa=1;4 Y/ ]# n% G  G7 y. a$ r4 e
    b=0.5;
    . T9 @' ~7 Z5 e, S& py=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];
    ; }5 Z0 ]# [5 H; T6 `) X: x1
      a# S% j# f9 p- r3 E! d- e6 d2
    9 i2 O0 e8 ^- b3
    0 p. H* J, {2 R2 t  {2 ^* f8 g: d4" L% n% M/ h2 ~3 S) U  d% X
    5
    1 g1 z" p- ?3 r2 W2 q1 A' w6: J& R0 b2 |( |) k
    7
    ; q) H2 g; J6 G7 ]7 i0 e+ Q+ j8$ v- G: b; g5 d/ U; n# \
    96 N6 ]1 k. f, r" Q. G+ N
    10/ L0 c; U" T8 ?' k) U/ d7 D
    11
    ; r8 n, h! K% x( m0 \; P  s! |& K; {3 R
    + a7 u+ n) a; @! _+ h2 C
    - F, d8 a& G1 w" F
    可以看出:s(t)单调减,r(t)单调增,都趋于稳定, i(t)先增后减趋于0.8 o+ _7 O" P2 G) f
    结果分析! s$ V& ?* D0 j; M
    先回顾一下参数
    # \" i' j( B6 X" q接 触 率 λ ; 治 愈 率 μ ; 1 / μ   平 均 传 染 期 ( 病 人 治 愈 所 需 平 均 时 间 ) ; σ = λ / μ   接 触 数 ( 感 染 期 内 每 个 病 人 有 效 接 触 人 数 ) 接触率 \lambda;治愈率 \mu ; 1/ \mu~平均传染期 (病人治愈所需平均时间);\sigma =\lambda/\mu~接触数 (感染期内每个病人有效接触人数)接触率λ;治愈率μ;1/μ 平均传染期(病人治愈所需平均时间);σ=λ/μ 接触数(感染期内每个病人有效接触人数)  |/ r) `$ I4 H# H
    可以分析出:
    # G" t! R% w8 V- ?, z) P
    5 U5 a0 K2 g+ e& E

    . x$ d; F4 Y4 u& b+ Z! I& J随着卫生健康思想水平高,接触率λ \lambdaλ变小  U9 u0 f; g: x$ C) \
    随着医疗水平的提高,治愈率μ \muμ增大) @* B9 P' D) s5 n- |2 N
    接触数σ = λ / μ \sigma =\lambda/\muσ=λ/μ减小——有助于控制传播.
    9 F* E# D2 G& J2 G3 N6 @我们可以试试稍微减少一下λ \lambdaλ,增大μ \muμ,来看下效果) @8 _& z- m# I" A" h% ~

    9 Z1 |0 m6 C# x+ ~9 ?/ G5 x

    & V( m) T) N2 [0 K  T0 a1 e3 w. Gts=0:40;
    6 [/ X* K6 s: mx0=[0.01, 0.99];) \, P* C" S9 f! C, M+ o) H
    [t,x]=ode45('ill',ts,x0);$ s& j% H- J8 o6 ~4 I5 [
    r=1-x(:,1)-x(:,2);
    # G$ Z6 {) w" o- c% Uplot(t,x(:,1),t,x(:,2),ts,r),grid7 \( C/ t/ _# ?& Y" w6 a2 `
    legend('i(t)','s(t)','r(t)')6 O  [1 c' t" }

      J7 O; M( G! I( w! K
    % i" C  ]  O) r2 L& }
    function y=ill( t,x)  M2 R0 |. r+ s, F: U% F$ }
    a=0.8;
    . i& y- s; P: e/ s5 ]b=0.6;4 p1 A9 _  A, Y2 Y. T: ?& D
    y=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];
    ' U, x. B; y' c7 Q16 b  d( ~; r8 J7 X
    2
    2 a! c- J7 \' n) I2 p2 q3; N2 }$ h; N9 ~  \
    4. G  B/ E% `; M) l
    5" ?$ D& W8 }/ A) W: C# y% @
    6
    1 t& v# P6 f  E; o: A$ V( G7& ?% f4 _7 b: W
    8
    0 ^6 v) |+ i- u9
    ( N2 m6 U) l2 l: v4 K& W7 _' w: E10* Q) j! j! Q$ R
    11* `. c& x& U7 [0 f2 [

    ! m8 c- \3 N+ m) I! F
    9 G& E8 @5 f1 e4 L9 f
    综上我们可以得出结论:想要减少传染病的传播,我们就要在接触数σ \sigmaσ上下功夫。5 m( O6 g! g9 K& }. b

    6 S" C5 y/ P* q& {3 E5 \! V# m# L: E

    1 ^1 u/ j6 K+ u9 u4 t" g+ \- C5 G实战建模* L- ~( A$ B+ L! z
    数据处理
    8 j1 Z* [& g% s4 a/ O* i# ]/ G+ `4 N) L# ~7 z1 o
    ! c2 y3 j1 D2 F: [
    首先,我用python爬虫爬取了丁香医生官方数据,一共5534条数据 特征包括感染、死亡、治愈的总数,当日感染、死亡、治愈新增,疑似病例,时间,省份等14个特征5 U' p3 k, d, N+ l8 v4 B3 c. S

    0 m+ H: r6 b: v

    8 X( x9 W  |- m9 I% A
      k3 u6 A/ |/ T7 m& v- _
    " E5 z- l) ^) g, p
    然后用python进行数据提取,提取了较为典型的湖北省的数据作为我的参考依据$ I3 S6 ?; u* E( }/ g3 D/ e" B

    9 }( p1 D' y+ m' c+ s# d* ?: V
    & N6 T/ K% Y2 N6 D* C: k& \$ }
    % v( g( s3 s$ L* q- o

    / F& V' C/ R9 ^然后用python对数据进行清洗,提取出了患病总数,现存患者总数,死亡总数,治愈总数,时间,省份这几个特征: U( H/ ?, E& u5 s6 }0 Q5 {
    3 A% @0 J' j: _5 S+ q
    # A+ {0 ?, E" P
    对日期格式进行修改,值保留月和日,并与死亡人数的位置交换; M8 ~' l5 h8 m$ h' @  h
    ; R: ?; c3 x# x- K, o7 C0 w

    5 ]" X' q9 s! q- W+ X这里我用python对提取的四个特征分别进行了数据分析(主要包括计算最值,平均值等,),并把1.20日作为第一天,7.02日作为最后一天也就是第165天,做了可视化可视化处理。* S. @4 u; [9 [6 E+ p
    感染人数示意图  X/ F7 [2 i$ F  ~6 h$ O% x; h
    ( }) X; j- E. X# ?  r6 J1 r& j
    4 m; \' H( ~- w& x% L1 s  V
    治愈人数示意图$ t$ C1 `* g* H0 h5 n+ Y. B3 A

    5 U2 k/ J) ~+ T# U' N5 j9 N6 Q. p
    & S/ z3 M, A- b& w3 B9 ~, ~/ M' x$ R: B

    ! |7 E4 w( r, y6 L* `2 K

    ( q7 p* w) U1 m; O+ J# \7 E0 e2 U现存患者数量图
    ; ^. I& o( Z1 ~+ T" G% Z+ G
    5 _0 b  z# D: j1 [
    + g: p" i- o1 T. }' R( B
    死亡人数示意图3 G9 A6 _* g: X" W  d
    + _2 k. w8 U2 C5 u5 Z9 ~4 s
    / q2 r  N1 ]# A6 G" `' U
    ; `5 }1 b) g8 C
    ' B% u# B% d+ B
    经过上面的图片与describe数据分析,我们发现有一天是异常的,患者多出了平时的十倍左右,经过查阅资料,这天因加强了检测标准,所以增多了很多。为了避免这个数据的影响我们选择将这一天删去(或者用平均数或中位数代替也可)
    & Q- I  g+ ]+ ~  ]9 f" g将上面清理过的数据存放到csv文件中6 b: g) b) ]$ ?  q. b) @0 C

    4 \2 {5 d- E$ u4 L0 O& ]: {

    - x8 H- q1 E9 l; f模型建立) i- r; b) @/ |
    模型假设
    0 d- A  d7 X' c5 \/ e2 @$ f经过上面数据的分析,我们大体可以进行如下假设:# G9 ]( |# c4 i- Z3 [
    1.由于不存在封闭情况,考虑开放体系。. P: Z4 \: H/ w* ?
    2.目前数据以天为单位发布,因此不考虑连续变化情况,只考虑离散的方程。  a: v  r' h& K; w( `( @4 N+ ~% o
    3.新型冠状病毒的治愈人数和死亡人数相对较 小,因此只考虑 Susceptible(易感)和 Infected(感染) 两类人群。设易感人群总数为N1 _+ v  \# [  W. k7 C
    4.经专家鉴定新冠病毒患者治愈后至少六个月之内不会再被感染,所以设治愈后移出易感人群。& \" p9 l" Q1 A3 q: C
    5.设每个病人每天有效接触人数为 λ \lambdaλ(日接触率),且使接触的健康人致病.8 U1 K, c+ z# i8 w1 X
    6.设病人每天治愈的比例为 μ \muμ(日治愈率)
    2 k6 y. q2 k: \0 F8 k7.时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t).
    6 D3 C, k) A% _3 y5 u5 E
    - l$ R( a9 h' k: K$ H
    % m! E3 V" Y0 [- }
    模型一: T5 u- g1 R$ A0 @+ J

    0 a" X2 n) n. {$ G- ~
    ) i6 ]$ V4 G. |: P, ?
    分析可以得到移出者r(t)=治愈人数+死亡人数: T6 H( v- b3 f  F  o
    通过python数据处理,我们算出了r(t)的值,并将其可视化
    + f0 f: q1 [8 }* A. U
    - o1 `: B+ T- s

    2 }  }/ @6 p' m' Q/ W
    $ o5 l% ^* ]* K  x9 C* m, h; m% }

    4 t. M; k3 Y6 J我用MATLAB对其进行了拟合,拟合图像为! s! r! z% T8 a1 ?5 c2 G
    # Y/ o( b2 z4 e( T5 A, }' Z, x

    ! h+ U  x# @( k
    3 T! W1 V4 a3 V( y& @* g
    + C3 |& k1 H& u+ f% D: B# Y* k
    ' a* h  F- T2 I4 v0 i2 x8 y

    # u$ ]) o% Y8 A; L分析可以得到患者 i(t)=患病总数-移出者
    2 P: o4 }7 l3 J# b) @% R: ?可以通过csv文件的currentConfirmedCount 直接获得i(t)数据,当然也可以通过 i(t)=confirmedCountv - r(t)获得,对此我也做了可视化展示
    6 p& A8 Z0 ^+ `' X) x) `
    ! g7 E8 e+ p. l; J. M- E

    9 @" l( b: S9 `" ^% j通过MATLAB程序对其进行拟合,可以得到r(t)的函数图像大致为
    " C8 Y0 b+ o2 S" s0 W& R$ u# s/ y

    . U+ f. J+ M3 t- F4 R9 t$ ]7 _6 ?6 y) S) N2 B

    0 l$ T7 Z2 Q' Y* j  V  d( r- Y+ h2 Q' ^' C3 p
      F+ R& E3 K% R+ S1 W. e" t
    为了方便,利于公式推导,我们先设时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t). 所以有
    ! t  Y  i! S! h9 I& f
    3 d2 U2 x$ D8 ?+ ^( `2 u" S8 w

    ; ~6 l% v/ `7 g$ O9 H- E可以推导出每日新增病例的表达式3 V+ v, i+ \: H! N7 m4 a! f  _
    ( p$ S/ K4 |) W6 y" k/ {' |
    ; n. Y& h: A: C* O! n
    % P( x1 u2 o2 }1 U
    ; |/ }1 _9 k6 C2 X9 B) S3 j3 h! @! U

    8 H/ e4 U5 X8 d" K: G

    7 ^6 \2 X. R. _  h. K: k  ?/ F由以上两个公式可以推导出以下两个微分方程4 Y2 m$ ^: V6 E& o
    , G4 Q9 I, ^: `) o3 p5 L6 g

    # Z$ I. v7 W) k$ @# d' S
    3 V3 T  i: g, x. T

    , _; V" f" O& P6 r; V+ o% H可以知道初值
    ' Q* C; S) ~# C" _% Ri ( 0 ) = i 0 . s ( 0 ) = s 0 i(0)=i_0.s(0)=s_0i(0)=i ( f5 @  L& g$ c
    0
    # |7 |6 T) ^1 n2 m+ e8 Y3 c3 d​       
    0 L8 N6 w: `& H8 |' z! M .s(0)=s & A8 M% r7 W# @8 W' L0 o
    0
      K/ z! D. E6 ^5 {! B4 K6 Y# V​        - E$ J: c1 V( z
    " y: q0 _6 N! M. K+ @
    因为一开始治愈的和死亡的肯定很少,所以r0可以看为0,于是就有:
    6 F) q/ E' f8 si 0 + s 0 = 1 i_0+s_0=1i
    + @2 y4 Q! l& E4 T* O6 L  Q00 b! {* i4 [& l& ~/ v+ b# P
    ​        9 P- G# u- k( l1 K
    +s / {! p6 `. r9 W$ L/ a8 q- C/ b
    0
    + J: {, D6 {4 K; A. g: N9 M. d9 ?​        $ O: U, R1 \/ X. ]: j
    =1
    0 ~  d' t/ }" t- k  M, _通过解以上微分方程我们可以根据经验假设λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)的值分别为1和0.5(也就是每个患者可能使1个正常人患病,患者可能有0.5的概率被治愈);由于一开始患者肯定比正常人少很多,所以我们设i0=0.01,s0=0.99。对其求解可以得到s(t), i(t), r(t),的变化图像8 g6 s3 r3 F! A5 O

    ! q! [- X( S+ D
    ) X: Q+ J' Y1 H  Q

    9 F# z  T& e' J' y9 z. x2 u5 P8 y

    ( \! K& l7 E5 G$ J) T- OMATLAB程序如下
    0 ~6 N* W. i5 T5 O% Zts=0:40;+ W( @0 @  ~- H! z* m" ?
    x0=[0.01, 0.99];8 q% T/ [/ @! T4 h5 u( D# ~- R
    [t,x]=ode45(‘ill’,ts,x0);  y) o* b' k9 d
    r=1-x(:,1)-x(:,2);( \) ^6 M2 U/ C$ C% G3 [8 v
    plot(t,x(:,1),t,x(:,2),ts,r,ts,x(:,1)/x(:,2))
    : I5 n' w9 I4 c6 f6 C3 U: vlegend(‘i(t)’,‘s(t)’,‘r(t)’)
    $ B8 M( G5 \. c; f& w4 ^- U8 @5 ]' _. U( V, @8 H
    ( ^7 ^7 R. B% n0 S' F
    function y=ill( t,x)8 ?/ K6 A0 v6 o' v9 ]2 Y
    a=1;% T2 l! j$ \  J1 F- x3 X# F; t* y
    b=0.5;
    $ C; X0 ]' [3 E, h/ f4 o5 Z9 ly=[ax(1)x(2)-bx(1);-ax(1)*x(2)];! l2 W- @* i) E5 B* ^

    ' r+ l. d7 I$ r( _* z2 w

    2 }" x5 Y4 X, d结果分析:患病人数肯定有个高潮,但之后高潮就会减弱,并逐步降低为0。随着医疗卫生条件的不断提升,患者的 λ \lambdaλ(日接触率)肯定降低,μ \muμ (日治愈率)肯定上升,所以我们可以把λ \lambdaλ调一点为0.8,μ \muμ调高一点为0.6,可以得到以下趋势图。所以应对传染病很关键的一点是我们要提高医疗卫生条件
    - e8 T! ?6 ^: Y' v9 @- O6 S) [4 }; o6 C* }( y7 E% L4 l
    + q7 m' f6 k1 q7 h. `2 ~4 Q" n

      }: k5 j! @! a, e. n模型二3 ~9 @' q7 H  w0 T# L' U- U
    2 h5 l/ O! V0 C5 S9 ^

    ! ~" m# X% F+ M) S实际上,λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)都是随着时间变化的,这里我们设s(t), i(t), r(t) 为第t天健康人、病人、移除者(病愈与死亡之和)的数量, s(t)+ i(t)+r(t)=N..$ d1 H- R  X: i) N
    (t), (t) ~第t天感染率, 移除率(治愈率与死亡率之和)
    # V3 h1 {$ y% k0 [( I% E* L' C8 }1 h有 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)# H8 a/ c: ]& V: e( \
    因为s远大于i, r,s(t)视为常数,所以有
    0 {; O' ~  g- m" |6 a0 l% W1 B' A2 p; W) u4 h) Z

    " i$ w6 M: z8 y9 q- c
    0 J7 t( {9 h& i, u; @9 q4 ]
    + u6 i. ^$ `7 m0 ?- `
    取差分近似导数
    7 i/ b4 l; H; e# g4 b! R% g
    # |( ?% h- m2 i! w0 i

    " A. T$ [( w% q1 P* |- v$ c9 {9 ]% ?
    $ R- Q; Q0 p& r( }! ^
    & |, Y6 s+ O: f5 a
    我们可以先用真实数据对(t)进行展示并进行拟合1 S* ^7 i4 l3 z. L

    - p! ^2 W  g3 t
    1 H8 l+ I2 \5 c# C; k9 F$ Y
    - K: [  H+ c9 A) T
      K/ i! g# m! }% K1 t% F/ w
    当然同样的方法对(t)进行拟合
    # h4 M# h: P0 A  M3 }( d
    9 V. m9 l1 G: @3 H% c
    % \( ^0 O' X% o$ W$ t
    做不出来了,好难,光这些东西就弄了四天,到了数学建模国赛得多难多累啊,哎,让我这个小白手足无措。毕竟还没有正规的培训,这个模型等期末考完试一定好好做做!!!8 h! K7 U5 w4 C! F
    冲国奖/ [" W& W( d9 l5 X+ h# y
    冲国奖
    ! s6 A2 j% b) G0 L冲国奖
    $ o7 z; `2 V# [! ^+ A( f————————————————
    " n7 J& y% m$ A! @, C. w/ H版权声明:本文为CSDN博主「小白不白嘿嘿嘿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。2 a4 E; }8 d9 B2 _. w8 W. u
    原文链接:https://blog.csdn.net/weixin_45755332/article/details/1070946302 \, H- R, y# K

    8 a: E' i: T& _$ Z8 D% m- M# v" o2 @- [3 b; J; M& O4 U
    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-8 00:31 , Processed in 0.314318 second(s), 51 queries .

    回顶部