QQ登录

只需要一步,快速开始

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

    8 G9 Z; N5 v$ G: k5 i, x9 @数学建模之传染病SIR模型(新冠真实数据)
    - ?" f+ m3 M1 [. Y传染病模型的基本问题
      x. @2 P: ?9 Q0 T! d9 t; N% l描述传染病的传播过程: L8 q4 X0 D2 Q* i
    分析受感染人数的变化规律
    , |% ?8 k! P0 M$ `- u0 G" e# A预报传染病高潮到来的时刻* X  d, W$ O% u/ F
    预防传染病蔓延的手段! B2 T/ d8 p' F/ M! X
    按照传播过程的一般规律用机理分析方法建立模型
    ! ~2 J( Z* _& i$ `. @5 A7 N注:我们这里是介绍数学医学领域中基本的传染病模型。不从医学角度分析各种传染病的特殊机理,按照传播过程的规律建立微分方程模型.% j. O& d1 Q/ {6 r, Q
    , g9 Z9 K4 z, C( C- B, n- f

    ) h8 r) ?# P" Z  r4 E8 D: ^建立模型9 n; D, i/ Q4 U* M( p8 N  n
    模型一
    7 b( Z3 Y  i7 Q% d+ ~" g8 H7 d假设:( `+ S' \8 z( P, G9 d
    6 @8 x' q, b& M8 e
    8 z* y. U4 a) _; k3 v4 Z6 Z, c& e
    设已知感染人数为i ( t ) i(t)i(t)(病人数量随时间变化)
    # z& i9 l4 K7 Q* {$ _' i6 ~设每个病人(单位时间)每天有效接触(足以使人治病)人数为λ \lambdaλ/ s+ v" M) I+ l4 U
    模型:9 A1 h* B8 b% U5 c* u
    单位时间Δ t \Delta{t}Δt内,新 增 的 人 数 ( 现 有 − 原 有 ) = 原 有 的 × λ 新增的人数(现有-原有)=原有的 \times \lambda新增的人数(现有−原有)=原有的×λ,即7 ^6 W1 S4 o8 `4 }1 ^) N% i

    " e. d2 a- w0 g, B: e
    2 A- p& b- p1 {% z3 l& w+ ]4 Q% w& O
    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
    " I" s& k1 {; m% M7 y7 H  T一开始的感染人数为i 0 i_0i
    / n6 H1 N/ ^; ^3 W6 L+ B2 |5 u4 C0# \# `& e9 u+ R/ c( ?' @/ \# p
    ​        ( \6 u: ]4 y1 h: e  _; f# H

    $ _& G$ ~. k$ v  i- Ei ( 0 ) = i 0 i(0)=i_0i(0)=i
    ; d* l3 {# E% r0
    + S: o5 }4 E# ~- v​       
    ! S% H8 w' A2 Z& m9 o 2 S6 [6 n. G% `9 y* v
    解微分方程可以得到: w. k3 h$ n. F( x' |% `, W
    i ( t ) = i 0 e λ t i(t)=i_0e^{\lambda t}i(t)=i
    ; U2 f& I5 ?6 _0
    + F0 n6 r7 ?% r: p- v9 `​       
    : w5 V8 s; t% D+ d2 O! G$ f6 v e 2 }  D) \6 `/ [& V/ S! V+ N
    λt$ Z2 {" w+ L  b& C- L# u

    1 x' K) s3 W$ a! X7 [3 ^所以可以可到当λ → ∞ \lambda \rightarrow \infinλ→∞时i ( t ) → ∞ i(t) \rightarrow \infini(t)→∞) Y; N' M) U# h3 `+ |
    当然这是不可能的,因为我们考虑的因素太少了,首先一个是,若有效接触的是病人,则不能使病人数增加,所以必须区分已感染者(病人)和未感染者(健康人)看模型二来解决这个问题
    7 b% ?$ _  G) }1 y0 z+ U
    7 e2 H. L( q  ?! E
    . J6 b/ G$ e( V
    模型二
    & T9 l/ g+ Z2 E2 Z5 {7 [' y假设:! M$ ]) c$ A% m. F( Y* r
    : `$ M0 a1 `4 o, _
    , d  Y$ p7 R( j! X
    将人群分为两类:易感染者(Susceptible,健康人)和已感染者(Infective, 病人).
    ! x6 u# D+ \. F+ w/ u总人数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)=14 g- l9 k  t+ n) q8 J  w, H
    每个病人每天有效接触人数为λ \lambdaλ(日接触率),且使接触的健康人致病.2 w0 _1 N1 R0 K. V; p  [
    建模:, E% G0 N6 |6 n7 m8 A3 \
    每天新增的总人数为原有的人数乘以每个人可以传染的健康的人数,再乘Δ t \Delta tΔt
    2 P& t; g4 m) M* Z4 Q7 l# n) C4 \' J
    ! L8 u9 ]" ?/ ]' ^' ^
    Δ t \Delta tΔt除过去,两遍N约分得到下面,! p7 H$ n$ g( u3 G/ @  E( y# e
    + k* ~9 }6 Y2 X: ?6 l" b2 f2 |
    + ?6 p# k; y6 a7 W
    MATLAB解一下这个微分方程
    ( J! s3 b9 R8 C) B/ ~7 ?: d' N1 T
    4 d6 F% c; ?, y. l6 ?
    y=dsolve('Dy=n*y*(1-y)','t');! V/ D+ P2 ^8 }. C' I
    - ~4 O" E' r4 B
    ) o; g& `* m) q
    y =
    , \9 M/ s; l( o2 W$ _* P% p7 B8 N1 j- I -1/(exp(C1 - n*t) - 1)
    5 i+ x* W0 c5 ?, U                      0
    $ t2 l  T5 r/ Y7 _9 _                      1
    8 M3 |$ f! g0 D8 y+ l2 o; @" R18 \, h9 z1 B- b1 L) R" [
    2
    $ @  D2 G8 o9 r$ ]$ n6 g/ g3; E4 k/ E" q  w, w5 B: {
    4
    1 L" P9 e; C6 j, f+ `5
    . |- s  ]+ o2 Y6 B* E( `6
    % \7 a$ w1 c- w; [/ `2 t写规范点就是这个函数
    & \. B% l5 g7 x8 t3 D! a% u. q' w4 A& N

    7 R) q) a' l, h, @, U4 `5 c函数图像大致为" i( n+ J! M+ w

    1 S( ?1 n) y7 Q$ p( Y; Q' F

    3 g, D$ i' w+ c0 L可以看出t = t m t=t_mt=t 9 c0 q1 }5 X0 Y  o
    m: }/ ~3 O) u+ x( ^: h
    ​       
    $ q" y1 D& l% M& {& J 时这里图像的斜率有个最大值,其也就是传染的最快的时候,即传染病的高潮时刻,当然t m t_mt ) Z, a; b1 m- f( U" e% N
    m
    # X4 i, V/ j. {! y​        ; f- z' S5 J, Q2 m
    是可以求出来的4 g+ J- K6 N+ Q- Z

    + J1 \; D! D: f: K

    & L/ e/ T" G! M) R, ?再看原式,当t → ∞ t\rightarrow \infint→∞时i → 1 i\rightarrow 1i→1( L: x( z6 e( r; W
    病人的比例为1,当然这也是不可能的,因为我们还没有考虑有没有可能治愈,看模型三
    ' w+ O8 ~- w$ ?; q8 N' h! N# _( D- s- z! x" ?; m0 F  U( A$ c) O

    % e6 D4 h5 s* C; d模型三( B' u' c! f/ x' a7 w( _4 }
    假设:) w; F, l( ^6 |! B* E' n1 i. _$ \% H. B

    1 x7 ^- {; D# ~/ s1 e5 \4 V. e, m
    ! r. I8 {5 b+ q' s
    传染病无免疫性如伤风、痢疾等——病人治愈成为健康人,健康人可再次被感染。
    1 G/ b) @: M0 Q! v; v5 r! y# c病人每天治愈的比例为μ \muμ (日治愈率),1 μ \frac{1}{\mu} ' t( \  a3 W$ Y1 `
    μ
    & t; d0 G' n1 C3 q% s1
    . G% d7 p+ I1 a! r- C3 _​       
      T/ l  E: Y8 u7 d- Q 为感染期,
    . D9 N* n/ C' [$ n+ A1 b模型% c, e$ B( l& c
    这是减去了治愈人数之后的新增人数
    ; [* [$ s, W% b  H6 A: y" Y3 t. X2 H. g. w( O. {2 D

    ( d; M$ W( X; ^. U- Z) T& D: A+ l7 Y) T! y* q3 }

    : u2 ]) z6 c9 C. J; Kσ \sigmaσ 为一个感染期内每个病人的有效接触人数,称为接触数
    8 S! P( q( |; K7 n4 ~
    * d# c0 T3 U7 F: {; \

      B+ U2 b$ \: }$ L) \4 U& T5 w可以画出上面的图形分析下
    9 w) k0 @* Y5 d9 D1 C/ v" Y! s
    + C; S. D8 p* n" b- n
    3 e* f" r$ A' q: r  I
    对上面的公式进行分析,可以得到,当i = 1 − 1 σ i=1-\frac{1}{\sigma}i=1−
    - e6 }5 @; T5 I- e  U! Pσ! f, n! F* N0 ^: _; D9 D! p: F
    1" N' F4 K- `' Z1 C& q# `% T  z9 _
    ​        1 y: q6 T! k. K/ `4 v9 b
    时,i ii对t的导数为0这也就到了i ii的最大值;当0 < i < 1 − 1 σ 0<i<1-\frac{1}{\sigma}0<i<1−
    7 ~" e5 L9 g* e' J" C; rσ
    . z& r% x) M0 f6 S; b. m. E1+ p, t: ]: z2 n! U7 ~
    ​       
    # E5 I+ p3 w0 J# q( d  L 时,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− & Y1 j9 [0 K- }0 D
    σ
    + E. ?* |5 G( `1
    ( S1 E" r: \7 r, u! r​       
    ; h- E: q  n) C0 q2 ? ,d i / d t < 0 di/dt<0di/dt<0,i是单调递减的。9 _4 ^7 }. l# w$ u1 H, A) I
    % S2 H+ D+ i  i; x3 }1 v
    4 p5 \* o6 }1 |6 E1 P& ^2 t& R
    当然我们也可以画出i ii随t的函数图像
    . C  V/ k  C; x4 Y
    $ X2 r& [3 ?( @

    + x) h: Z) `$ o$ B$ r4 ]9 O先看红线,若初始条件i 0 > 1 − 1 σ i_0>1-\frac{1}{\sigma}i # A, r# S- R$ z; c" ]
    0
    5 Z: l1 J) a/ \* Z9 i​       
    . X6 }  G, x6 S2 G >1− * l# Z# n/ A$ g
    σ0 U& _6 Y# C4 p* X. S2 I
    1
    $ t: }5 d7 f0 }& ^: H% u& @​        7 t, g1 k8 \$ h
    d i / d t < 0 di/dt<0di/dt<0,i就是单调递减的,7 y6 p/ u  c- K# E3 @: {# H
    若若初始条件i 0 < 1 − 1 σ i_0<1-\frac{1}{\sigma}i
    ; u6 F' w' A  X0" y+ Y5 \( D" H  H6 W
    ​        7 W1 R7 s3 j( }2 u
    <1−
    , N- N% k8 x6 j0 U9 n& \( P2 i# gσ' R: r; d. J5 B; U9 i
    1
    3 N! F. x) G: |5 m2 J  n8 j​       
    ' e: E! ^% @" @! R$ N, @; H7 e ,i就是递增的,可以看到i对t的导数图像有一个最大值,下面的黑线就有一个增加速率最快的一个值,按S形曲线增长
    ' M0 u2 ~8 v; Y% B2 r/ O, v) X) u  X% Y5 o$ P' H% L1 m

    / `$ r! V7 X4 C. Y! t$ F0 }) Iσ = < 1 \sigma =<1σ=<1时d i / d t < 0 di/dt<0di/dt<0 i肯定是单调下降的,最终降到0/ ~7 N/ O0 ~2 ~" W
    6 R* R# ?! l# {6 }* t
      z  i$ G$ y0 l4 A

    3 ]0 y" I" I! c  t  o: m+ ^" ]
    3 R2 B( I( T# W) h
    综上:
    1 A& g! \+ z9 Q3 z! [/ n8 ]$ D6 e& c想让患病者越来越少,σ \sigmaσ必须小于等于1,即感染期内有效接触使健康者感染的人数不超过原有的病人数.
    ' s- ~% K: I$ x0 T* X$ I1 Y; y1 m% t

    , k) E8 D7 K1 q8 d% b, r这里我们分析的是感染之后还能感染的情况,但有些病毒感染之后会在体内生成抗体,就不会再被感染了,下面我们分析这种情况。
    ; E" e. D6 M- l% _  O
    7 {8 e! `* E+ G! j

    ) V* s& |. v7 A' Y( T0 z模型四 SIR模型
    ! X; y0 C- `7 ?+ ~- S( \SIR模型是常见的一种描述传染病传播的数学模型,其基本假设是将人群分为以下三类:
    ( K; l1 A' C  x% x0 V6 H3 `. V; d( v/ G* Z' ^# H/ ^

    2 C) x6 O% W+ O5 j" C: [- q1 易感人群(Susceptible):指未得病者,但缺乏免疫能力,与感病者接触后容易受到感染。
    . N, n+ r6 G9 `# P( E+ {
    9 D( q3 j$ f( s5 L0 s4 C" ?

    1 W+ y4 `, o, U! ]2 感染人群(Infective):指染上传染病的人,他可以传播给易感人群。9 G8 s% O2 u& O! I: q

      I, o$ w( @* p

    8 E# |1 c( L+ y: r3 移除人群(Removed):被移出系统的人。因病愈(具有免疫力)或死亡的人。这部分人不再参与感染和被感染过程。
    7 R+ ?8 ?% Q/ F# G% j1 c5 W2 \% g! Y. b! z

    ( l. z- h% R$ r& O) X假设:) u; @# m3 J9 l5 P+ v8 N4 `$ X  K: q

    5 {( {3 S7 @( ~! O; h* d6 d

    7 t5 `: R: U8 q% p- |4 q传染病有免疫性如天花、麻疹等——病人治愈后移出感染系统,称移出者(Removed).
    1 y  V  \3 S$ @) F+ m! S3 t' {: j- L总人数N不变,健康人、病人和移出者的比例分别为s ( t ) , i ( t ) , r ( t ) s(t), i(t), r(t)s(t),i(t),r(t).0 B+ E8 t- T7 M+ Q
    病人的日接触率为λ \lambdaλ , 日治愈率为μ \muμ, 接触数 σ = λ μ \sigma=\frac{\lambda}{\mu}σ=
    $ W4 f6 t/ o5 |1 A2 D* dμ% L% b+ T. ]9 Q3 T7 q
    λ( _0 f) p2 ~' g
    ​       
    + @2 z/ f1 C0 ^ , m+ L& j) [( N7 F
    建模:
    3 {+ I9 `) _- J+ V* D; W5 N; I5 h; ]3 P2 gs ( t ) + i ( t ) + r ( t ) = 1 s(t)+ i(t)+ r(t)=1s(t)+i(t)+r(t)=1: t1 g& c) o) t; `  e
    这个就是病人减去治愈的人,和上一个模型是一样的
    1 {3 B/ f" X% D
    8 w( g; M9 U2 J; g
    / ^0 f6 C+ F: q' K  B1 T
    因为有治愈后是有免疫性的,所以可能被感染的总人数要减少,减去移除者就是* k3 C0 f$ d$ K- g
    6 @6 t9 v7 y. d* g8 O) t! y1 A
    ; U, E! |" ]0 z- Y$ I0 V/ Y5 i
    将上式化简为:& u4 l8 C1 n9 N- X
    / @. J; e. D* f  b+ J' o3 C+ Q5 [2 \

    % L4 F6 i' j( ]' D/ {0 bi 0 + s 0 ≈ 1 i_0+s_0\approx 1i   Q; K$ I2 {& j. ~
    0# X4 A+ [5 I3 _8 v2 a
    ​        8 r% Q) s: S# R4 l! `' c# @
    +s + U1 s" O7 m; N
    00 K" k( c1 {0 P" U( v0 V+ Z
    ​       
    + X7 H# F3 N* | ≈1(通常r ( 0 ) = r 0 r(0)=r_0r(0)=r ! s( q1 `' q3 h' I$ j
    0
    ) k7 ]) G. D& O  f* R" f​       
    - p; \3 V( J! O  V1 K 很小)% ~; H0 q& q3 p4 T6 `
    + w' ?& y7 {' ~8 _8 E3 ?) C
    ) s+ `5 |4 G# s' p( g2 E9 C
    关于i(t) , s(t) 的非线性微分方程组,没有解析解,只能通过数值计算得到s(t), i(t), r(t)的曲线,下面来看下曲线的数值解的MATLAB程序2 l3 n1 ~% T' u3 h. a8 z
    + s1 M/ T/ F" H) s; E- e* {( A

    ( _+ `9 J3 K( I% n; a& i6 @这里我们先设λ = 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
    2 ?$ I  a% C( Q% X; i# [09 M0 ]" m! A& K, b8 Q& g& w
    ​       
      ~- S% P9 [9 _  J/ D- q  N  } =0.01,s ( M6 D, v! S# q& q
    0
    8 y3 t2 O% U# z6 o$ M​       
    ' N: X, |3 ~; ?- b; }; F( n# b =0.992 u$ x  ^" v- d' x2 U$ Z
    也就是平均一个病人人传染一个正常人,治愈率为0.5;开始的病人比例为0.01,正常人为0.99,设没有天生带有病毒抗体的人,所以r 0 = 0 r_0=0r ' t: G: j6 o5 E4 b' N
    0
    6 B* i" J& p9 q) s5 t# k2 v9 F! c: Y* y​        . K9 I  T0 e, B$ }
    =0,之后若果病人被治愈,则具有抗体了,有抗体的人为:r = 1 − i − s r=1-i-sr=1−i−s
    : K$ h2 s. j. t2 F) {, }* T' k* b/ [
    4 ~+ d9 l8 j) _6 g- T* ?# X/ Q

    : M( D1 A& Q+ \) j" ^% H( Gts=0:40;- R) x' H  h6 v2 g/ M2 b
    x0=[0.01, 0.99];
    3 i6 p7 }. I) k1 ~[t,x]=ode45('ill',ts,x0);
    + k+ [* ^/ W6 u$ Wr=1-x(:,1)-x(:,2);& H3 }) L5 `5 O% ?: a
    plot(t,x(:,1),t,x(:,2),ts,r),grid8 }- ^& Z* g' m4 j
    legend('i(t)','s(t)','r(t)')0 V; v$ Y1 t0 \  d

    # h  {- f. _/ m+ ?$ k' N/ I  D& M

    ! r( [! k9 i4 C- l& n8 V% Hfunction y=ill( t,x); ?$ g: [/ D- V
    a=1;8 j6 f8 n8 O) v' _5 r  q
    b=0.5;
    * S* U6 h# M& ~5 B2 _7 Z/ yy=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];* v: u" r$ A( J& @4 g8 b
    17 }! x! h4 d5 ^/ o  C$ n# s
    2+ c- g: P9 A, k# j
    3
    8 |8 R; p3 q+ q0 y- D43 H! q0 {% O6 k  a) ?/ f9 c
    5
      w; V/ V" f, G8 u4 X* y8 m6
    2 ~/ ]3 i/ c# {+ h, B7% y3 O- F! |, `$ r
    8
    1 X! Q4 K* ^( g9
    0 X$ x7 g, a5 T9 x* w/ W10
    - V& O( J. s. [11$ O0 g( G; \5 I( f
    + ^# R: k4 a, W- S! m2 D% y

    7 I3 M9 @( Z3 F# T可以看出:s(t)单调减,r(t)单调增,都趋于稳定, i(t)先增后减趋于0.
    & o! ?; [8 r6 N结果分析  r  x  H/ m4 e' |
    先回顾一下参数
    7 O6 }) o( T6 m5 U  @接 触 率 λ ; 治 愈 率 μ ; 1 / μ   平 均 传 染 期 ( 病 人 治 愈 所 需 平 均 时 间 ) ; σ = λ / μ   接 触 数 ( 感 染 期 内 每 个 病 人 有 效 接 触 人 数 ) 接触率 \lambda;治愈率 \mu ; 1/ \mu~平均传染期 (病人治愈所需平均时间);\sigma =\lambda/\mu~接触数 (感染期内每个病人有效接触人数)接触率λ;治愈率μ;1/μ 平均传染期(病人治愈所需平均时间);σ=λ/μ 接触数(感染期内每个病人有效接触人数)
    3 p; I; H0 i6 q8 _) q可以分析出:1 B6 e" w: u2 F/ j8 l5 }3 o
    # z: l1 a7 L" k% q6 m% X5 T
    " Z" f! J0 s( {2 Z1 ]
    随着卫生健康思想水平高,接触率λ \lambdaλ变小( B5 V' L$ N- `( |1 b
    随着医疗水平的提高,治愈率μ \muμ增大
    ' V0 j+ `. e: e/ ~" V: b  \接触数σ = λ / μ \sigma =\lambda/\muσ=λ/μ减小——有助于控制传播.( H) L# W$ h! }, g2 S2 J
    我们可以试试稍微减少一下λ \lambdaλ,增大μ \muμ,来看下效果- @+ s4 _% q# v- _( q8 B& _$ Y. e. F

    0 V* H* Q. f# @* T9 Y

    ( I4 q4 n  o( i0 y4 B6 J$ E2 @ts=0:40;
    , y7 m4 o$ t* e" j% B! sx0=[0.01, 0.99];
    8 D! M! e  x5 V( v; A[t,x]=ode45('ill',ts,x0);
    # b) h! o% ?: }' r! {r=1-x(:,1)-x(:,2);
    ) k( M: U! [; I  L- y& d# D$ `) Mplot(t,x(:,1),t,x(:,2),ts,r),grid
    * n. W# J  X! c4 Zlegend('i(t)','s(t)','r(t)')( B4 I) F1 m3 u
    ; A* g2 v  x1 f3 d' i  \& p3 m" P
    ' C9 z0 h: H- G
    function y=ill( t,x)
    5 D  k: T2 c% B3 [a=0.8;& H2 I# I2 h8 |, u$ C- v; j
    b=0.6;& _  m* q7 N* R6 e0 U" }# C
    y=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];
    4 S1 `. s$ E$ K/ _4 \$ |: x1 Q* D1
    0 k2 q$ P% A( }2# K9 ^9 b# Z. A: V/ g2 W; L  Y4 p9 c
    3
    6 S  E9 y3 ]) o3 L; X% j- l8 g4
    $ {3 A* _4 S* L, n9 I5
    0 _5 G* e% {' O9 a, ^6
    % o& L3 E( \. ]! Z7 E79 l1 b6 L# z9 D) ]3 m9 L* [
    8
    1 g' B- j$ _. ^7 W1 }9: A* h0 D# `) y+ x& V/ y
    10* [. P) G6 p( P  p
    110 v' w! ?/ u' ]  s

    , _4 L0 z, U4 k9 J$ m) E

    1 ?# p0 b# W4 H* f# f: a. J1 U综上我们可以得出结论:想要减少传染病的传播,我们就要在接触数σ \sigmaσ上下功夫。
    ' r! ]3 x+ U+ S* w
    5 a7 y9 h* h9 T. `) G6 M) _% h
    % i  {5 _, R6 l: b, X( @
    实战建模. ]( O9 j; T! ?, M! W* O/ d: h# R' B
    数据处理; T/ d. `4 }* z, @. j1 @2 q  ~
    9 }9 z7 P1 ]$ W% Z. N, o2 f
    1 w0 W) G7 b; |( ?( n; f# y
    首先,我用python爬虫爬取了丁香医生官方数据,一共5534条数据 特征包括感染、死亡、治愈的总数,当日感染、死亡、治愈新增,疑似病例,时间,省份等14个特征; O! a7 h5 j" f- m3 U6 i
    8 w8 X. S" b/ f+ |' ~9 [5 G7 H  e& `
    2 E# X8 B7 X7 u4 u) M8 N4 ]( b

    # u" k4 y9 f5 e
    4 ]  x2 T  Y* e& Y6 r# ]
    然后用python进行数据提取,提取了较为典型的湖北省的数据作为我的参考依据, D3 n+ d: @% \/ x% @6 _

    ) x. y# ^8 q5 a5 G- w

    3 K! L* J1 s! r. c! c+ s7 b! O5 Q. C. }2 d4 P1 U2 y- z
    - K! c$ T8 C* n$ e8 P3 i; e
    然后用python对数据进行清洗,提取出了患病总数,现存患者总数,死亡总数,治愈总数,时间,省份这几个特征$ A4 z$ v  e. z  T) K9 Q: q
    ) W& l  S0 _2 |& m8 f
    , V  z" d9 f8 i6 ~9 l9 D9 F
    对日期格式进行修改,值保留月和日,并与死亡人数的位置交换
    $ I" E4 U( h( r" I7 l' U
    - ^: x& v& `$ k

    % C6 V2 U, q5 [3 e- @, B- j* E7 E这里我用python对提取的四个特征分别进行了数据分析(主要包括计算最值,平均值等,),并把1.20日作为第一天,7.02日作为最后一天也就是第165天,做了可视化可视化处理。
    8 v, O$ Z, w5 R5 C2 g感染人数示意图7 P. L+ a3 v) h) @, j6 u6 k$ a

    5 [5 C1 _5 o# m6 U

    0 T6 @: ?- ~" k8 T. L. D2 M治愈人数示意图: S2 [0 W3 w5 T" ~. K0 r

    ) A. x% {" f3 ~/ e$ N3 a1 t

    ) ~2 v) [8 O) j  V" B2 j3 K7 U" L, @3 ?3 k% e. Y' q9 Z
    / `) x) {. x1 U) _
    现存患者数量图$ S2 o0 a% U; ?. d  u1 V, M
    . J& j$ x; \; n

    0 O/ i# L  q1 V9 r0 _2 l5 V死亡人数示意图4 Z9 r. K8 }4 T- D- H9 s
    0 O7 p/ I5 v/ m- D' K

    7 J; d$ X$ P6 K- n5 ^6 ^, Z7 g* |" o6 x% h. k: J* d

    ! H9 s/ c5 ~. X经过上面的图片与describe数据分析,我们发现有一天是异常的,患者多出了平时的十倍左右,经过查阅资料,这天因加强了检测标准,所以增多了很多。为了避免这个数据的影响我们选择将这一天删去(或者用平均数或中位数代替也可)! W, f' g4 a3 O
    将上面清理过的数据存放到csv文件中
    " s$ `4 e+ h" p, E8 F* d: T  ^6 m  \. v0 k

    % d8 ]3 s$ @/ T0 W$ O模型建立' u+ w* e& `! U+ }3 g- T  S# `* m
    模型假设
    ; E2 G+ {$ G( h; P+ q经过上面数据的分析,我们大体可以进行如下假设:, [( J& ^- ?0 E1 L2 J$ O% X
    1.由于不存在封闭情况,考虑开放体系。
    ! I$ F3 t4 G; }* F2.目前数据以天为单位发布,因此不考虑连续变化情况,只考虑离散的方程。( {! G) {+ W/ t) @
    3.新型冠状病毒的治愈人数和死亡人数相对较 小,因此只考虑 Susceptible(易感)和 Infected(感染) 两类人群。设易感人群总数为N
    7 x: h9 Y( c' q8 e" G5 g  W7 Z' m% ~8 C4.经专家鉴定新冠病毒患者治愈后至少六个月之内不会再被感染,所以设治愈后移出易感人群。9 V3 G, |3 s1 u, V( e3 y, [
    5.设每个病人每天有效接触人数为 λ \lambdaλ(日接触率),且使接触的健康人致病.. e% T- N9 z# T& n' S
    6.设病人每天治愈的比例为 μ \muμ(日治愈率)
    ; E. x& P1 y+ l; v5 _' R7.时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t).
    * ~7 G* W8 y. N% F! `2 ^; X5 c* v8 b* L+ w$ g
    7 }2 i) z* b: b" K; i1 h
    模型一
    ! l  z9 G" C# ]0 w. |+ s1 j" }" A( c" f5 u
    ! |5 n2 q7 T! Z$ ~! S+ j
    分析可以得到移出者r(t)=治愈人数+死亡人数
    , |  B1 `* E% Y; e: f0 w通过python数据处理,我们算出了r(t)的值,并将其可视化, C4 \  P8 c+ x+ X! Z
    1 [; R% `2 T6 u

    5 L: k5 g" b2 A* m9 _' X- {3 n. G) G! c3 L% H+ t
    1 _* M* e* {2 s5 t, |
    我用MATLAB对其进行了拟合,拟合图像为
    & S3 n* _; h. h, G5 c3 L9 C7 I1 Q# k0 E0 a7 e9 E

    4 z' [: l/ R2 i. H* W
    " ]4 h% j+ C) E% e

    6 K" I7 r: h; `' ?- S$ I
    & b+ X; `8 p! @" U2 W2 Q  R
    & d1 w' O+ k8 b, c  q
    分析可以得到患者 i(t)=患病总数-移出者( `3 ], q+ v7 Q/ ?9 N
    可以通过csv文件的currentConfirmedCount 直接获得i(t)数据,当然也可以通过 i(t)=confirmedCountv - r(t)获得,对此我也做了可视化展示1 d/ X/ _6 y4 C

      X- \2 m! g! f6 r4 S

    , _4 b+ S; L# Q% Q4 @通过MATLAB程序对其进行拟合,可以得到r(t)的函数图像大致为( I& W6 K. r% c8 m, J
    4 A% w! [4 u# F8 Y0 D9 Q2 r& s
    7 `6 h2 t, E0 U. ]$ k9 u
    9 B6 X, ]6 K* Q

    " d: F. H( }4 @/ o. x* j9 R2 |) @# k$ ]( v3 w

    0 u# X7 }% ?* a' M# k  M* ~为了方便,利于公式推导,我们先设时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t). 所以有
    % C, n9 G0 I. S+ D* J4 l
    % [7 Q& S2 @2 V6 k
    : z0 e( ?2 l4 ?, b. `
    可以推导出每日新增病例的表达式
    0 i# P- E* x) i, m8 \# ]2 `7 G# u5 |0 D8 j3 x
      i) n8 O  a+ L/ S% C
    ) A3 @5 t/ b8 O! H% X

    1 u8 U. R* k0 h4 p1 Z
    6 k  g: \& O8 q* c: [

    4 U; ?$ X9 K5 {; f) u# n& y& X由以上两个公式可以推导出以下两个微分方程
    " E, Q7 |2 q# X& e
    5 [* P* }4 J3 l; U) v0 B! M  ~' o" u
    " y2 p. z* d- D0 J

    4 H4 f- p! R" R! n% V- ~, y5 @0 @

    ; Y2 V% o' ?( z可以知道初值3 k  U* U* N9 I8 ]3 S5 L
    i ( 0 ) = i 0 . s ( 0 ) = s 0 i(0)=i_0.s(0)=s_0i(0)=i " T& K% z7 k7 a/ W, g- f7 D
    0
    4 g. H1 d' e8 O​        & |. S& |! k4 T- I% w; u) q7 T% Z
    .s(0)=s : j& S  k: p% {0 N) W* b
    0# T+ r& S9 g5 u* H! z6 S5 _
    ​        % ~4 i% J8 I# \* `  t3 }' W
    / l9 B5 t8 Z( M: i0 D$ S
    因为一开始治愈的和死亡的肯定很少,所以r0可以看为0,于是就有:, O4 f6 T! q: @9 K2 L
    i 0 + s 0 = 1 i_0+s_0=1i
    " A+ c; Z: j5 S* T, X; y9 e' n9 C  P0( u' V4 \- i" D9 R. z* |# ?1 M
    ​       
    2 A; _% u; q3 f; {) B +s 8 p7 a1 o0 H0 O' D8 n3 R0 D; i1 K9 c
    0/ G! X8 Y) {% p
    ​        ( R  \" r( B0 Q0 K! y
    =15 z0 x# x( L0 T
    通过解以上微分方程我们可以根据经验假设λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)的值分别为1和0.5(也就是每个患者可能使1个正常人患病,患者可能有0.5的概率被治愈);由于一开始患者肯定比正常人少很多,所以我们设i0=0.01,s0=0.99。对其求解可以得到s(t), i(t), r(t),的变化图像; |( T" q+ ]- v& G2 \, f5 j

    0 c8 M+ x# `* a8 \+ Z
    3 g6 a* q0 `  a4 z+ e& P

    * q, q6 S6 q  e, M" u
    2 ^: \5 g$ @/ D0 H  ?
    MATLAB程序如下
    3 Y, p3 i5 ~: p+ F/ {& yts=0:40;
    ( W* C0 W1 Z+ n0 }4 Y2 a% O0 V: jx0=[0.01, 0.99];& h8 ^- q4 m- p) `4 m- }+ B
    [t,x]=ode45(‘ill’,ts,x0);+ m: _- K( o9 N. d9 ~1 l0 b
    r=1-x(:,1)-x(:,2);
    4 |5 _! Y0 G7 ~4 I2 ?plot(t,x(:,1),t,x(:,2),ts,r,ts,x(:,1)/x(:,2))
    7 F1 k3 f; a% E6 t0 j1 nlegend(‘i(t)’,‘s(t)’,‘r(t)’)
    * R) N2 B. S* \0 T1 B2 W* w; g" L. y; ?% v7 C8 Q
    $ J# A9 y0 s' W: y- x. W
    function y=ill( t,x)
    # F3 f5 u! ]+ O5 L# @" v: xa=1;
    & y9 l' j% T3 o1 y4 \b=0.5;2 I; A( |& M4 n4 Y+ c, g
    y=[ax(1)x(2)-bx(1);-ax(1)*x(2)];: C4 b2 m! d* {! g2 `* _  P4 J, L

    0 g- K% |) S! e3 f. V0 i  j

    & F) ^2 {6 Q4 s3 x. E4 N8 T结果分析:患病人数肯定有个高潮,但之后高潮就会减弱,并逐步降低为0。随着医疗卫生条件的不断提升,患者的 λ \lambdaλ(日接触率)肯定降低,μ \muμ (日治愈率)肯定上升,所以我们可以把λ \lambdaλ调一点为0.8,μ \muμ调高一点为0.6,可以得到以下趋势图。所以应对传染病很关键的一点是我们要提高医疗卫生条件- H4 P% m0 I& F3 h
    1 t; @4 j% S& _: A: ^

    & R/ n1 P# ?: X+ |% ~4 W( ^6 [, s; l4 f% E
    模型二8 \3 b1 f6 Q  N4 W
    : [( {% u1 o' M8 S5 |' T

    1 t  {' A$ |& H实际上,λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)都是随着时间变化的,这里我们设s(t), i(t), r(t) 为第t天健康人、病人、移除者(病愈与死亡之和)的数量, s(t)+ i(t)+r(t)=N../ g: S! Y8 d# ?7 L" c
    (t), (t) ~第t天感染率, 移除率(治愈率与死亡率之和)  _1 d4 n" @  Q2 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)
    / I. M" u4 f& X! g1 A9 k  p( T% n8 Z因为s远大于i, r,s(t)视为常数,所以有
    7 z# R: K3 f+ k, e# p8 t  _$ _6 z4 d- ]
    ' [9 D3 F4 L8 x1 K& U7 C
    + w6 c+ V: R1 H- z+ b. G

    ! W0 m1 w" w2 Q: e2 @取差分近似导数; J4 L, x% u6 _) K3 g* C

    " i, p: e' K& v: h2 r$ `/ E1 }. x

    % ]* ]3 B9 w( G/ E
    ! ?3 M. m, |1 N1 A9 q6 q1 v

    ' F/ E5 z' g5 r我们可以先用真实数据对(t)进行展示并进行拟合
      ^2 a) w  Q! w( F1 T5 t. ^% u; O6 Z
    3 @2 X! R5 t) \; `- j3 q' s
    1 k% m* Y5 e5 j2 h1 E  r$ ]5 h, t  N
    ) L3 b9 Z, y9 r7 Z* K2 Z3 S
    当然同样的方法对(t)进行拟合3 Q# ?# z. D! ^7 [2 T

    + A* g9 Q2 {1 N6 u/ |

    % S# z6 P9 x$ j; ~5 t+ f做不出来了,好难,光这些东西就弄了四天,到了数学建模国赛得多难多累啊,哎,让我这个小白手足无措。毕竟还没有正规的培训,这个模型等期末考完试一定好好做做!!!
    ' P" q8 v! B: H冲国奖
    & @$ X1 ^* e8 n; Q; n9 p$ ?冲国奖
    4 g. |# V+ r% R( b# k冲国奖$ m* L2 g% l8 m& E
    ————————————————
    ( D0 x% l% L2 ?8 c* u6 N1 T' a$ R版权声明:本文为CSDN博主「小白不白嘿嘿嘿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。# o! `7 @0 q6 N
    原文链接:https://blog.csdn.net/weixin_45755332/article/details/107094630: g* J+ |- K6 e9 Z
    5 T8 y; D4 v  A2 c

    3 V( _7 {2 C8 Z5 L3 l1 I( r) e
    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-22 23:31 , Processed in 0.395896 second(s), 52 queries .

    回顶部