QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5589|回复: 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
    ' s  M4 F3 J" {. ]
    数学建模之传染病SIR模型(新冠真实数据)
      X& {  ?- g+ ^8 O4 J$ N7 C5 X) S传染病模型的基本问题
    4 \& x2 B1 N0 S! J描述传染病的传播过程3 Y4 j7 \/ ]4 F! B1 W- V! H6 E7 J  j
    分析受感染人数的变化规律
    3 m0 E& j, a- s. _6 N/ v预报传染病高潮到来的时刻
    & b3 G2 ^4 k4 t; t/ m( O预防传染病蔓延的手段! v# E3 s9 ]0 m$ z  M
    按照传播过程的一般规律用机理分析方法建立模型
    ; V$ f4 J6 Y+ [4 O: w0 u' K7 z' g+ o注:我们这里是介绍数学医学领域中基本的传染病模型。不从医学角度分析各种传染病的特殊机理,按照传播过程的规律建立微分方程模型.
    7 H8 n5 l+ N( b" \% @1 i4 s- E- F( o* m

    ! W  u7 Z/ V% m$ u1 D6 V( J( V建立模型
    ( Q* r; Y6 K- u% f0 G0 w$ F模型一5 Q- _' i- b- W& W" U$ S+ [* R0 ^
    假设:6 e* B( F- k" U9 Y8 E3 u
    ! }0 _- ^# z; D0 W6 e% ?
      p4 p1 m7 J) m
    设已知感染人数为i ( t ) i(t)i(t)(病人数量随时间变化)
    4 w7 D; V2 B# I% f: b2 ^: Z: r设每个病人(单位时间)每天有效接触(足以使人治病)人数为λ \lambdaλ
    & j3 B+ d1 v  g模型:
    + S" x. H% i$ h8 d; T3 @& r1 ?单位时间Δ t \Delta{t}Δt内,新 增 的 人 数 ( 现 有 − 原 有 ) = 原 有 的 × λ 新增的人数(现有-原有)=原有的 \times \lambda新增的人数(现有−原有)=原有的×λ,即
    3 M1 f/ J+ ?  M/ y, p4 \3 d
    3 i, p3 x! y: j* N0 }+ b
    * C9 x% j0 z3 v4 d5 g1 [
    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
    4 Y; M8 p( o4 C7 y  |3 d% y) ?一开始的感染人数为i 0 i_0i : P+ F1 R2 g' |. S
    0
    ) {- X0 s1 W& p3 S- s' G​        / Z+ V& y8 o. f4 t
    + e* o) K0 `% z
    i ( 0 ) = i 0 i(0)=i_0i(0)=i
    2 _: ~" l" ?8 q2 f$ r" \0
    7 q: X/ ^. f' X, z​          G/ ?& r% d' `- [$ i; ]& L
    & S6 A7 Z! `8 h8 H" V% _/ |
    解微分方程可以得到2 F4 R& |  H; z" f, _6 P6 S, m- ^
    i ( t ) = i 0 e λ t i(t)=i_0e^{\lambda t}i(t)=i
    7 c" I6 ~, F6 W5 G0
    7 x* X: |% i5 u/ p​        1 Y2 r  D3 N6 [: I  \( l7 Z9 b1 o
    e
    9 \- C) |; y. P2 f; J' fλt: b" J8 K$ U3 V. R& S
    9 z4 |# O/ ?" U5 a5 r# c+ o! X& B
    所以可以可到当λ → ∞ \lambda \rightarrow \infinλ→∞时i ( t ) → ∞ i(t) \rightarrow \infini(t)→∞0 e( c5 ~. ^+ [
    当然这是不可能的,因为我们考虑的因素太少了,首先一个是,若有效接触的是病人,则不能使病人数增加,所以必须区分已感染者(病人)和未感染者(健康人)看模型二来解决这个问题
    ' ]/ t$ [1 _: Y4 u7 a- E  F4 L. ]/ Z4 F9 w

    0 V& r, \1 o! j* y模型二
    $ w4 ?7 [4 @! d假设:# \% j8 k( C; W( [& q

    . [+ x. b& ?% S! {1 p% L
    , W, i: n; B; L; L! n5 v1 A
    将人群分为两类:易感染者(Susceptible,健康人)和已感染者(Infective, 病人).0 v/ y5 g0 L, I+ L5 b& {' E
    总人数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
    9 w$ ?( ~8 e0 o7 z2 W0 v每个病人每天有效接触人数为λ \lambdaλ(日接触率),且使接触的健康人致病.
    $ i7 Y  `- A; }: V建模:
    8 _7 o) _$ I! J% D: P每天新增的总人数为原有的人数乘以每个人可以传染的健康的人数,再乘Δ t \Delta tΔt3 ?* {1 \. b2 b

    $ a) R; `0 d3 I1 \" q+ R
    . m5 M1 Y9 ^$ x! t& p# Q
    Δ t \Delta tΔt除过去,两遍N约分得到下面,
    8 }2 V* G$ l  `9 h& W) m) L" U5 N# i% s+ a, X. S+ M# j
    # g; |8 g5 {* C7 F, K' L
    MATLAB解一下这个微分方程
    # v8 q! ?/ v& y$ k! I& x; o) L$ Q6 B5 k5 S2 G9 o7 T

    $ A: t  g9 S5 i) g) Py=dsolve('Dy=n*y*(1-y)','t');1 \0 R' x7 }, V. j
    ( e7 u3 z5 M7 b1 V% H# L! a
    * B! P: I# B, X) \
    y =7 J% n" @9 K& n( w* ]3 C  M2 ]
    -1/(exp(C1 - n*t) - 1)0 T" I5 r# O6 d# ^; u% D! a# u% Q
                          04 x& }3 H5 c% m. {" @% H+ x
                          1
    + k& }7 d% n' w, {  W% H2 E1
    ' f% r7 Z1 g3 I4 o2
    ! ]( g; r3 f, s3 m/ ~3( W9 G" e4 \, V4 s
    42 p. g& }; K# N9 G. t( v; j
    5
    & l0 F! v+ C; a+ L" }" d8 g6! q( h5 T' {; W, h( i& d/ A8 q
    写规范点就是这个函数0 f) N; K6 k* N5 w0 h0 A1 U
    - p+ N4 b4 r8 c! {
    " A: P0 L1 l6 W+ x! H2 N
    函数图像大致为
    ) n0 `) _$ ]% y) C" d
      X' {% o* J; r: I2 @

    - d! M" g+ K1 V" ~* C: p可以看出t = t m t=t_mt=t
    % O* @# X$ n0 a  G% lm7 k  X% V( E% y0 s5 V# s
    ​       
    / Q' w' S# p/ K' a: F7 L' o; | 时这里图像的斜率有个最大值,其也就是传染的最快的时候,即传染病的高潮时刻,当然t m t_mt % E9 H5 z" N! E, C0 Z! o
    m
    1 u3 B$ l: I+ R& ?" a& y7 q​        5 t' u. H/ A' ~% u! c+ w
    是可以求出来的& q* g: @8 l3 A
    0 I/ D+ g8 h+ N% v: v' ^( ]% q2 m
    * j8 W4 X4 I( {9 U  L+ }7 d# W
    再看原式,当t → ∞ t\rightarrow \infint→∞时i → 1 i\rightarrow 1i→1
    & s8 p. y$ b- r8 e. `% L3 M病人的比例为1,当然这也是不可能的,因为我们还没有考虑有没有可能治愈,看模型三
    ) m! M& w2 [) ~* K5 k, b( k& {6 }4 S) o) h8 r# a
    5 G" S+ V0 ^" V. \# o
    模型三/ U9 e% R% |$ }- f" R% r  q
    假设:2 y, u8 g6 l' N# n: Y! g
    5 ~1 R6 i6 T' {: |
    # R% U" z  V7 C7 Q1 [5 Q6 g
    传染病无免疫性如伤风、痢疾等——病人治愈成为健康人,健康人可再次被感染。
    0 @! N) D1 s) O1 Q9 v% c病人每天治愈的比例为μ \muμ (日治愈率),1 μ \frac{1}{\mu}
    : Y' ?6 {. g+ h5 D  E9 {μ
    ) h# z. X, K5 p$ I. r1
    9 ]" j6 P3 s7 F4 g8 f/ f4 G​       
    ( I9 \, p4 I, {& ~ 为感染期,
    0 @& \& U% a7 K1 u模型
    , z1 z) S3 G8 o& T: }这是减去了治愈人数之后的新增人数4 w: t1 Z4 `% ^

    % Y8 T  ]% Q$ u2 H& O7 U
    2 F) @# d" R+ O3 s# Q
    - M' ~2 a9 B2 B' Z2 Q8 |  [" |0 {! H

    * r- w9 V  f+ s& r) M' |7 Hσ \sigmaσ 为一个感染期内每个病人的有效接触人数,称为接触数, T  W* a9 m7 Y0 S  Z0 |

    6 M. {; @: D) K% H8 m( L% q2 z
    ' v& Z. M7 [1 P! o; t( v2 i/ p
    可以画出上面的图形分析下
    1 K/ j! Q& o. G& ?3 s! Q; f& A
    ' w0 \/ V4 m; e! `. u
    * s) |+ v3 ^" e, w
    对上面的公式进行分析,可以得到,当i = 1 − 1 σ i=1-\frac{1}{\sigma}i=1−
    - v. l/ H) ]% y# Y  J& Dσ6 k" u% X4 S. G' a+ Z3 w$ _
    1
    0 r4 D- y8 r/ d0 d& k; ?" r​       
    9 v$ t0 A- l2 \! x' u% \% ]4 D 时,i ii对t的导数为0这也就到了i ii的最大值;当0 < i < 1 − 1 σ 0<i<1-\frac{1}{\sigma}0<i<1−
    + f+ {. a2 c& D- E3 v! Fσ
    ' t; m4 [' V: `1
    # h9 M2 v6 c- ^. J! T3 L# f% U​       
    ; Q1 n& m; C5 q* y/ D  ? 时,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− 1 O: a) q2 S9 r! z
    σ
    - L2 f0 X0 ]- w  E( ~1
    6 H3 S: i1 z6 i3 @8 |" J  Z​        ! W5 Y$ \% z- f& g) f- w
    ,d i / d t < 0 di/dt<0di/dt<0,i是单调递减的。- m# y7 p% @$ Z# Q8 v3 L
    0 [- Q/ z8 k; z% W" y- V) A

    % k1 L+ q& G5 w0 O+ m5 G当然我们也可以画出i ii随t的函数图像7 V3 @8 V8 Z8 x' C

    7 e9 C1 H5 D8 c
    5 h. Y! w4 d# ?3 j. |
    先看红线,若初始条件i 0 > 1 − 1 σ i_0>1-\frac{1}{\sigma}i ( Q* F* `) F: g0 x/ n) v$ W. g
    08 q* b: N4 s, _9 ^
    ​        # z6 W4 U1 c& p7 U$ T1 L. c3 A' q% y
    >1−
    ' T$ L0 k% P1 G% ^) y  ?σ! W2 o) O0 {* m7 L1 m- X, \6 g
    1
    , i4 V% [8 |3 d​        4 R0 y$ r! M9 Y7 k+ H$ e0 J  d" _
    d i / d t < 0 di/dt<0di/dt<0,i就是单调递减的,& r7 S- [' C  }
    若若初始条件i 0 < 1 − 1 σ i_0<1-\frac{1}{\sigma}i   S( X9 L+ T( N! A8 P
    0
    * B8 v7 u4 t  @6 K​       
    2 V: p) d% Z. z  M3 {1 s0 \8 c' I <1− 9 _5 t: X8 O6 C3 D- t+ o$ _" f. O
    σ: {- _5 Z. w' y0 H- Y% q
    1
    ( k( }, [1 `+ I6 H7 h, L, z" U​        - Y9 h- d! P  v
    ,i就是递增的,可以看到i对t的导数图像有一个最大值,下面的黑线就有一个增加速率最快的一个值,按S形曲线增长
    ; `- Y0 Y  E5 `5 w8 V7 m- _$ m8 U7 t9 [/ a2 ^

    8 S% E6 }6 }/ W$ T3 c# zσ = < 1 \sigma =<1σ=<1时d i / d t < 0 di/dt<0di/dt<0 i肯定是单调下降的,最终降到0
    6 ?: f" b* y. k- i" S$ V
    3 y, D8 K) G0 E& O( t9 K: p7 Y
    8 X0 p( C, S$ _) b1 D+ ?$ Z$ j$ G

    . E" L7 }4 l  N  }4 y+ s+ s
    0 e* [8 p: G2 H/ M( _
    综上:" `! h/ S0 ^  R: \) v' d
    想让患病者越来越少,σ \sigmaσ必须小于等于1,即感染期内有效接触使健康者感染的人数不超过原有的病人数." a( `6 U3 V, U3 }" H5 E

    . f6 `  r4 I3 J
    * s/ z0 e3 }# C! H: Y
    这里我们分析的是感染之后还能感染的情况,但有些病毒感染之后会在体内生成抗体,就不会再被感染了,下面我们分析这种情况。; u8 i7 N6 w6 L" ?, ~6 n7 r" g, W
    ; k4 x! V- F6 \$ ~) X7 Z& h

    : X% |$ v1 b+ h, W模型四 SIR模型
    : s  I1 H0 A8 k4 y, QSIR模型是常见的一种描述传染病传播的数学模型,其基本假设是将人群分为以下三类:0 Z3 S9 K9 v* b: ^! p3 p$ R8 D' r- {

    , `, r) V! A4 G, m/ B4 w/ g

    : {4 J9 s7 }, K5 i# i% k1 易感人群(Susceptible):指未得病者,但缺乏免疫能力,与感病者接触后容易受到感染。( J/ `: g, j. u# f
    6 a: u, ?; }# f) I( d& a
    ' [0 B' `. ~5 b- H! c" o# q" N
    2 感染人群(Infective):指染上传染病的人,他可以传播给易感人群。
    $ |, a9 z" s' ~0 _
    ' a  @8 b/ Y6 {  B* i5 F: s/ ]0 @

    + R  k" e7 A( f4 o8 f3 移除人群(Removed):被移出系统的人。因病愈(具有免疫力)或死亡的人。这部分人不再参与感染和被感染过程。
    . e9 [# {3 I5 ^$ y9 V" C* `# x+ M  {' m! a0 H& M9 s, @

    8 A9 c' d1 ~3 J+ m9 Z6 N" o假设:0 z- a2 m3 X3 i

    ! H2 q& z3 u) S2 p5 ]' {9 M
    : E% v9 ]2 |: ^4 R
    传染病有免疫性如天花、麻疹等——病人治愈后移出感染系统,称移出者(Removed).6 t; b2 f. f9 L
    总人数N不变,健康人、病人和移出者的比例分别为s ( t ) , i ( t ) , r ( t ) s(t), i(t), r(t)s(t),i(t),r(t).
    5 u. e0 \) t9 e: Y! [病人的日接触率为λ \lambdaλ , 日治愈率为μ \muμ, 接触数 σ = λ μ \sigma=\frac{\lambda}{\mu}σ= 3 x7 G2 ~2 f+ R* W$ G
    μ
    ) c+ L* z  w' ~+ R& J3 \- F, dλ+ k7 {) D/ m) G/ ~; W
    ​        + k  a) E0 y7 @7 Z4 C+ B

    ' [1 @0 k: Z, a& g建模:! Q( `8 g$ v  L: D
    s ( t ) + i ( t ) + r ( t ) = 1 s(t)+ i(t)+ r(t)=1s(t)+i(t)+r(t)=1$ ~) _$ I! p, W
    这个就是病人减去治愈的人,和上一个模型是一样的# }! x  v4 r% n
    ' J4 K  U; b# t1 {
    1 x; k: |0 y: x
    因为有治愈后是有免疫性的,所以可能被感染的总人数要减少,减去移除者就是
    ; F7 w/ }6 B: L; b' w. u7 t& D9 x; p; @
    ( Y1 i" J) R( a" O7 w3 @# ~
    将上式化简为:/ T8 e  |+ `, x2 `) w+ Q

    5 n; x  b( J0 p, r

    3 i9 g7 M7 M5 t8 o( Qi 0 + s 0 ≈ 1 i_0+s_0\approx 1i ; o) W' r7 Y* U7 a
    0
    9 j# ?. t# p0 m$ |& M9 Q3 h​       
    9 O% {; M2 g3 l4 y& ~. L# |! \/ K* Q +s
    7 M/ p7 z& P% s. K4 c0# y* h' \& W- E! g4 `
    ​        / t0 k- W- D) p$ ]5 j: Y
    ≈1(通常r ( 0 ) = r 0 r(0)=r_0r(0)=r # f; h) ~3 E  |. c1 Q; d( S
    0
    . F" J8 `& R8 {​       
    9 Y& r+ V( W. l9 p( K 很小)7 _: O+ j& w- y5 q
    . X, ?7 ]( }. |, I' j
    : x  F4 c1 M4 C0 D: F" Q
    关于i(t) , s(t) 的非线性微分方程组,没有解析解,只能通过数值计算得到s(t), i(t), r(t)的曲线,下面来看下曲线的数值解的MATLAB程序
    7 ^% |5 n+ @1 T% _
    7 _6 P/ Z; V4 n" o4 S

    " V; Y- R8 r1 P' ?1 [3 s这里我们先设λ = 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
    5 A! q$ r% C( G0
    + `9 T' [1 A" x( {1 P​        - ~! B9 \8 b4 u
    =0.01,s 8 U8 z( E6 N; h4 d: N1 b' G
    0
    - d. W- X8 m# G5 F: ?​        + A9 |, {' P. \4 f' D# o, u
    =0.991 p/ m+ T0 `* _) ?4 l
    也就是平均一个病人人传染一个正常人,治愈率为0.5;开始的病人比例为0.01,正常人为0.99,设没有天生带有病毒抗体的人,所以r 0 = 0 r_0=0r
    7 {- j8 J& x* V+ X; G9 G& J05 u4 k; d0 u# a0 O
    ​       
    ' A' o# ]( [  X$ ?0 { =0,之后若果病人被治愈,则具有抗体了,有抗体的人为:r = 1 − i − s r=1-i-sr=1−i−s/ e3 C0 p' H0 l6 C1 ^

    ) H( l8 @9 e$ H, h7 c' G

    ; f0 V8 b# F9 Y! ?7 n1 ~3 Gts=0:40;
    ( Y+ Z4 I. m$ t0 Tx0=[0.01, 0.99];
    + x) A2 Z2 Y8 ]9 \1 x[t,x]=ode45('ill',ts,x0);& |% L5 j) R1 e2 N; n7 l( Z
    r=1-x(:,1)-x(:,2);
    , o1 C$ q& Z$ J) ?plot(t,x(:,1),t,x(:,2),ts,r),grid6 S0 p; Y/ z( Z0 g# C
    legend('i(t)','s(t)','r(t)')
    ; M1 `0 v. e4 J7 H
    0 g, ]+ K- \) J6 ^4 e
    , W+ c; _6 N. k; B
    function y=ill( t,x)
    / X2 B8 C0 G" Q2 q3 G- ?  [a=1;
    , f' ^" S: k. j' V0 W" K9 r/ J0 ]6 Gb=0.5;; e- K! u9 }  K- I: H" D. }# w- K
    y=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];5 @2 \# w4 c8 B
    1& i% k* w7 U, E. H
    2
    0 d" k! J7 \  h( R3
      G; m# b/ C, v: T2 P41 o* \0 U9 i& o! D- B
    5( |# o- j+ V6 Q+ `; _( l; }3 C* F
    6
    $ G0 W. u9 E, ^% f1 e( B7* K3 u" m+ ?. [
    8
    ' b/ u7 u, g6 K98 K" v# a+ R0 c$ z5 |! p
    10
    5 v( q, n# ]* z5 k3 I# o110 Y( B3 V( X+ e& ]9 y

    - G8 U  h; f0 G2 ^
    # G7 H& S% ]1 A: N9 I- w
    可以看出:s(t)单调减,r(t)单调增,都趋于稳定, i(t)先增后减趋于0.2 V3 x& X& E# n+ J, b, A1 X4 y
    结果分析
    4 B9 e, T4 r, m; i' ^先回顾一下参数
    ) p$ ^) n% h8 e! k$ ]接 触 率 λ ; 治 愈 率 μ ; 1 / μ   平 均 传 染 期 ( 病 人 治 愈 所 需 平 均 时 间 ) ; σ = λ / μ   接 触 数 ( 感 染 期 内 每 个 病 人 有 效 接 触 人 数 ) 接触率 \lambda;治愈率 \mu ; 1/ \mu~平均传染期 (病人治愈所需平均时间);\sigma =\lambda/\mu~接触数 (感染期内每个病人有效接触人数)接触率λ;治愈率μ;1/μ 平均传染期(病人治愈所需平均时间);σ=λ/μ 接触数(感染期内每个病人有效接触人数); l% A) b; k# H' Q6 Q5 V
    可以分析出:- [: f- \4 Y- G4 v; @3 L* b

    * _  R8 G, }3 O4 r$ a. W
    ' y$ _+ z. ?" G! A. w& t5 t
    随着卫生健康思想水平高,接触率λ \lambdaλ变小
    1 p; q* M. k  {随着医疗水平的提高,治愈率μ \muμ增大
    3 [- J) [# O7 o; h接触数σ = λ / μ \sigma =\lambda/\muσ=λ/μ减小——有助于控制传播.
    / z- E& k/ H% B% e我们可以试试稍微减少一下λ \lambdaλ,增大μ \muμ,来看下效果
    3 n' ?* S( ?5 L* Q9 a
    ! u/ F* H" e3 w+ W2 A% A3 |; N9 y6 b
    ! v4 I7 F8 B1 [( F
    ts=0:40;0 y9 q; j5 w/ o0 Y
    x0=[0.01, 0.99];( n6 ^4 w  V* m0 n4 s$ y$ q
    [t,x]=ode45('ill',ts,x0);# n" s  ?4 S, n/ h0 m7 s2 I' f$ z8 q) k
    r=1-x(:,1)-x(:,2);
    & ^/ S6 L9 g5 `plot(t,x(:,1),t,x(:,2),ts,r),grid3 k& @' ~! F1 H3 Q# {1 S  [8 o
    legend('i(t)','s(t)','r(t)')
    2 T' c$ _; v' w1 z. K+ U6 R( L7 ~- U! R; v

    $ |& Y& }+ N: f5 r# B0 W. v6 }function y=ill( t,x)* G" V* |2 A7 g6 s; |
    a=0.8;
    6 Y2 ^5 U' F$ A1 X2 db=0.6;$ L- k8 P3 ]3 Z9 B' U
    y=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];
    ( d+ N/ `. O9 ~( r* S; {1
    6 L$ T" b, ^+ I- H& `0 B21 ^% [( G& f# g$ t, c
    3
    5 D; C. p8 m3 a) S44 c5 ^- [# }% \% ?" Z0 d
    5
    2 P% Z  Q# v, s& J! f5 L65 U' M! o) ?8 k
    7" @- q2 B; U: g2 Y% K2 t7 w
    8
    1 T" W. c  E4 W6 `9" x0 y; k+ w+ D! N- U& n1 U
    103 z8 b  f' ?4 m  d1 w
    11" c! s" n* o: _) d% L2 v

    6 v; v0 d- [; B( Z* Z; P$ p) @
    7 A: k" \- w7 J% ?8 b# E
    综上我们可以得出结论:想要减少传染病的传播,我们就要在接触数σ \sigmaσ上下功夫。
    1 d" o. L9 X7 W- Y) g8 V# m
    5 Y1 N) O. Y( U! `+ x2 Y
    9 _# O: b6 V; z( Y3 X  N% d
    实战建模/ x& f# N% D# z% Q( ~: x
    数据处理
    ( e7 O7 {; m: r$ E( E3 `/ T# `( [0 @5 {" s
    4 F4 a0 U) Q( m6 Q
    首先,我用python爬虫爬取了丁香医生官方数据,一共5534条数据 特征包括感染、死亡、治愈的总数,当日感染、死亡、治愈新增,疑似病例,时间,省份等14个特征( q. u! s* J( Z- }5 h
    , I3 S4 c7 m! w- `) S

    7 Y3 D3 H, w6 q) {9 s  @/ k2 Z3 O  G5 T5 y" ^

    ( z( e$ B( Q3 I8 l& x+ i然后用python进行数据提取,提取了较为典型的湖北省的数据作为我的参考依据
    ! C: R4 ]6 ~* ~& D# o9 V
    . R1 F; L$ }! N: _
    4 P) I+ |1 ^0 w! p2 Y' k( e

    & x% Q3 |' o1 o! _) a

    0 F2 e" d: E  W! A- R- v然后用python对数据进行清洗,提取出了患病总数,现存患者总数,死亡总数,治愈总数,时间,省份这几个特征
    ' |+ r1 V' S' K. L2 N
    0 J1 j5 S9 H6 i3 F

    + ]  w' r. _5 P% |对日期格式进行修改,值保留月和日,并与死亡人数的位置交换
    + ?; R- c( d/ |8 R. }
    . M1 s1 Q9 E3 M/ U4 q0 Z& b1 B8 }

    0 s# V7 `6 R/ T( ]- Z  s9 C7 I这里我用python对提取的四个特征分别进行了数据分析(主要包括计算最值,平均值等,),并把1.20日作为第一天,7.02日作为最后一天也就是第165天,做了可视化可视化处理。
    * }% Q8 M# f! K4 Q, Q# H% a感染人数示意图2 b, [* w9 A7 V: z

    # X4 l7 o8 W' H6 I, y1 O
    ; c7 L$ [3 Q2 d5 ]2 F4 x9 W( A
    治愈人数示意图# r7 {; H% y! O' t6 C

    $ q4 b$ _  K6 t" j1 C8 W3 F  [

    7 Z! z1 S, V! A2 |
    # w# @  `3 A# N7 z: z

    , O8 @5 s( q7 v现存患者数量图0 ?8 Y# O7 X) b' M: {3 X

    / U& J4 U- \0 @: V, M: o1 v+ Q9 O3 A

    2 Y8 N8 k6 J7 G$ z  E3 G# u* |/ Y死亡人数示意图  l% u7 V5 F3 I
    8 ~6 t2 n1 _6 _. P3 }  A# J

    8 i) D5 P& _- V7 L2 w
    ; v: o" ?/ O. I. V

    - I& B' z5 V3 z5 l. V- ]% U经过上面的图片与describe数据分析,我们发现有一天是异常的,患者多出了平时的十倍左右,经过查阅资料,这天因加强了检测标准,所以增多了很多。为了避免这个数据的影响我们选择将这一天删去(或者用平均数或中位数代替也可)
    8 o: K+ V6 H0 f. ~7 J6 U将上面清理过的数据存放到csv文件中
    # F* F6 q( ~. r
    ' D, O4 A7 R& a  m$ s9 F4 h

    + D- Z8 k2 u2 P) h$ J: v7 ?模型建立
    " ]! f* I- W7 }$ N: j# U模型假设9 @; |3 X" |6 H' J0 l* o" @3 g2 m: A
    经过上面数据的分析,我们大体可以进行如下假设:; L" G6 t/ o' H6 k
    1.由于不存在封闭情况,考虑开放体系。
    $ g5 D, q: ^" R# z- q  j% a$ _' |/ }2.目前数据以天为单位发布,因此不考虑连续变化情况,只考虑离散的方程。
      M4 H$ D; H- x& m' y$ P3.新型冠状病毒的治愈人数和死亡人数相对较 小,因此只考虑 Susceptible(易感)和 Infected(感染) 两类人群。设易感人群总数为N. z+ e  P  }: z6 V( _( X
    4.经专家鉴定新冠病毒患者治愈后至少六个月之内不会再被感染,所以设治愈后移出易感人群。( ~+ }* V2 s6 g( @  Z+ i1 A
    5.设每个病人每天有效接触人数为 λ \lambdaλ(日接触率),且使接触的健康人致病.
    8 h' A% c" A6 N; N- q7 C, m$ ]6.设病人每天治愈的比例为 μ \muμ(日治愈率)
    ) K  c6 W! z% d' f; m' k, e+ F7.时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t).; c, B* f6 O: E& A

    " i4 z0 ?8 w  Q
    . W! Z5 W0 D. E( P
    模型一2 x- ^0 _6 S2 J1 }8 x0 b
    0 g" t  k9 `9 [- j7 b9 X5 r

    1 Z. n5 r3 K- j+ M分析可以得到移出者r(t)=治愈人数+死亡人数
    + {0 F* n/ n/ g: q: N/ y通过python数据处理,我们算出了r(t)的值,并将其可视化
    ! q* z  _8 u$ a' u' A" t+ M8 `% n" W" r. A3 ?

    6 h  M+ h. V2 X) ^: ]- A: K8 r6 m! {+ \4 p2 s; y6 f7 O1 [

    2 W! d. g3 D; Y& ^7 s2 B. ~2 P4 l我用MATLAB对其进行了拟合,拟合图像为
    # ]9 D$ Y; o- I6 H: A( w9 m3 ^) G9 o& o0 T

    - y$ r- _/ Q3 I  C0 M+ w* ^6 c5 {' x

    3 o! ?+ {1 b7 }1 s
    / C7 o4 p3 Y, [5 i7 P+ G
    8 P3 b0 O0 ?; [/ O( D! l
    分析可以得到患者 i(t)=患病总数-移出者# ^' ^! ~2 [6 z, j* G3 z! u+ |  Z
    可以通过csv文件的currentConfirmedCount 直接获得i(t)数据,当然也可以通过 i(t)=confirmedCountv - r(t)获得,对此我也做了可视化展示& Z1 ]2 U& k) I+ c' }* N) L" w

    4 Y* u+ X' x- h$ ~* l( k4 I2 j

    : D5 x. K( ]" ^5 t通过MATLAB程序对其进行拟合,可以得到r(t)的函数图像大致为4 F' e% w; o" K: }6 p- V) l

    : q* F% g& g! Y$ `% ?
    + ~9 q5 P" C; O. O  q- J+ W" P0 Z7 p* H( P

    " v0 L+ w# q0 G; C7 e3 }" ?

    6 P6 m1 D5 U4 ~* o8 b: ]" z5 p. m% u- J

    # H6 o1 W0 L2 m. U- e0 R为了方便,利于公式推导,我们先设时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t). 所以有+ n! o$ X$ c$ g; x0 H

    8 j1 D( x+ k6 ~1 B$ }

    8 S5 q4 S2 L6 R可以推导出每日新增病例的表达式. m2 T1 U' h3 c* J0 x% F

    8 D$ c' H9 O8 R! V7 o6 T
    7 \& _6 c8 ~, Y& c6 S. ^

    3 M2 E9 @$ J& I4 I" n

    3 X' H9 u+ T* s* r; ?+ z3 E  N5 }* i: _+ K% ~) [# E0 D
    ( f; {' w; m3 y5 g; N: K, N
    由以上两个公式可以推导出以下两个微分方程
    " Y8 R  l$ e/ p; y3 M! y/ k! g  H8 K2 z* n- q6 y7 B9 X+ I4 F' S% X

    ; H& y3 w. P7 Y0 |( v/ N
    6 H  v3 \* p9 _7 i9 T$ g: i

    6 e  P+ }% A6 m- A2 b# C可以知道初值
    0 _& n4 N; Q/ c* n/ e) Si ( 0 ) = i 0 . s ( 0 ) = s 0 i(0)=i_0.s(0)=s_0i(0)=i
    * [# u% t; R- [- v- U0" N* n8 _" c) D" F/ @2 d* _2 T
    ​       
    9 ^4 t% c) K* k8 M8 V; l% K  ] .s(0)=s
    * e; W( P8 d$ G. n0
    , w7 X; n5 X5 r​       
    ) H( E) D" W5 d2 ^: Q- s# Q1 c " H0 c3 _) s% I$ F8 ?) A
    因为一开始治愈的和死亡的肯定很少,所以r0可以看为0,于是就有:
    / A5 \& b7 B/ j4 _# K) a7 }4 H, _i 0 + s 0 = 1 i_0+s_0=1i $ b* ]6 I/ {* c3 E
    0
    & Q1 ]# B6 U/ K. ^5 K: g5 C​        ! [6 `% c& @/ [: l$ G
    +s 9 }4 q; W+ Z9 \! n
    0+ y4 D+ h8 K0 H( q* f" ?8 g; V
    ​       
    8 @' O4 M  J) r, o% e2 q, E0 X( W) t) J =1
    . z' r3 m* D4 V通过解以上微分方程我们可以根据经验假设λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)的值分别为1和0.5(也就是每个患者可能使1个正常人患病,患者可能有0.5的概率被治愈);由于一开始患者肯定比正常人少很多,所以我们设i0=0.01,s0=0.99。对其求解可以得到s(t), i(t), r(t),的变化图像/ ~" \4 z) ]' S" i

    % N7 `# `8 a2 p( a, b

    3 v9 F4 ]3 w+ M: V: r( ~
    , @% ^! @! w) m- z8 [% d

    , e) Z/ ~0 a8 s1 iMATLAB程序如下, n1 @: a$ P8 v1 I) B
    ts=0:40;
    " G1 |) {. z* I0 Xx0=[0.01, 0.99];
    ' q4 R+ F$ r/ O- J! M: H2 y[t,x]=ode45(‘ill’,ts,x0);
    ' f1 ~& g5 ?8 r/ [r=1-x(:,1)-x(:,2);% q; U1 u. X6 y! B9 \+ V
    plot(t,x(:,1),t,x(:,2),ts,r,ts,x(:,1)/x(:,2))
    8 ~0 X7 C9 K( }& hlegend(‘i(t)’,‘s(t)’,‘r(t)’)& b  A3 @: K, r7 P

    . J' I4 h0 o6 e. K
    ) |3 \  A  I  @% j  `+ [( L  N
    function y=ill( t,x)
      G0 ?' `$ U9 J& I' w3 ~a=1;
    ) X# T: Y2 s$ w0 j9 i- E0 f! Cb=0.5;2 M' Z2 Z% N' }0 e
    y=[ax(1)x(2)-bx(1);-ax(1)*x(2)];. f% i- H8 m: f- f

    0 \0 p( E, K0 A1 Z+ h
    / N0 S/ f3 N2 h" |% Y
    结果分析:患病人数肯定有个高潮,但之后高潮就会减弱,并逐步降低为0。随着医疗卫生条件的不断提升,患者的 λ \lambdaλ(日接触率)肯定降低,μ \muμ (日治愈率)肯定上升,所以我们可以把λ \lambdaλ调一点为0.8,μ \muμ调高一点为0.6,可以得到以下趋势图。所以应对传染病很关键的一点是我们要提高医疗卫生条件
    + j- l0 Z" t/ A9 T1 c0 N
    % Y. K5 k" P, W, h/ `

    , ]4 Q" r' A2 W0 I# x
    1 T6 v* F) G" V! W; A: H* L9 V模型二
    6 Q: W8 ^0 _, M1 V& y  i' I  C9 F! k/ K. j

    # b' U3 n" l  _: x实际上,λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)都是随着时间变化的,这里我们设s(t), i(t), r(t) 为第t天健康人、病人、移除者(病愈与死亡之和)的数量, s(t)+ i(t)+r(t)=N..
      r7 S% |- r( F: W(t), (t) ~第t天感染率, 移除率(治愈率与死亡率之和)
    0 i' F  Z- O* e7 c有 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' C" K% S. L6 B9 X+ R! k: i
    因为s远大于i, r,s(t)视为常数,所以有
    ; ]' H$ j9 z9 F. i. o# P; v4 ]; ^( N! W

      T" w% w6 J: R. F- b/ P; S9 ]" c, S% e: z* L: p5 ?
    & z: h% U  L+ {! D' \7 V0 m2 T# R
    取差分近似导数0 {( h' |' F0 n' t/ ]# k

    3 o- A" |/ O# w- ~4 F

    2 j, S; p$ b" r8 \5 y4 Q$ e6 m9 _6 ]% G

    8 j; y* W$ d# z8 u我们可以先用真实数据对(t)进行展示并进行拟合5 A0 X2 |9 g) O1 b9 ^- y6 l
    : R1 r. s+ [' h! k6 [
    ' ^, n) m+ _' p' ]3 Y# ?, v

    * s8 v3 a# }; L! u$ K
    3 l, e5 u+ J  A9 w
    当然同样的方法对(t)进行拟合
    . z" k9 B6 o! [% J% V. {; v- n! F7 d4 S9 z$ e

    . x) t- D5 I* A2 y5 |  z5 O, s3 F做不出来了,好难,光这些东西就弄了四天,到了数学建模国赛得多难多累啊,哎,让我这个小白手足无措。毕竟还没有正规的培训,这个模型等期末考完试一定好好做做!!!! F3 Z6 x4 \+ @7 b. m6 h; L
    冲国奖
    $ [4 ^! g: I2 ~冲国奖
    - N. b" M! Z& [: E冲国奖. o8 W& E3 i2 B6 t# n% @6 ?( I
    ————————————————$ f4 z( W8 v8 D  U) Y- G, y4 p
    版权声明:本文为CSDN博主「小白不白嘿嘿嘿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    3 m! ~( y* ]  w' M/ h- O原文链接:https://blog.csdn.net/weixin_45755332/article/details/107094630. l+ w# g3 ?# G2 m7 _$ U

    ( G- k9 m0 U* |$ b7 _% ~# k" W1 m0 q, Y
    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-5-27 03:38 , Processed in 0.498728 second(s), 51 queries .

    回顶部