QQ登录

只需要一步,快速开始

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

    ' y2 R. D3 y. M; p& Q; J数学建模之传染病SIR模型(新冠真实数据)
    ; _* y% Q, l; \4 ^& i& B( J* ]传染病模型的基本问题# r, D. a( ~1 [3 m" J* e4 k, y
    描述传染病的传播过程, L5 W. c1 t7 r/ }0 n0 i5 N
    分析受感染人数的变化规律
    1 K: v; [4 M% L; o; ?- m8 U2 T- L预报传染病高潮到来的时刻
    ' q9 e& r( c0 y4 w: w. R预防传染病蔓延的手段) z/ C2 b, K- ^+ f
    按照传播过程的一般规律用机理分析方法建立模型+ R4 @* v* G, G: j5 V
    注:我们这里是介绍数学医学领域中基本的传染病模型。不从医学角度分析各种传染病的特殊机理,按照传播过程的规律建立微分方程模型.: X& t+ L3 u6 v* n5 i

    4 U/ F7 n: ~* i2 c1 I0 L% K

    9 V. y7 K) [* j& z" H& w- G1 V) g建立模型
    7 v6 p7 J" t8 r模型一9 ]; t; i$ S' V( @
    假设:
    2 U# m, v3 }( [3 m& F: S3 E% C& j9 Y8 h) \4 ^: s6 i
    $ e1 c; u6 |  I5 @4 k. Y
    设已知感染人数为i ( t ) i(t)i(t)(病人数量随时间变化)7 s0 p1 y8 B# J4 a+ k, y7 E
    设每个病人(单位时间)每天有效接触(足以使人治病)人数为λ \lambdaλ& q0 g( |6 ?# a4 n, W- F
    模型:9 e& G+ \) M: V, b; X) q, m5 c
    单位时间Δ t \Delta{t}Δt内,新 增 的 人 数 ( 现 有 − 原 有 ) = 原 有 的 × λ 新增的人数(现有-原有)=原有的 \times \lambda新增的人数(现有−原有)=原有的×λ,即+ N1 `' a2 d" L2 ^- B1 W) ]
    , P! _: n7 r  l! b- h
    . I& i# H$ Y* ^
    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
    & C4 t; f, C! S1 w  c+ T, {一开始的感染人数为i 0 i_0i 8 e; f. `3 l; }  Q  d) N8 q; z  m% k2 o
    0
    8 n' j: h! |4 e, l( `( J7 X6 f8 E​        : n9 E8 _/ [; a- f; C, ^0 n: L
    - W  W6 v' f6 Z  G) f- Q
    i ( 0 ) = i 0 i(0)=i_0i(0)=i
    : L! J5 o7 w; i: u1 k0
    , U% u" F8 L2 i7 [( A​        ; m! ^' c+ n) w) `- a
    0 j1 K; k. B* c1 u! m
    解微分方程可以得到+ N* v; j5 F9 m" {' m# ?! Y
    i ( t ) = i 0 e λ t i(t)=i_0e^{\lambda t}i(t)=i " u( T( M4 z6 `+ U
    0$ p8 r. X7 X" t: e  `: c2 j
    ​        2 L6 C3 o+ N, s6 `, Z
    e
    ) [) ]+ h& Z8 Y4 \λt2 a# f' r1 P  I9 Y% R

    8 b& F- n* _5 m5 s7 ^" q! ~所以可以可到当λ → ∞ \lambda \rightarrow \infinλ→∞时i ( t ) → ∞ i(t) \rightarrow \infini(t)→∞, w8 X0 b; O2 h, `, g. ]' G
    当然这是不可能的,因为我们考虑的因素太少了,首先一个是,若有效接触的是病人,则不能使病人数增加,所以必须区分已感染者(病人)和未感染者(健康人)看模型二来解决这个问题
    ; T8 H& k( P0 T9 w$ @: @% d) ]6 ~4 F

    1 g$ R/ r5 }. j7 ~0 V" }3 D9 d模型二: |) E% u' U+ g: [- h1 F9 i
    假设:# A# k% V! P" l8 R: f* W

    0 u/ P* l* A5 M6 y# R
    5 H, X1 f; Y8 c! m. G$ ]
    将人群分为两类:易感染者(Susceptible,健康人)和已感染者(Infective, 病人).& ]' H) u1 k. `
    总人数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
    3 P; s( u- |+ A. u* b/ s3 s每个病人每天有效接触人数为λ \lambdaλ(日接触率),且使接触的健康人致病.
    ! y7 q( R3 s+ S, e* j0 ~: m7 A3 p建模:" H$ ^' X0 r8 a& o0 O! H) ^, ]
    每天新增的总人数为原有的人数乘以每个人可以传染的健康的人数,再乘Δ t \Delta tΔt
    1 ^* P+ z4 L* h& J' U: j
      Y9 t% o% f* R6 P' X7 L1 b
    ; f) e! {" J, \& W9 N! @% L6 Z
    Δ t \Delta tΔt除过去,两遍N约分得到下面,
    0 Q% {! U: ?) v; ?7 D% M8 j) N$ W" p1 ]
    % ], {. }1 G" r# a8 i( |
    MATLAB解一下这个微分方程
    0 a* x5 a2 h0 X8 S5 X! P+ h, x3 s2 I9 U6 |  M

    % E& k  q: C" t: dy=dsolve('Dy=n*y*(1-y)','t');$ p7 K* y7 O4 h- \% B
    - ~) E2 y1 \; a) A

    ) h6 G3 X5 M: L3 d5 Py =$ J4 l+ V5 C8 v, c1 k
    -1/(exp(C1 - n*t) - 1)
    1 l* z4 `3 f( o; F                      0
    # k7 e8 T4 a9 H& _2 ]                      15 d4 }% q. p: G! T0 P
    1; b' J( j( x" F! W( M8 K, o) v
    2
    * C! x2 n' E$ \! [) r6 R/ B3
    : I0 u( W1 s# Q# y4/ W3 S+ z8 v9 a* H, D3 P% ~9 }
    5
    8 n) D+ r6 U& i$ c6
    2 K  I/ g/ s( |) B7 D: O; O) f1 j写规范点就是这个函数
    : p/ s$ k9 \' j2 V6 L' i; b7 b
    ! `6 Y, N8 u$ D1 b% C

    . m, p# W9 [+ d8 x( j函数图像大致为
    0 V& v! v) j$ W% {4 A9 p  L7 q5 i% E( h

    ) O0 m: w  R) _- @可以看出t = t m t=t_mt=t
    % c" k! J4 p/ X& Mm
      Z9 O4 d8 Q( x. ~  z​       
    2 L  l$ G; H$ ~0 e! }& H" k/ J) ^. ^ 时这里图像的斜率有个最大值,其也就是传染的最快的时候,即传染病的高潮时刻,当然t m t_mt
    0 `9 O- Z* I$ `m9 X; V8 o+ y# k, P! D4 |
    ​        ! i. {7 f9 U: [1 C+ P3 f, L8 L
    是可以求出来的+ W5 \, P! @( A6 a5 n! X. y( k) W

    $ m1 b8 O, P1 ?

    * W$ J. `) ^5 U" Z8 b7 w再看原式,当t → ∞ t\rightarrow \infint→∞时i → 1 i\rightarrow 1i→1
    / r" n8 l8 r/ e1 i/ T9 Q- B% f病人的比例为1,当然这也是不可能的,因为我们还没有考虑有没有可能治愈,看模型三& [, h4 o# R! y4 x& N( Z6 f
    4 E0 f+ U( @1 [' W) U4 N
    8 e7 O9 l( z0 V2 @( ^6 }
    模型三
    $ q! S; t- ]- P( Z3 |' T假设:# J8 a  x: F8 B. d3 `
    0 P3 {( G) R7 H6 C' o: W2 ~
    ; J, L! P* _* u/ |4 {  ]
    传染病无免疫性如伤风、痢疾等——病人治愈成为健康人,健康人可再次被感染。8 X& F" Z( r3 Q+ O
    病人每天治愈的比例为μ \muμ (日治愈率),1 μ \frac{1}{\mu} 1 g" P& `; r/ O) y  T0 U
    μ
    , U0 l  p. }" e7 s# w* `* {1
    7 l' n2 y! Y' q+ v​       
    1 O9 u; ?% u' h1 L6 p0 O, v 为感染期,
    9 w" p5 H6 u+ B- F- L: W7 ~模型2 j! x1 d* [, d" z# A5 G$ j- E" f
    这是减去了治愈人数之后的新增人数
    ' d" M! R6 t0 `) g$ W
    ; C! j3 W" @3 z# u* b2 S

    9 i7 Z6 o2 \6 c, t# R3 z8 s% Y' @2 ~
    7 h, b$ L/ y) |% c* r
    . \; Q, u3 J; @# N* ^
    σ \sigmaσ 为一个感染期内每个病人的有效接触人数,称为接触数
    ) C* [& e/ }$ c9 ~! x6 S
    * H8 f+ P/ e! ?4 ]4 o" h

    ( x) y) _/ e. i5 c可以画出上面的图形分析下
    " s  }! }/ j) d/ f
    / {, q) @, o3 R% ^  U1 x! D1 t* r
    - B2 F( r0 `7 H, p+ m, Y% v+ H
    对上面的公式进行分析,可以得到,当i = 1 − 1 σ i=1-\frac{1}{\sigma}i=1−
    5 R/ X0 W9 y4 Aσ
    / Y: M1 d0 M. M! f1
    # m0 A* @) _7 k* v3 f9 Y​       
    ) l0 [$ X" y6 K: m: \/ W 时,i ii对t的导数为0这也就到了i ii的最大值;当0 < i < 1 − 1 σ 0<i<1-\frac{1}{\sigma}0<i<1−
    / g4 w: Y% k  b$ [, }, sσ
    % _) A, t: R7 e8 @! Y1
    " F& l; a3 d; _8 G  M​        0 ~* @( I$ M. g. f! D  S$ }
    时,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− . Z' \4 n# m" l$ E
    σ
    - |. L, m! c5 `( \2 P/ F) K+ U" Q1. W9 I* w0 e* A1 O8 |* N
    ​        * T3 [) I7 g. Q' u1 |/ T: s
    ,d i / d t < 0 di/dt<0di/dt<0,i是单调递减的。
    ! C7 M/ h' i3 d. B  m; P2 n+ I# j8 U4 y- N6 ]

    1 ^3 J8 u) O4 n& W' V当然我们也可以画出i ii随t的函数图像
    : U- s# z5 |9 w: O, B6 }
    - x9 v( c; t: @9 F

    7 w. i. i8 D( V" y* d$ j( P0 K2 l先看红线,若初始条件i 0 > 1 − 1 σ i_0>1-\frac{1}{\sigma}i
    : \# ^2 K4 {$ A% V0) F* `( k. [, c( ^
    ​       
    " R# x6 N2 L/ I" |. U$ @/ x" \: E >1− " r. }7 H4 n) U7 Y
    σ/ M& q. ?: D3 j& e  A0 w
    1
    , {: W" F2 A' R! I​       
    % L: Z$ ^8 ^8 g% f& [! M  D d i / d t < 0 di/dt<0di/dt<0,i就是单调递减的,# e6 w& t+ e. f* z- `& x# e6 H
    若若初始条件i 0 < 1 − 1 σ i_0<1-\frac{1}{\sigma}i , Z7 ~: l) g$ j7 x, f
    0
    - m# l9 M" ^* k" X3 S7 b; p+ C​       
    ! m0 I/ T& @. f5 V <1−
    ) k0 ^8 i; X' {6 o& `5 x! I1 Eσ
    / ?) k* Z5 V( e4 v1 W14 a( g9 f* L5 f0 E& J
    ​        8 n- b) `: B5 h9 S* \4 c
    ,i就是递增的,可以看到i对t的导数图像有一个最大值,下面的黑线就有一个增加速率最快的一个值,按S形曲线增长! d0 b( k3 U; R$ R1 B  z' Y
    ) J6 p$ c( d- P% v9 C( Q

    + `; n7 h0 Q& W' F8 t# v4 e9 zσ = < 1 \sigma =<1σ=<1时d i / d t < 0 di/dt<0di/dt<0 i肯定是单调下降的,最终降到0- v2 ^/ X0 w9 S$ a6 _

    9 m: ?4 }% ~: h2 t" g+ L

    ( [# Y$ G- l' b4 z+ K
    $ ^) u9 O; D3 q% c% Z( Y/ a

    # _' e4 ^1 K& a% O/ a+ N综上:' K8 k7 N; G3 D3 \6 j. n# C
    想让患病者越来越少,σ \sigmaσ必须小于等于1,即感染期内有效接触使健康者感染的人数不超过原有的病人数.
      L+ I8 q; d! v' C' m6 s$ u* i/ i9 S( B

    : p+ K; C' K4 |2 ^) b( i这里我们分析的是感染之后还能感染的情况,但有些病毒感染之后会在体内生成抗体,就不会再被感染了,下面我们分析这种情况。% q& T2 T8 \6 |/ u9 ]

    3 U! G: ]% T. t6 z- |

    3 S) e3 V1 K6 ^# }( X% r3 G模型四 SIR模型! j; M4 Y5 U# j9 Z- q  Y% e
    SIR模型是常见的一种描述传染病传播的数学模型,其基本假设是将人群分为以下三类:
    - b4 v5 y6 y( T' s3 ^' n& e0 S) P; X- g
    # j( \( _4 K7 k# n- E+ G3 q7 Y% p
    1 易感人群(Susceptible):指未得病者,但缺乏免疫能力,与感病者接触后容易受到感染。
    3 v) x5 y9 Z, J# \1 F5 S  l* g9 |) i: w( q: x$ T9 i

    * z; v* a7 }1 H: {% {/ @2 感染人群(Infective):指染上传染病的人,他可以传播给易感人群。# o5 L0 u; M, @: m+ o6 l
    8 O( R, c( ^, S
    0 h0 @9 M5 e% B
    3 移除人群(Removed):被移出系统的人。因病愈(具有免疫力)或死亡的人。这部分人不再参与感染和被感染过程。$ L' b5 W7 c) j8 b4 F$ C
    , a, v: s& c( F  r. m, C! @
    ( \, e4 u! P1 n' i- ?3 r
    假设:
    . f# G/ m3 V1 ^7 m$ S& h+ E3 _8 p0 L# U

    2 m3 u" X5 d2 m2 ^1 r传染病有免疫性如天花、麻疹等——病人治愈后移出感染系统,称移出者(Removed).
    5 Q* e$ @% e/ W* R总人数N不变,健康人、病人和移出者的比例分别为s ( t ) , i ( t ) , r ( t ) s(t), i(t), r(t)s(t),i(t),r(t).
    9 L! N3 E5 B2 X/ ?病人的日接触率为λ \lambdaλ , 日治愈率为μ \muμ, 接触数 σ = λ μ \sigma=\frac{\lambda}{\mu}σ=
    ( X, J& y. `! y4 Wμ6 c8 `! Z/ X& ]) Q
    λ  I4 t, g" {* c% j7 U; h
    ​       
    % f. y# S9 D$ [/ J* v8 L3 ~
    5 B0 C2 L, Y9 a5 S6 H- f& D- O建模:
    7 F3 E3 A7 Y0 p3 l! |1 Is ( t ) + i ( t ) + r ( t ) = 1 s(t)+ i(t)+ r(t)=1s(t)+i(t)+r(t)=1* z' @* ^3 ?/ S" _7 I1 r
    这个就是病人减去治愈的人,和上一个模型是一样的# \5 T9 v5 I4 n5 x  M: \

    ; ~% Y6 U8 @1 X2 _
    - p5 O3 D* c& F6 _
    因为有治愈后是有免疫性的,所以可能被感染的总人数要减少,减去移除者就是
    9 G: X* k' l: g* ~" g0 F* ]2 S% A% Y* [% L2 G8 j
    : S" |4 J6 B& v7 a! u9 Q
    将上式化简为:, x4 W5 F# W" K- S: L
    % T# o. n/ v5 A. ^! ^! Z

      w$ a3 [4 W. e* D# fi 0 + s 0 ≈ 1 i_0+s_0\approx 1i
      f' z) k- {  h- {4 p0
    ) W* g! N) f2 c0 @7 d% v​        & t( K9 X2 `; Y+ d% o
    +s
    4 O. P0 _7 d" i/ x+ [  m( L0# ^1 `9 E3 e8 W) t% \
    ​        : l6 Y5 b/ f: x# ?5 v
    ≈1(通常r ( 0 ) = r 0 r(0)=r_0r(0)=r
    ; {9 P9 s9 C- a. I0/ q9 A3 [$ o1 ]5 s4 a" L
    ​        - G4 o( S, b4 B! I
    很小)# s; I9 A' Z- Y& `6 X, O* l6 l

    4 q2 l1 \6 g1 U; {- H6 A) F
    8 ~% N5 t1 f- i& N  z
    关于i(t) , s(t) 的非线性微分方程组,没有解析解,只能通过数值计算得到s(t), i(t), r(t)的曲线,下面来看下曲线的数值解的MATLAB程序1 h6 m6 Y4 [; d  C$ ^! s

    2 J, b9 V2 j0 e! o; C

      d- K+ w+ q6 [这里我们先设λ = 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 ; Q9 w- p  {9 a- V
    0% q* u( s/ K# P# l4 g
    ​       
      Z! j( b9 m7 E& T! l4 r3 I6 N% A6 q# n =0.01,s * h+ a. e9 Y: C) n; M
    0  K$ M1 x' H3 o' j; K' t+ {
    ​        ) I4 }# w0 U4 s" C( j  T* ^
    =0.993 }5 K- c+ e; D2 y
    也就是平均一个病人人传染一个正常人,治愈率为0.5;开始的病人比例为0.01,正常人为0.99,设没有天生带有病毒抗体的人,所以r 0 = 0 r_0=0r 8 Q: R; E. [- q" c7 d1 w
    0
    : i5 |, B* i6 ]4 a​       
    ; }$ c+ a/ p" {+ v =0,之后若果病人被治愈,则具有抗体了,有抗体的人为:r = 1 − i − s r=1-i-sr=1−i−s$ G8 ?" k. D0 W% K4 k
      J4 ^) z2 E* ]# U. a( Q

    8 \0 K3 A3 T& a, Jts=0:40;
    & i1 }9 i8 a* C) o$ ^, _4 ^; a8 V/ hx0=[0.01, 0.99];1 K4 ~( D$ ~% D% x5 @# f
    [t,x]=ode45('ill',ts,x0);$ B) J, {* p* E( y- n% |
    r=1-x(:,1)-x(:,2);
    ( N% n) h& |1 {- J" f- xplot(t,x(:,1),t,x(:,2),ts,r),grid1 d. V! x& L$ K9 j; j
    legend('i(t)','s(t)','r(t)'): i3 _" M) A" c; L( e% R
    . Q  z: J. |. p, r

    - T2 B  g. N3 o% d0 u! Ffunction y=ill( t,x)8 z$ P# @8 r- y' n% d7 i) `; d
    a=1;" A' |/ l- b/ R6 d
    b=0.5;
    ; b! R; K' S& n4 `) V* Hy=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];
    9 }' ]( W$ I) E" X7 e( t13 W" ?. E& P, r' ]3 O0 Q
    2
    # x: [* x$ U& |  x" f  P34 _6 _1 S( a, O' A; R
    4
    9 h- W! h, a" |  N- v$ U2 p5
    / p2 D: w+ i. @2 s* A6
    / F- f7 A* s1 C2 Z5 L7
    6 K# X  ^, y! M. A3 d/ Z  C8
    0 h; Y% h. E3 Q: G5 J; e9
    ( x# [8 m7 j3 d/ x+ x& m; a4 Q! _10
    , x6 R( @9 _4 u( p11# S" X, s/ @7 E
    7 X  t5 e1 x/ ~7 s0 s3 e
    ) J( ]9 B4 K. C- e, d
    可以看出:s(t)单调减,r(t)单调增,都趋于稳定, i(t)先增后减趋于0.
    ( l" m! `) h0 u6 u; O1 [7 ^结果分析
    ! H/ x6 M  G) s# Y先回顾一下参数$ ~2 `" I4 c, S: |9 t! p
    接 触 率 λ ; 治 愈 率 μ ; 1 / μ   平 均 传 染 期 ( 病 人 治 愈 所 需 平 均 时 间 ) ; σ = λ / μ   接 触 数 ( 感 染 期 内 每 个 病 人 有 效 接 触 人 数 ) 接触率 \lambda;治愈率 \mu ; 1/ \mu~平均传染期 (病人治愈所需平均时间);\sigma =\lambda/\mu~接触数 (感染期内每个病人有效接触人数)接触率λ;治愈率μ;1/μ 平均传染期(病人治愈所需平均时间);σ=λ/μ 接触数(感染期内每个病人有效接触人数)
    - g+ O- C3 }; `: z2 M0 k4 d可以分析出:
    ' S+ e  e# a. Z1 T* g
    9 V; S4 s# e+ k  Z
    . w# q- C- A: }! y& Y. _" d
    随着卫生健康思想水平高,接触率λ \lambdaλ变小7 i7 g8 F- g9 W$ P: e; x/ B/ X+ A
    随着医疗水平的提高,治愈率μ \muμ增大; Q3 |& ^/ g3 Y& N. t3 p% F1 X
    接触数σ = λ / μ \sigma =\lambda/\muσ=λ/μ减小——有助于控制传播.7 e2 c& E/ U$ a0 p8 h# D
    我们可以试试稍微减少一下λ \lambdaλ,增大μ \muμ,来看下效果
    . a2 x. [  f* s' F& n2 d: i& b; B: O
    ) m; Q! o/ a0 E1 `  M

    # u6 C7 W& A- t( C- rts=0:40;
    , h: h) D' F4 e2 a" Zx0=[0.01, 0.99];
    2 e; g  B/ g  q# J7 ]: `[t,x]=ode45('ill',ts,x0);
    7 P( ]" w9 s# m8 S7 U$ Mr=1-x(:,1)-x(:,2);! e0 _7 E9 A7 e
    plot(t,x(:,1),t,x(:,2),ts,r),grid
    8 H% Y4 l$ c) x" T$ ?, K8 Dlegend('i(t)','s(t)','r(t)')
    0 d2 [: v* v* k  y8 H- f  e
    9 }$ }  y) R' }9 U/ @

    ' o% c% h# i2 U9 xfunction y=ill( t,x)- g8 \% _6 R" o% \
    a=0.8;
    * w5 q& W8 Z5 N1 D# ]b=0.6;
    9 V0 d, n7 Q( U& ry=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];* h# S$ [8 g+ b9 r8 I7 T
    1( }3 B9 ?0 X* r3 o
    24 x: F& v6 X8 W$ y% f9 ^
    38 C) i% u0 Z7 n" P; F$ {0 c$ f
    4
    , p) I+ q. P. V1 d" o: n+ ^/ @5- I0 }* H! O& u( ]3 t+ M
    6
    , n2 ?& u* b' k. F/ s7
    3 h( [7 s% \" Y3 `8 M( c- L) s8( y. d4 W; s0 {0 u7 l2 W
    95 |) l9 s. K+ J) L6 M2 Q" J. G1 L
    10
    ; l5 n( _& X1 E# s& g6 {117 b- |0 y0 i" A4 u

    % p1 a9 |) z8 k9 c6 Z; I, S# u& l

    3 R  @, L3 o$ ^/ [* c% y' Q  X综上我们可以得出结论:想要减少传染病的传播,我们就要在接触数σ \sigmaσ上下功夫。3 q. ^8 _) H+ _, l
    ( w( K" [0 S4 ~1 i$ z+ v7 L9 R

    / J) L! `3 G: X3 D" E1 k; |8 K1 P实战建模: D) e. E5 E  ?0 J& U% ]
    数据处理
      u/ ~: ?# d8 b8 L$ G# f9 Q6 D) H! n) t1 Z0 E

    7 P0 d, g7 i, r/ G, p* u. }4 ^首先,我用python爬虫爬取了丁香医生官方数据,一共5534条数据 特征包括感染、死亡、治愈的总数,当日感染、死亡、治愈新增,疑似病例,时间,省份等14个特征
    7 a. M- g- ~& R
    1 }! m; ^2 S6 Z" w/ v) n$ |

    5 X, H, @! V4 W' y7 h* R; f% A( a
    2 e4 Z4 j8 G1 ]& S

    - V8 ^9 t9 R$ D+ f2 D1 ]然后用python进行数据提取,提取了较为典型的湖北省的数据作为我的参考依据% J8 M7 X9 x' O$ q. l8 K

    6 a1 f) s/ w. t4 r; i7 M/ q, I
    2 J# q5 [0 O3 A- M
    . p8 Y0 X) n" c
      Q( ~/ d1 G0 g2 N& ^
    然后用python对数据进行清洗,提取出了患病总数,现存患者总数,死亡总数,治愈总数,时间,省份这几个特征6 N$ f  C. C7 g% q8 G
      V4 K5 c( D6 j. t/ K# f) z1 P

    * Y9 E/ I$ Q; \6 }+ r  o  M  ~对日期格式进行修改,值保留月和日,并与死亡人数的位置交换
    ) V" a4 L) q( a! l& s4 x( u, A1 |8 O- y; @9 {) V

    9 m7 |' P) C2 M! g0 j这里我用python对提取的四个特征分别进行了数据分析(主要包括计算最值,平均值等,),并把1.20日作为第一天,7.02日作为最后一天也就是第165天,做了可视化可视化处理。
    ) C& Z* w/ ?  x% ]+ z感染人数示意图
    - X2 Z0 ]! }: d) `. z* q2 }& w7 t- r- S* W

    ( A3 A/ Q" n3 ^' P$ Y. I治愈人数示意图
    ' a) r" s) S# ?6 ]( u1 J$ q6 H4 c2 C' R* A1 j3 D
    ; F: U( |& `6 O9 d- R. |
    1 {: I3 g: ^! Z9 C+ o& ^
    ! F6 U0 h  Y/ i, A) m
    现存患者数量图
    ! F, L, |& q  i- S) d4 g# F
    / _8 @5 N6 C! z+ f' O$ s& h( Y3 M* Q0 P

    8 H) r2 l% m: t& R9 q5 N死亡人数示意图
    8 L4 A% z+ r1 M& \$ F; W% t: l' u( X; s7 b2 i
    7 R5 a4 b. V1 N* ?/ f" T3 D

    ) O. K# b% t. o' h1 B
    & M  S/ S; I/ c5 a: t+ c' R9 D
    经过上面的图片与describe数据分析,我们发现有一天是异常的,患者多出了平时的十倍左右,经过查阅资料,这天因加强了检测标准,所以增多了很多。为了避免这个数据的影响我们选择将这一天删去(或者用平均数或中位数代替也可)
    - o+ G8 L5 T; o; O- ^5 p将上面清理过的数据存放到csv文件中1 t0 S+ ~9 @" ~8 U) P/ Z, b1 K

    % U& W5 J5 u, u6 m* I0 C7 X: W
    3 `% [' d& k: x
    模型建立
    " d! E& h; `6 Z, \$ j4 D& I模型假设: t% U$ z! q2 N$ g/ y; W, i
    经过上面数据的分析,我们大体可以进行如下假设:
    $ n, q3 c9 s+ W1.由于不存在封闭情况,考虑开放体系。
    % a$ i  T, V  {# P; l2.目前数据以天为单位发布,因此不考虑连续变化情况,只考虑离散的方程。4 ^) }2 t+ v! u7 R4 J! |
    3.新型冠状病毒的治愈人数和死亡人数相对较 小,因此只考虑 Susceptible(易感)和 Infected(感染) 两类人群。设易感人群总数为N
    4 U) s6 Y8 G% B$ i; G4.经专家鉴定新冠病毒患者治愈后至少六个月之内不会再被感染,所以设治愈后移出易感人群。
    7 ~+ F2 \# O' ~  D( b5.设每个病人每天有效接触人数为 λ \lambdaλ(日接触率),且使接触的健康人致病.
    : V1 H3 R* q5 H; K. N; Y6.设病人每天治愈的比例为 μ \muμ(日治愈率)
    5 m5 D( _3 b9 i3 _7.时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t).
    7 E3 p, ~( M; m; S8 j$ Q+ l/ ^2 G8 Y1 m5 W1 |0 Y# |

    # P; e# n5 [& g  W8 G, Y2 S. z( m模型一- z6 M* f. C( v# f' B
    - S* q. ]9 J1 W! N
    ' t6 m( _' @9 ?) f3 a
    分析可以得到移出者r(t)=治愈人数+死亡人数
    # ^$ j5 d6 r" m$ D6 b$ ?5 q- b通过python数据处理,我们算出了r(t)的值,并将其可视化) d: [7 B" \6 Q# f. Z) W
    5 d% f5 L, }7 w7 Q. Z: T
    * }6 c. c. }$ [
    , t8 O& C) w6 o. s! w, B, k

    7 G- E9 z+ i  |4 z9 R我用MATLAB对其进行了拟合,拟合图像为
    & I7 x+ R( H: c/ S) N, J* {8 H& B6 ~  g
    # x8 E% W8 q) b. u( Z- N. F

    ! Q3 L+ e2 b' J& D1 A& f

    " Q: I) V) {' @5 B+ n8 c* g: [- Q7 w; t0 }6 [. H: p1 I

    8 r7 T! F6 s; E( O- n分析可以得到患者 i(t)=患病总数-移出者
    5 O1 f1 @  [' \% Z可以通过csv文件的currentConfirmedCount 直接获得i(t)数据,当然也可以通过 i(t)=confirmedCountv - r(t)获得,对此我也做了可视化展示+ `  S( J% ]; N! \0 ?7 Z/ v3 \2 p* x
    9 E% k2 b8 |( F$ ^7 J" E5 T
    " h/ q! O, L: f* J
    通过MATLAB程序对其进行拟合,可以得到r(t)的函数图像大致为
    7 q. N+ i* z1 n- S9 h; r  e
    ! A9 t6 E" X9 z

    ) G! C( T2 j# P" `$ m$ H3 o; {  p$ H9 D2 j: F
    & e: ^/ x/ y- X  @0 k
    ; M0 @3 t5 C+ P6 d

    0 K0 u4 v8 Q- N% K0 [# p3 x' J为了方便,利于公式推导,我们先设时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t). 所以有3 j) U% d7 @1 C, S9 [
    - t6 m8 u9 ?: L6 E; s8 N1 ]" Y
      q9 [& t! X) T* l+ A2 h
    可以推导出每日新增病例的表达式, c" `8 g" O( P$ r* \* ^
    0 j9 ?$ |# ]% u% W8 {" P
    " }4 Q8 S$ T3 [. ^" o+ _
    / z* \7 L5 o1 R, D
    " ?5 r3 j+ |, k; p% A* k" H; K8 t6 S0 x

    ' u9 G. Y6 F- H7 z% P
    7 \% B  ^' m+ x" s) }
    由以上两个公式可以推导出以下两个微分方程
    2 g2 E% h, U* b' Q
    8 c/ j3 o9 L7 b
    % r- y# Z" H+ Z* j* c7 ]
    5 K' ~/ H, h+ r( i) R8 u2 y' w

      D. J8 K5 e/ M0 q- I4 ^: N1 [可以知道初值
    ' I: p1 |6 U( T/ y# yi ( 0 ) = i 0 . s ( 0 ) = s 0 i(0)=i_0.s(0)=s_0i(0)=i
    9 O# S) T4 s9 K$ N! j, k0, f/ d: h: `7 e& U) u8 i) `
    ​       
    : i, q9 m! j% C/ N .s(0)=s ( M3 e! L" n& u" V0 m7 d
    0
    1 p% M* R  c  Z* C​        ) K7 p3 I3 ]7 b7 y! w: L, Y3 M: D

    $ @2 y" j3 s, T& V- q6 P因为一开始治愈的和死亡的肯定很少,所以r0可以看为0,于是就有:
    6 R" a& _$ ]1 n8 \8 ]3 b8 ni 0 + s 0 = 1 i_0+s_0=1i
    5 \8 t9 C, x3 A, P( T0$ o1 T/ [# D( X  r
    ​        4 g* V: }( e' y. [% B6 M5 i
    +s
    " e7 N* }7 g2 u0
    $ D9 f; R6 X/ o. P​        : {, B  U/ ~0 V  f
    =1% E* i! }' |# d& B) v" F* |& F, u, J
    通过解以上微分方程我们可以根据经验假设λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)的值分别为1和0.5(也就是每个患者可能使1个正常人患病,患者可能有0.5的概率被治愈);由于一开始患者肯定比正常人少很多,所以我们设i0=0.01,s0=0.99。对其求解可以得到s(t), i(t), r(t),的变化图像/ B8 k1 g% r; O5 ?  g3 d% n( l

    7 c5 I% h% r9 W0 c1 K7 w8 B
    4 [, C, F. a8 M! \% C
    0 |1 `+ t- o' R5 }$ u# T# k

    # v" S" C) d1 k/ h2 Y/ P" T6 @MATLAB程序如下) t7 P: a* E' x$ N: \% b
    ts=0:40;. g4 w( O% a1 X( T' \2 s3 C. f' J$ E
    x0=[0.01, 0.99];+ i" v: F6 [! Y. k
    [t,x]=ode45(‘ill’,ts,x0);6 d" c- z; x0 C0 R8 q
    r=1-x(:,1)-x(:,2);9 _) ]% w9 ^0 A6 P. a
    plot(t,x(:,1),t,x(:,2),ts,r,ts,x(:,1)/x(:,2))1 D. L0 ~4 G) l6 b5 ]
    legend(‘i(t)’,‘s(t)’,‘r(t)’)& z% P/ w% W# x! x6 J/ n

    , G* K$ }+ O6 n; O5 U% T

    1 ^4 F$ [! B& }7 I# c6 Hfunction y=ill( t,x)% }- v" V" I+ X2 j
    a=1;
    / M0 h$ z, G( G: [# F9 Ub=0.5;8 u+ s' a/ ~6 ?0 S( m1 H: Z6 G; v: H
    y=[ax(1)x(2)-bx(1);-ax(1)*x(2)];$ n4 e. Q3 J" `" _7 p

    ; `" B/ K0 {- \  P+ h

    ! \6 u, Z. u4 X9 T结果分析:患病人数肯定有个高潮,但之后高潮就会减弱,并逐步降低为0。随着医疗卫生条件的不断提升,患者的 λ \lambdaλ(日接触率)肯定降低,μ \muμ (日治愈率)肯定上升,所以我们可以把λ \lambdaλ调一点为0.8,μ \muμ调高一点为0.6,可以得到以下趋势图。所以应对传染病很关键的一点是我们要提高医疗卫生条件
    3 n" \) t1 `4 D* U; d+ C+ L5 O7 l* F* Z6 B1 u

    * R/ A1 C5 M2 }- k! C5 o+ d# b4 t( e3 m. `5 ]) Z" V. X
    模型二6 ?5 F9 h" a: m: R$ @  q
    . s! c& b5 d4 G' ^

      v1 q# t+ \  K! r. Y) p3 K0 N6 D实际上,λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)都是随着时间变化的,这里我们设s(t), i(t), r(t) 为第t天健康人、病人、移除者(病愈与死亡之和)的数量, s(t)+ i(t)+r(t)=N..
    & P3 M. E; s4 q' h" {+ q# n, X3 [(t), (t) ~第t天感染率, 移除率(治愈率与死亡率之和)
      \- r$ b2 W+ X0 {6 l- U有 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)
    , N7 V$ |% T1 [因为s远大于i, r,s(t)视为常数,所以有
    - T5 R4 \0 n3 ~: C6 r2 k& {# u, g  P. n& a' n3 \; V
    8 f) B* n0 m+ }$ Z& Z

    * {) q/ L# D6 U: h' l
    5 u, n/ N# m3 k  X# r. f
    取差分近似导数5 I* k" t3 X0 h) J; J+ f* i' z9 p0 ?
    : M5 a0 F: W" C+ q) G2 d

    0 a  S! S: H: m% _- d) s2 z! L6 d- [: y5 \" c4 S3 v
    ( t, o& Z  Y9 O4 g* V; i. L
    我们可以先用真实数据对(t)进行展示并进行拟合
    $ G& u6 ~+ a& R% t$ |. j
    ) i$ K+ }6 r, C1 \0 t8 J) i; R
    & P" x9 t% @6 x
      C$ u) x/ ?) p$ c* k
    $ @6 w9 V% @' x
    当然同样的方法对(t)进行拟合6 v+ I) D0 B5 u' N5 u: u1 |
    / ^" _( H' u7 N, v
    , M: w1 z/ H# z& b9 @
    做不出来了,好难,光这些东西就弄了四天,到了数学建模国赛得多难多累啊,哎,让我这个小白手足无措。毕竟还没有正规的培训,这个模型等期末考完试一定好好做做!!!( A: u9 ]7 s0 i. l: ^7 N. H
    冲国奖; v" [! m. H$ S1 E( V' B+ b9 G
    冲国奖
    1 V, {2 V5 `' h% t$ L冲国奖" j* i; [# h! T7 B# f: ^0 K' B3 `$ y
    ————————————————
    * Z* k" a( P: B: {版权声明:本文为CSDN博主「小白不白嘿嘿嘿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    ) c6 h. \! S: R4 l$ P7 @: l) ~原文链接:https://blog.csdn.net/weixin_45755332/article/details/107094630
    % L% P5 m, |- [" W0 i  l! R1 o8 E! T" b/ z' \

    3 A7 o4 Z$ R9 P2 C
    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-14 22:24 , Processed in 0.418362 second(s), 51 queries .

    回顶部