QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5688|回复: 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
    : l5 f( U9 F/ Q4 y) X) G
    数学建模之传染病SIR模型(新冠真实数据)
    5 T6 \( `! y# `: F传染病模型的基本问题
    ; ?/ X, _% z. @( n0 l* J4 ^* g描述传染病的传播过程
    ! x7 f: a' C. @- l# W$ b分析受感染人数的变化规律
    / i4 d, ~! a. Z( s+ D预报传染病高潮到来的时刻
    9 f1 s1 d& X  _! B  k( s# N5 W5 b预防传染病蔓延的手段) V2 @$ [  v( [
    按照传播过程的一般规律用机理分析方法建立模型
    2 }( W- `; F4 {注:我们这里是介绍数学医学领域中基本的传染病模型。不从医学角度分析各种传染病的特殊机理,按照传播过程的规律建立微分方程模型.; v* b: w0 B- e
    , n% b3 T+ `  c" U
    6 C- s8 t1 E) S  a$ L
    建立模型0 M; ?4 m  D- M3 p1 \# v2 o7 @
    模型一
    9 \1 |7 ?6 ]6 V+ i- X$ |假设:/ o% B9 Q, W6 X( c
    " E+ a: T3 p0 Z

    8 g1 L: `  x0 b# b4 W. A' G设已知感染人数为i ( t ) i(t)i(t)(病人数量随时间变化)# V) i- N' t) O* h3 l7 |3 u! b
    设每个病人(单位时间)每天有效接触(足以使人治病)人数为λ \lambdaλ- i- P) n$ ~) k  Y6 o1 R
    模型:
    ' [- C7 R- q4 p: y单位时间Δ t \Delta{t}Δt内,新 增 的 人 数 ( 现 有 − 原 有 ) = 原 有 的 × λ 新增的人数(现有-原有)=原有的 \times \lambda新增的人数(现有−原有)=原有的×λ,即, X! G1 r* C! f, o
    , \3 r; N' r' Z2 Y: m
    * S7 M4 Q% x3 h
    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
    6 R7 m; Y& @% e4 v6 g1 z一开始的感染人数为i 0 i_0i ( Y7 l& E+ N, B
    0
    % k# a5 l% p- p' F/ y- U/ z​        8 X# g7 a# G) E, Z5 ?  T
    9 s/ x! R) [) d! @0 T# {8 b* Q/ \
    i ( 0 ) = i 0 i(0)=i_0i(0)=i
    3 g! E5 E* o, [  `% _4 G, _6 t0
    / I( K( r% @- {4 B​        ; K+ e1 ]2 \) U; s/ m( G; Z

    4 o  \1 Q( z+ j" {1 g+ B7 e解微分方程可以得到
    & A+ V- `0 p' D+ |; V! wi ( t ) = i 0 e λ t i(t)=i_0e^{\lambda t}i(t)=i
    1 s* P0 L3 R  j7 m* G; t0
    * N% F4 W; E: U​       
    ! i. Y" I$ ~% l: T2 f e % b2 ^7 i& A) U0 T; a. g
    λt. A2 X! R' h! I5 C2 C5 {
    ! R- f7 j" [! S  n% a
    所以可以可到当λ → ∞ \lambda \rightarrow \infinλ→∞时i ( t ) → ∞ i(t) \rightarrow \infini(t)→∞
    & V* {+ m% u0 A" m4 l7 c5 E+ }) A当然这是不可能的,因为我们考虑的因素太少了,首先一个是,若有效接触的是病人,则不能使病人数增加,所以必须区分已感染者(病人)和未感染者(健康人)看模型二来解决这个问题
    ! k. l- q. m" D3 V: x0 U; v( t. J2 g* C, }! D9 A( w9 i+ B/ v* M
    9 |' A& P! E! m
    模型二
    5 c% g- l- l! O1 z; t4 k假设:
    ( S5 Y7 D9 w- \! c; o
    1 ]5 }7 y1 r9 b  e% K6 }
    - K% E( B. B2 M' P' _
    将人群分为两类:易感染者(Susceptible,健康人)和已感染者(Infective, 病人).4 z- x5 j- z4 J1 I
    总人数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$ i  Y) y' G( @4 {+ O1 c  ?
    每个病人每天有效接触人数为λ \lambdaλ(日接触率),且使接触的健康人致病.
    8 N0 Z4 T" v2 v2 r" k. }! x建模:  Y' F  S  P3 v& J* k. C/ b
    每天新增的总人数为原有的人数乘以每个人可以传染的健康的人数,再乘Δ t \Delta tΔt" o% v- m! Y. y
    $ ]! i) |( F) N+ G
    * i. t0 N% P/ @9 n% G$ B$ K6 {
    Δ t \Delta tΔt除过去,两遍N约分得到下面,
    2 q3 o% A! O% i0 t& {6 V7 M. n' h' B) ~" Z; f4 t- z

    ' v: q$ D8 H% x+ V, m$ }; QMATLAB解一下这个微分方程5 n8 L) e) |; n
    4 R6 a8 o5 a0 e  {' {

    % x" P) x. Y5 S9 W& X* `6 j* Oy=dsolve('Dy=n*y*(1-y)','t');. k% l! b, B+ x( v# r4 R

    # M% _0 n4 S5 B& M2 u( O9 ?
    - j# u3 ^1 e1 T1 z* s7 P/ s
    y =
    , X2 @! J! F8 v5 S- `* { -1/(exp(C1 - n*t) - 1)
    0 R2 J; L+ E$ P& j! H                      0: h, w7 k! p% x. ]  ~! u- w1 y
                          1
    8 o( W; `+ R9 e3 p2 L1/ `7 K+ ]" X1 b# a3 N) o" r1 {
    2' }+ l& Q0 x, w7 R- p; X- T; c1 n
    38 r8 ~1 ?) b3 J' Y  p# H. l8 J
    4# E- _! |  o3 w* z& j
    50 a! I* T- ?2 T4 C" l+ [7 ^3 l5 I
    6
    2 c' [  _' k1 d写规范点就是这个函数
    % }) L. l9 E% Z
    1 k9 p2 R6 n$ a$ k) h. G& d8 ?. x

    / d! L& g+ C6 Z9 }1 _" Z函数图像大致为
    ' U) I1 g3 ?4 J% _) O2 {
    8 i* a. h+ ^' a" D+ m5 A4 h

    5 R+ t8 O3 b; {7 ^2 Z9 h可以看出t = t m t=t_mt=t - j+ e% A6 Y& Z
    m7 Z1 C" Z4 J9 q0 Y9 Q; C& g1 l' J
    ​        * Q  l9 l& ]: |, @/ P" O
    时这里图像的斜率有个最大值,其也就是传染的最快的时候,即传染病的高潮时刻,当然t m t_mt
    0 X9 v+ f' G! Lm
    ( t! ~' k. g% M" i+ N8 n​       
    . o0 v1 ]! I& _2 C4 p* z* V 是可以求出来的
    1 R# ~& ?0 Y4 x( O# U, _
    ; y/ o  V! z5 n

    & R8 W+ f7 Q3 {& H! |0 X再看原式,当t → ∞ t\rightarrow \infint→∞时i → 1 i\rightarrow 1i→1: R! `' y+ Q6 N6 M6 f: h3 m; S& s
    病人的比例为1,当然这也是不可能的,因为我们还没有考虑有没有可能治愈,看模型三' h0 K3 G. b% R  p* i+ c1 |) Q

    ) z- @9 y; K4 q# @! c

    : \  @4 o2 |" P+ u3 |模型三
    / i( Z4 b1 K. T) U; W3 M# ^假设:
    0 X6 w! R/ a& E3 T* L* q3 a+ f8 }6 K. N1 B) h! `6 D+ a" Y
    8 e9 Y1 \! [0 I7 ]
    传染病无免疫性如伤风、痢疾等——病人治愈成为健康人,健康人可再次被感染。
    # D3 [3 C" p  k  T  K3 J& M病人每天治愈的比例为μ \muμ (日治愈率),1 μ \frac{1}{\mu} ; Q4 H7 n. \. X3 u* V, E# ]: q
    μ2 o* Y: c0 B% o
    1/ T7 w/ t! t* Y
    ​        * R9 {) R& `7 u( ], L3 o
    为感染期,7 {( O( W# |  r# r( Z5 o8 e% y% o. X
    模型
    ) `. c: K' W9 K( L) s9 q1 J7 e+ k6 |* @这是减去了治愈人数之后的新增人数9 f# T6 `5 j$ j' u' P

    , T  K  X, L& o/ S! f3 c
    . T5 c# T* ~, P: o
    5 @3 w; H( `. A3 y. K' g  A4 K& B
    . i# r5 D! z" f$ d0 w5 U& ~
    σ \sigmaσ 为一个感染期内每个病人的有效接触人数,称为接触数: ~5 Z0 ^" p5 m) M! }( H
    * W5 U- K' ~5 ~5 F0 i
    " T6 o' d8 ]7 K4 L" ^$ k
    可以画出上面的图形分析下
    6 ~$ I" W5 I# Z1 a& o0 L# f# B0 A# E! D5 s/ Z- U" N- A

    ' C8 u0 {3 s2 |2 c+ I+ H对上面的公式进行分析,可以得到,当i = 1 − 1 σ i=1-\frac{1}{\sigma}i=1− 2 _8 @* @1 G, u5 P/ P; {2 P: g+ H3 l9 @( D
    σ+ z6 A) A& x$ k8 }
    1* e  ?( ?5 Z. B8 ]
    ​        ; F% D/ _: J4 _
    时,i ii对t的导数为0这也就到了i ii的最大值;当0 < i < 1 − 1 σ 0<i<1-\frac{1}{\sigma}0<i<1−
    3 Q) g- H: W5 f; L8 d. pσ
      p) Q" C4 N6 u0 w* c. e$ O' p( B* B1
    0 E. R. N4 _) E) g( R2 D1 \" i​       
    ( e4 Q! m" U( ^& G+ 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−
    & m) a+ U, o* R, x8 z, Y/ Oσ& e  X3 V7 P9 d. P/ [
    1
    3 r0 a8 D/ n" [* |3 J2 a% Y1 a; C​        1 \7 K" y' S# \% S* c" x: }
    ,d i / d t < 0 di/dt<0di/dt<0,i是单调递减的。
    $ \$ M7 Y) C1 ]2 k, Q
    8 ]3 v! J' B4 f5 B% M

    ( O. F( f$ _9 C/ g6 K当然我们也可以画出i ii随t的函数图像
    ! Q# H, P3 B8 t5 x6 e0 O. K
    . P+ z) O4 K) X% R% v
    7 V0 l9 B( d( ~! m3 R* w8 s4 s
    先看红线,若初始条件i 0 > 1 − 1 σ i_0>1-\frac{1}{\sigma}i
    6 M/ o9 I" g$ V( Y0
    + |: u4 G" b1 @0 }​        , r6 o5 l6 e) E9 j
    >1− , @* ?7 C+ ]5 U' h1 V
    σ5 F: R, Q0 _# B: l$ i7 R
    1
    4 U  _2 n, v% Q. t2 w​       
    ( D3 t: |! z" ?. Q: n% g7 Z% m( f d i / d t < 0 di/dt<0di/dt<0,i就是单调递减的,% _  ]( p$ @: I% N: b
    若若初始条件i 0 < 1 − 1 σ i_0<1-\frac{1}{\sigma}i 7 |) }" K, J8 e' j1 V" Q4 C
    0
    1 x) |4 t$ Y# y/ ~; {) Q​        + G& l. x1 i4 c$ j
    <1−
    7 @1 ~4 L1 y2 f; ?4 Lσ
    - ^$ L( v9 _8 O, f" f; s1- W( ?- v7 S* ^$ A3 ]
    ​        ! `" O; o( B4 P) a
    ,i就是递增的,可以看到i对t的导数图像有一个最大值,下面的黑线就有一个增加速率最快的一个值,按S形曲线增长- a8 \5 C9 v+ I" J' R. w7 b7 j( n
    ; r! Q" V% z4 e2 K% d; o$ h, c
    / w* o' S4 ^) W. b/ b$ N$ x, Y
    σ = < 1 \sigma =<1σ=<1时d i / d t < 0 di/dt<0di/dt<0 i肯定是单调下降的,最终降到0; K9 `' Y" n, H8 _# A
    1 y# k  A3 P- W  }* Z0 u
    ; W" `/ X  T4 p2 E" U  P
    $ V4 b8 B6 r6 n" U# Q7 m% c6 m7 Q  r

    # ?. d9 B7 {6 G综上:
    & y- Z/ V$ B& Z5 l, ^- A: c3 \8 f想让患病者越来越少,σ \sigmaσ必须小于等于1,即感染期内有效接触使健康者感染的人数不超过原有的病人数.- g  c2 W; `0 C) P0 {" ^! n2 w
    + C2 x6 i- \4 t8 d, x5 a, S2 I

    0 L: x0 U. Y1 D2 d; J$ y% n9 u$ [% e- y这里我们分析的是感染之后还能感染的情况,但有些病毒感染之后会在体内生成抗体,就不会再被感染了,下面我们分析这种情况。
    - P3 q& _+ s& Y- z  _- }$ {( E8 r  @. P' S: p$ A

    * c6 _! V+ o: j$ M8 Y( a$ J模型四 SIR模型
    ) ~  @$ @( \. s/ u( |SIR模型是常见的一种描述传染病传播的数学模型,其基本假设是将人群分为以下三类:, r- i; M) z# O  }; |
    2 d: j5 T) x  j

    & h, q7 W; h3 C; Z' J1 易感人群(Susceptible):指未得病者,但缺乏免疫能力,与感病者接触后容易受到感染。5 ^: B" F4 U2 ~" N

    ! w1 c2 e! r, }7 L: b

    % o& k+ v1 V. w$ y/ `- J- S! F' I2 感染人群(Infective):指染上传染病的人,他可以传播给易感人群。" }! H& O1 S) }" D5 ?4 S  `
    # O6 L8 K) m! L. P' |

    ) v1 J+ w* K8 A- n6 c3 移除人群(Removed):被移出系统的人。因病愈(具有免疫力)或死亡的人。这部分人不再参与感染和被感染过程。) C" D* o4 R: \5 x4 \; Y! W- E
    , i# H5 {- P! c# [+ Y; t; R3 _
    * U8 R: x+ d, e) s6 L, p
    假设:
    1 n, w  n) J+ Y8 J) t1 M3 F
    : ?% X; H5 X, y* _- u

      v; G& q9 N& t3 o% d* G5 C7 E传染病有免疫性如天花、麻疹等——病人治愈后移出感染系统,称移出者(Removed).
    ) Y2 h) H3 S5 h4 N# b) c: }1 p总人数N不变,健康人、病人和移出者的比例分别为s ( t ) , i ( t ) , r ( t ) s(t), i(t), r(t)s(t),i(t),r(t).
    4 Z# [# k9 j% Q: U1 t病人的日接触率为λ \lambdaλ , 日治愈率为μ \muμ, 接触数 σ = λ μ \sigma=\frac{\lambda}{\mu}σ=
    - `. b& `" `8 |) yμ
    9 _; K: O+ f4 R* n6 U7 Sλ7 _+ a) I+ p2 {" }( u+ d
    ​        ) B  g( E7 z" ~+ Q: o( Z$ ~

    4 K6 v3 {9 B- |) n6 V$ P建模:
    ; J" @0 c9 W: G2 ~. }s ( t ) + i ( t ) + r ( t ) = 1 s(t)+ i(t)+ r(t)=1s(t)+i(t)+r(t)=11 x6 `( J% d0 F( I) F" ~
    这个就是病人减去治愈的人,和上一个模型是一样的
    4 B3 B8 `) \% z' D
    2 o7 N8 x3 D& l1 S) w/ s

    " B% u! A- ?( `3 f3 ^% ~6 `- Z因为有治愈后是有免疫性的,所以可能被感染的总人数要减少,减去移除者就是
    $ v/ m! \$ n: v3 j6 Q' z  b" S9 o6 J4 Q

    ; j4 `) A+ f2 l- a, l; m将上式化简为:- o. ]1 B9 a: v! `! O, l8 I7 f; h

    ) \; ?. L* p. j% \! c# n2 S

    ; x" b5 n: V) x* x- si 0 + s 0 ≈ 1 i_0+s_0\approx 1i 1 i0 p+ {: S: v7 P" R
    0
    ) }/ L7 x7 a- g& v# y​        1 k; w/ C8 e0 X0 `! u# G. G  M
    +s   r; y* M3 a4 p6 F$ r  q
    0
    ' v5 l' E1 u0 a​        4 K0 O7 x' e: ]# p
    ≈1(通常r ( 0 ) = r 0 r(0)=r_0r(0)=r . R5 y0 U9 F$ @8 ^( S+ k/ }6 D
    0
    & {% I( o4 O, Z​       
    7 `6 j9 A/ c" T& z! ? 很小)
    ; F( t- w4 L  i& H' Z0 i3 K4 U
    - w4 _2 f7 Z8 y: m. [# c% R

    3 Q. d' x( I+ G# T1 D; b关于i(t) , s(t) 的非线性微分方程组,没有解析解,只能通过数值计算得到s(t), i(t), r(t)的曲线,下面来看下曲线的数值解的MATLAB程序: m: }. g/ e8 n
    8 O/ e1 n* V- i3 @4 c) Q& v
    " _8 o; q4 |7 |/ \" p! j
    这里我们先设λ = 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 " Q/ b9 N! H% P9 t: K/ ^
    0
    9 y8 i, W: c0 r3 N​        ( Q9 T7 o, B7 }* ]6 A  ^& h- o
    =0.01,s : _4 A" Y3 c3 l1 a
    0( D. f& Z+ @+ Y* ?& j
    ​        & e, A+ g! `7 I4 s0 n  E
    =0.99
    2 K* Z9 Z6 `( f也就是平均一个病人人传染一个正常人,治愈率为0.5;开始的病人比例为0.01,正常人为0.99,设没有天生带有病毒抗体的人,所以r 0 = 0 r_0=0r
    7 k: v3 D/ `9 d; X3 [  a0
      z/ x. b( p4 |​        0 ^; G  f5 Z& d
    =0,之后若果病人被治愈,则具有抗体了,有抗体的人为:r = 1 − i − s r=1-i-sr=1−i−s
    7 S! H' J! K: z
    5 R/ x4 e8 g! s( L( l1 `, N# z- x

    ( ?! u/ P& J- `ts=0:40;6 g* `" k6 p0 U: m) m  G1 X2 j
    x0=[0.01, 0.99];
    5 l; B# x5 x! Q[t,x]=ode45('ill',ts,x0);
    ; o6 l, a( U2 dr=1-x(:,1)-x(:,2);' p+ x" E& |9 C4 l# Y
    plot(t,x(:,1),t,x(:,2),ts,r),grid" m) t8 Z- g+ v3 K
    legend('i(t)','s(t)','r(t)')
    1 ?/ p4 F5 E# V5 M! O9 k, o+ J8 J1 x9 @. F3 T3 [

    5 ^( W; k- w+ Xfunction y=ill( t,x)4 \+ M  N  ?4 Z( R4 O
    a=1;
    ( _( _5 L. F2 `& V9 y* Sb=0.5;
    8 G) N/ ^, Q) t: e# y: u1 Uy=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];% d" @! N& O9 I* ]& m
    1
    " n9 i1 ]3 R# A8 K2
    2 z9 G7 R7 i1 U3 v2 j' _' ^3' @/ M9 X7 e- G
    4( b6 Y4 n" Q' K6 O" c+ E
    5
    ! O1 P( [$ S, `# _1 \  |6
    9 F( u, F& l' s2 ^, C: K2 W+ |) C' U7
    ) u, f( C0 g7 K1 \8 l8
    1 n$ y# Z3 h+ Y: p/ a: k; L" a9* f+ I' @" \/ _: d# T+ n
    10
    5 H0 M! p: \1 h5 Q$ v6 ]7 l" z( h11
    3 d* a" k( A, O- c$ p/ I% W5 x" O9 M9 I- c0 D

    ( u/ f: k- F2 p) e# v可以看出:s(t)单调减,r(t)单调增,都趋于稳定, i(t)先增后减趋于0.7 K! y3 ^( s& n& T4 C
    结果分析" m8 w9 A, N$ _" D0 W5 C: O- x$ U0 B
    先回顾一下参数. r0 [7 X3 Q: t* L/ G
    接 触 率 λ ; 治 愈 率 μ ; 1 / μ   平 均 传 染 期 ( 病 人 治 愈 所 需 平 均 时 间 ) ; σ = λ / μ   接 触 数 ( 感 染 期 内 每 个 病 人 有 效 接 触 人 数 ) 接触率 \lambda;治愈率 \mu ; 1/ \mu~平均传染期 (病人治愈所需平均时间);\sigma =\lambda/\mu~接触数 (感染期内每个病人有效接触人数)接触率λ;治愈率μ;1/μ 平均传染期(病人治愈所需平均时间);σ=λ/μ 接触数(感染期内每个病人有效接触人数)
    8 f, T* ?3 y2 F. o可以分析出:
    " V+ N) `% ~/ H  ^0 n5 x5 `: m; L0 D

    , m: H7 O/ C1 ^0 W/ T) v# K随着卫生健康思想水平高,接触率λ \lambdaλ变小2 |5 N$ A, [& u4 ?/ L" ]- J! S8 S
    随着医疗水平的提高,治愈率μ \muμ增大. O/ i. P5 W9 M( L
    接触数σ = λ / μ \sigma =\lambda/\muσ=λ/μ减小——有助于控制传播.
    ! S* r1 G. }, u我们可以试试稍微减少一下λ \lambdaλ,增大μ \muμ,来看下效果! d; @" N* m% o: @+ v* \

    # |: q+ j  ~$ z( q# ~+ ~8 S

    ; M. _6 w) l1 @; p8 m; Ets=0:40;' `* Q7 b0 D% _  p/ Y+ c. B
    x0=[0.01, 0.99];
    ; {  \8 V, B8 y0 F[t,x]=ode45('ill',ts,x0);  N) y( d' c6 _0 g
    r=1-x(:,1)-x(:,2);) b( K8 [, T# F
    plot(t,x(:,1),t,x(:,2),ts,r),grid
    . s& q( M" a, Xlegend('i(t)','s(t)','r(t)')
    ( O0 c) H1 z! D$ `% x* O' c/ Y) t. T4 Z$ d2 F

    0 u* D# o" E& I2 w9 O8 @function y=ill( t,x)
    $ w0 i% N& Q5 ~' K4 l; oa=0.8;: X3 Y8 X$ Q; s" v4 T
    b=0.6;7 \3 g6 A2 t, V8 p/ g% O0 g
    y=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];2 j! c0 D6 m: w5 a& ?7 {! R
    1
    / |. E6 U: E: Q28 |: z3 Z; K9 G; w- T* V
    3" `- y: _6 a4 C) a
    4
    . p9 o; U2 ]3 `& e5
    & E0 o7 |) k% e7 Y4 k6# w% k/ y& X: Y
    75 f8 g  x6 s" ^  T) w* N
    8
    3 u' i% [0 I7 L5 R0 n9) E7 X* U2 T7 i7 O) J+ C0 d
    10
    5 F# z( T; n* v+ X11* Q* V. s2 ^. T+ X
    0 L% A5 u* V/ y! \( U8 ^8 o5 Q. ^
    3 k  v2 h% Z, h& X
    综上我们可以得出结论:想要减少传染病的传播,我们就要在接触数σ \sigmaσ上下功夫。& b* t/ w; S  H
    0 A. m+ j, r" R
    " ~. e# J2 l1 y& I& W
    实战建模
    : n/ b- p5 {  f& f* h数据处理
    ( N# p, p9 a2 b3 I9 _0 e
    / u' X1 G4 Y5 O' N( l
    / I" f$ w! f$ q" }( E8 G
    首先,我用python爬虫爬取了丁香医生官方数据,一共5534条数据 特征包括感染、死亡、治愈的总数,当日感染、死亡、治愈新增,疑似病例,时间,省份等14个特征/ [! K2 o3 N, ^

    * i3 S2 s8 }# }- E% Y6 q
    : R1 Z% B' _! c1 H  J3 G5 u. `: _

    # }7 b2 S* x' P" T
    5 n4 M' w% b7 A+ e# `9 L: n) K
    然后用python进行数据提取,提取了较为典型的湖北省的数据作为我的参考依据
      a" [) i; S  A9 {5 @3 z
    " r3 M5 b6 M& @+ ], e" o0 O
    % b9 S0 l5 G; @6 P

    " L% {8 V" u, h( q' ^$ P

    " k  G! E& f: `. d# z1 {& X然后用python对数据进行清洗,提取出了患病总数,现存患者总数,死亡总数,治愈总数,时间,省份这几个特征
    4 R9 s  g/ T0 ^* m7 i+ K$ \/ P1 g' l+ ~8 U8 n+ I
    # M( `! J5 \+ U9 `7 Q" X& M
    对日期格式进行修改,值保留月和日,并与死亡人数的位置交换3 E  w( D- U8 v& U
    0 w4 J1 {5 Y; X' [% x

      F3 {! }8 D# A& O% Y这里我用python对提取的四个特征分别进行了数据分析(主要包括计算最值,平均值等,),并把1.20日作为第一天,7.02日作为最后一天也就是第165天,做了可视化可视化处理。! z3 x4 x7 M6 Z+ Y
    感染人数示意图( _. ~: q; x+ O" m9 G$ \5 L
    * ?' ?# z& v% A. a( f. ~
    ' X3 F+ j$ c& q% m
    治愈人数示意图
    * }0 d& {7 h- b4 Y1 m1 d; z' A2 c. A4 V% G/ J# ]
    " D# M9 v7 l9 }9 p7 r
    * n) n1 ^& U: v

    / U" y! O) ?( {0 h现存患者数量图8 _# \% \1 R  `+ [
    ( V/ q5 }7 A' T! f2 U
    3 m7 p6 n4 @2 A9 R
    死亡人数示意图" U1 ]; h5 V% t2 M

    1 p3 ^- k# `( I3 d6 w3 X: L
    ; @! V7 ?' f+ M9 r9 Y* N

    , v$ X+ `& v; D
    9 ~* r9 c8 m) i/ `1 S; V
    经过上面的图片与describe数据分析,我们发现有一天是异常的,患者多出了平时的十倍左右,经过查阅资料,这天因加强了检测标准,所以增多了很多。为了避免这个数据的影响我们选择将这一天删去(或者用平均数或中位数代替也可)* ?) C" M, Q8 X" S# i& @* K' Z: ?
    将上面清理过的数据存放到csv文件中0 G% F' [4 b+ p( i' t7 P  n6 Y) J) v. g
    2 Q2 W9 Z$ Q5 ~

      T& a* c! [. K3 L模型建立# v' n1 }3 S$ U' Z1 U
    模型假设" C; n- d; W8 ]5 w# x2 p6 q
    经过上面数据的分析,我们大体可以进行如下假设:+ ?& P& F% X. ^) M; x
    1.由于不存在封闭情况,考虑开放体系。
    6 c/ ?/ z$ _# u/ ^7 y' i# d$ y2.目前数据以天为单位发布,因此不考虑连续变化情况,只考虑离散的方程。
    & H$ w6 J0 N$ c5 K  H/ A9 h' i# s3 @3.新型冠状病毒的治愈人数和死亡人数相对较 小,因此只考虑 Susceptible(易感)和 Infected(感染) 两类人群。设易感人群总数为N
    % D6 I# R  G# C# O# \0 N& E3 o4.经专家鉴定新冠病毒患者治愈后至少六个月之内不会再被感染,所以设治愈后移出易感人群。3 E: S- B) o$ g% g
    5.设每个病人每天有效接触人数为 λ \lambdaλ(日接触率),且使接触的健康人致病.) A6 V. P2 n- X- y/ H+ n( h
    6.设病人每天治愈的比例为 μ \muμ(日治愈率)1 |7 ?$ q! C' J  p+ `4 o
    7.时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t).
    . U) ]1 l" Z" J# S! ?) J( `
    4 b5 _$ Q* D: A- D$ c8 J5 p7 n3 M' S

    : D$ i+ _4 m/ l$ s. h模型一
    6 Q# K+ [" G2 k% w$ k8 ?
    " S  K$ x: r* b2 C8 u' m. A  {
    ( h1 {- K. u7 E6 H) m0 p+ h7 u
    分析可以得到移出者r(t)=治愈人数+死亡人数
    ; E  w9 E4 d: [/ f- B- j  A通过python数据处理,我们算出了r(t)的值,并将其可视化
    2 |! ]; K* C8 Q; j9 C" ?
    4 ]. J/ k1 t1 {! U% r" i

    ; J! J+ i7 n( g7 K; M9 Q8 t0 s; C  Z

    ) u9 E% Z& x7 e8 {8 W+ }我用MATLAB对其进行了拟合,拟合图像为
    " n+ J. d2 R7 r' N5 r  v7 w1 l
    ( Q/ V! N0 u  b( ?

    8 u6 u7 P9 ~1 J) {- X' d
    : `+ y+ [; t1 ^  V' H, m4 y  B

    / {, T* v# L9 R6 o% y" J2 M( ?
    - }5 G9 W  e: _# K7 F" m+ Z
    % q0 f5 d+ Y: C' u
    分析可以得到患者 i(t)=患病总数-移出者  o7 U4 {$ H( a+ F5 r% B8 x
    可以通过csv文件的currentConfirmedCount 直接获得i(t)数据,当然也可以通过 i(t)=confirmedCountv - r(t)获得,对此我也做了可视化展示
    - r* O( x5 Q; ]
    " |5 K) j2 b: M! d. |4 k

    7 X) T% x- N6 n5 K  W通过MATLAB程序对其进行拟合,可以得到r(t)的函数图像大致为) P6 ?! T, L8 V% c% ~0 M& v( n
    . p) ^9 U& K6 f, h% B3 _/ ~6 L
    2 B& S. U: t/ T5 f4 F

    % M8 j8 S: m( h' |) I! c

    " t& a9 h- H5 d9 a1 M6 ~  p" n5 s3 z$ d+ o
    ( t( |" Z& W- W
    为了方便,利于公式推导,我们先设时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t). 所以有5 G* A3 ~2 K8 z: M, \  ~6 H

    0 F/ H6 N8 |8 {
    # B  o4 X  W: \, \; \  d3 P4 E: O# m; R
    可以推导出每日新增病例的表达式
    " X$ ^" U: @, j& u& M5 x, ?; @0 S' T$ a7 \7 M  s4 u0 |$ M
    : r4 I/ Q( n% u

    " j* {. N# s" j$ p) o. @' ]
    , \" s, u. L7 K4 {( [
    7 b; i- d! n' z+ i9 B
    # p6 z6 V$ t1 r; h+ N
    由以上两个公式可以推导出以下两个微分方程
    . o8 T5 O& f- L- e* P2 o1 J" i$ @
    2 L( \4 p1 F& G

    ' ]! a$ A: @1 ?% K& X
    3 Q# L6 a0 {4 }0 }% Y( i. k
    ! g" Q0 L5 w$ Z7 J3 F/ r- K1 N, L
    可以知道初值
    & o* @+ c9 D9 \" p: Ti ( 0 ) = i 0 . s ( 0 ) = s 0 i(0)=i_0.s(0)=s_0i(0)=i 1 d1 N) o) r/ ^3 X% I0 N  A7 s
    0
    ; _3 M  n2 u% p/ t% q​        * o  \. \( d7 H0 H/ _
    .s(0)=s
    6 z) f% `' x+ Z5 Y9 m8 V04 K6 {/ y  p8 r0 u; X& k
    ​        4 y3 S. a0 V. a  o5 x

    3 ^+ x" b' S- l0 O因为一开始治愈的和死亡的肯定很少,所以r0可以看为0,于是就有:4 ?$ a4 `( L" g% F: [
    i 0 + s 0 = 1 i_0+s_0=1i
      f% g; i! Y' O0 H7 Y3 w& N; A# j7 D* C- ?0
    ! W1 \2 `) F) I" ~( @# I) U​        ) V( f# m. t/ N2 z
    +s ( x# b& @  s. n9 w
    02 `8 ?6 E- q: `; b% J4 q) B
    ​        9 M! D$ D% E0 k6 `% V
    =1/ X* \2 G: e4 F
    通过解以上微分方程我们可以根据经验假设λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)的值分别为1和0.5(也就是每个患者可能使1个正常人患病,患者可能有0.5的概率被治愈);由于一开始患者肯定比正常人少很多,所以我们设i0=0.01,s0=0.99。对其求解可以得到s(t), i(t), r(t),的变化图像
    ' v4 C- x, u, \
    # A' e( j  h6 ]5 O; k
    2 w) A6 _! T- J1 }- u9 F; d; ?3 s7 n7 v

    8 W* |* h# z' [* I# v: O
    1 [9 U2 U4 @7 t
    MATLAB程序如下
    0 t2 s7 Q( _; U! L- U6 Jts=0:40;& Y& [0 j9 d; W- P3 G
    x0=[0.01, 0.99];
    6 Y4 b1 m" n: {# E[t,x]=ode45(‘ill’,ts,x0);3 t4 S5 }/ [4 z. f& A5 P* c. T
    r=1-x(:,1)-x(:,2);8 ?, A& Y# |+ \  K  P" ?( G$ v
    plot(t,x(:,1),t,x(:,2),ts,r,ts,x(:,1)/x(:,2))
    # `8 K+ ], ^. N* w2 l3 hlegend(‘i(t)’,‘s(t)’,‘r(t)’)
    0 C5 B2 x1 z! {4 F; s! G5 o$ g) Y. \) v

    8 }, B4 x2 ~' J3 Z0 D, Zfunction y=ill( t,x)
    ' @& u# @, D9 B( E: M1 ia=1;
    : M+ X/ B9 {' V* M' e' B9 [7 ib=0.5;
    # S3 |1 P5 D& K; E5 Ey=[ax(1)x(2)-bx(1);-ax(1)*x(2)];
    & t' \: v4 e$ Z4 O& H
    / p: B" L) [' R! k7 s

    & `+ r. E6 P! G( X' o1 c6 @7 f结果分析:患病人数肯定有个高潮,但之后高潮就会减弱,并逐步降低为0。随着医疗卫生条件的不断提升,患者的 λ \lambdaλ(日接触率)肯定降低,μ \muμ (日治愈率)肯定上升,所以我们可以把λ \lambdaλ调一点为0.8,μ \muμ调高一点为0.6,可以得到以下趋势图。所以应对传染病很关键的一点是我们要提高医疗卫生条件
    8 E  C" S6 W9 K( ]# z9 O- p
    - n" Q6 O  X9 r! ]# X
    6 l- U; u" g1 P5 N/ M
    , y9 K4 Z, y, k8 _9 ?6 O) h. V% M
    模型二
    - M, h5 M3 @/ v  y5 b. l
    3 ~9 Z1 Q6 F: J- a- c# ~! u
    5 ^* w3 _9 q/ L+ F
    实际上,λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)都是随着时间变化的,这里我们设s(t), i(t), r(t) 为第t天健康人、病人、移除者(病愈与死亡之和)的数量, s(t)+ i(t)+r(t)=N..$ f3 p8 ~! {8 l! L1 w3 M' [
    (t), (t) ~第t天感染率, 移除率(治愈率与死亡率之和)
    ' f) X: c& g. k0 `有 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)
    / q- I4 k8 n4 }7 l因为s远大于i, r,s(t)视为常数,所以有
    ( s  F: j" k8 o8 B3 z! |5 |+ i1 k) e2 R" r& Y
    ! w6 ]& H% ^- C
    4 U9 v) {; f1 q( f9 b: U9 U5 D# {

    4 r% B/ ?0 p* f+ J/ M) |7 @取差分近似导数
    ( ^5 J. v4 {* ]3 }: j! S5 _6 \5 F) X$ a8 B. `& r! J6 h0 d

    : }, g, f/ `* O( L( a( \. ?0 J1 }  C) B2 z. a7 E

    ! S) f9 J8 }1 Z- Y* w) B我们可以先用真实数据对(t)进行展示并进行拟合
    ; |1 u4 Z1 Q2 y# i' {" ^, v0 \" V, Z6 w7 I* o9 e
    7 i" ]8 S- X' y1 J
    / L  {- D  |7 D5 T$ T- ~: A' p
    . u& ^$ l; l* n+ G) @0 c" h/ w
    当然同样的方法对(t)进行拟合
    # A( |/ [5 {" S* p
    * {" Q" f& f1 ]
    # ^" b1 M8 C  P7 ~- `) Z
    做不出来了,好难,光这些东西就弄了四天,到了数学建模国赛得多难多累啊,哎,让我这个小白手足无措。毕竟还没有正规的培训,这个模型等期末考完试一定好好做做!!!* h( S# i. _4 T
    冲国奖4 G3 G$ q3 _0 L2 ~6 g& B
    冲国奖
    " X* r) H, h3 M* f# M冲国奖
    ( V2 Y$ L0 y; C————————————————
    0 `1 `9 S/ _2 Z$ J版权声明:本文为CSDN博主「小白不白嘿嘿嘿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    ' j/ F" _2 g3 ]+ O原文链接:https://blog.csdn.net/weixin_45755332/article/details/107094630. _+ [' L: o% d9 d# d0 c

    0 K4 v% K6 {, m" n& q8 A: f/ b/ G
    : t. h' b2 h8 s7 l( p+ p! s/ f5 P
    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-8-4 12:01 , Processed in 0.592906 second(s), 51 queries .

    回顶部