QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5675|回复: 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
    7 u3 f5 B8 `; M' R" ]6 n
    数学建模之传染病SIR模型(新冠真实数据)
    ; r( n. n# |# U5 a% E5 W' a7 Z传染病模型的基本问题- @0 W$ ?- a8 \
    描述传染病的传播过程
    & L) h, t, ], p7 `  b分析受感染人数的变化规律% X: g  n: P7 s- l8 Y1 j8 C3 `
    预报传染病高潮到来的时刻" U- T' D( Q9 J/ O3 E. `; L
    预防传染病蔓延的手段& ~0 z& ~2 M2 f6 C
    按照传播过程的一般规律用机理分析方法建立模型
    * c2 c3 t4 s* L. r# ^注:我们这里是介绍数学医学领域中基本的传染病模型。不从医学角度分析各种传染病的特殊机理,按照传播过程的规律建立微分方程模型.
    9 [! E: g$ f7 o+ Y* M5 E( M$ p0 q. u# U3 `# Z0 i3 Q! m+ i9 H1 `: {
    / Q; A& M" P" M' Y& Y! K
    建立模型
    . ~, M% S$ Z/ i' n/ X4 j6 v模型一
    / N) f8 X4 G4 ~  o) Z" l假设:
    - }7 o6 M. \2 [( h( c3 A
    9 f: ]" R# Y1 v

    6 j3 `1 U, `9 J# H* L$ M4 N% d4 V设已知感染人数为i ( t ) i(t)i(t)(病人数量随时间变化)9 D! O8 q& B9 |9 v
    设每个病人(单位时间)每天有效接触(足以使人治病)人数为λ \lambdaλ
    # R- c" r, O: ~! m0 [! b模型:/ X, _$ ]) V& V% \6 n0 ^. |0 M2 i5 H
    单位时间Δ t \Delta{t}Δt内,新 增 的 人 数 ( 现 有 − 原 有 ) = 原 有 的 × λ 新增的人数(现有-原有)=原有的 \times \lambda新增的人数(现有−原有)=原有的×λ,即+ k5 F4 ?3 F- S' ~
    . Q6 g: ^: ]5 {6 j

    6 e5 M( {1 w" Qi ( 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. x% A. I  Q8 u: V0 @* E/ [9 U
    一开始的感染人数为i 0 i_0i ; ~1 f6 d" u3 E9 u9 B
    0
    ( J" n' C7 p1 M7 d​        8 T% u3 r( G' y7 \- I: f
    , B. S1 w# o: t# ~  v( H
    i ( 0 ) = i 0 i(0)=i_0i(0)=i 2 ^+ \5 G. U/ g
    0
    & ?' ?( A1 x# l7 u0 ~! F" J​        * }  D9 d) h1 L; p4 `

    ' Q* ~3 j  F0 r1 t解微分方程可以得到6 Y) q3 s; C# }9 t$ Y5 u
    i ( t ) = i 0 e λ t i(t)=i_0e^{\lambda t}i(t)=i
    ( m% a) s. L( J2 I9 T7 b0  ]' D  @) y9 V+ A4 C
    ​       
    ) l3 G* d: m- |  r4 z2 c0 x  U e
    ) D! u+ ]0 g; _$ Jλt
    / y2 ^, |8 g+ Y! ?0 i( J$ h 8 a1 w9 M# o& L) N! Y2 S
    所以可以可到当λ → ∞ \lambda \rightarrow \infinλ→∞时i ( t ) → ∞ i(t) \rightarrow \infini(t)→∞
    + z, F8 H3 J$ L  h! n; n当然这是不可能的,因为我们考虑的因素太少了,首先一个是,若有效接触的是病人,则不能使病人数增加,所以必须区分已感染者(病人)和未感染者(健康人)看模型二来解决这个问题
    1 `8 L: Y$ N" y' K/ }5 n" U
    . x' X$ Z& I5 P1 C3 f/ C
    1 n+ E- X! l' k% c5 r2 L
    模型二! G! p( `" ~: i9 }
    假设:% O% t0 M  u' [3 `; ?( G
    / s3 |+ V  v8 E2 ]% P& o' `
    1 K  F4 G* E: u3 x& L
    将人群分为两类:易感染者(Susceptible,健康人)和已感染者(Infective, 病人).+ J3 r) Y, v* a* N* o( X
    总人数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: G" P0 f+ w9 M
    每个病人每天有效接触人数为λ \lambdaλ(日接触率),且使接触的健康人致病.
    ( t; p8 d3 n6 N8 `1 P建模:: ~- _. G# ]* Q* o  C- t
    每天新增的总人数为原有的人数乘以每个人可以传染的健康的人数,再乘Δ t \Delta tΔt
    + C  q8 P. u' h' d1 a# s
    ( Z1 X+ b; ^& @: h! U2 K
    1 Q# ]: n1 V3 M4 a+ r  J/ ]
    Δ t \Delta tΔt除过去,两遍N约分得到下面,
    $ A5 x: z% {; R0 k; I9 f8 a$ R+ Y. |) r! }+ G8 s1 f5 t6 M

    6 O7 D/ F8 `# S/ x# QMATLAB解一下这个微分方程- J0 A8 X, R0 X8 d: q
      L$ q. k" R1 N) s; S6 \, c5 _

    9 p, Z7 m- r, V  m7 Uy=dsolve('Dy=n*y*(1-y)','t');1 s/ U4 T% u9 Q" X' n7 {
    ; }$ D/ Y8 l4 K6 }3 S* [& k) e# j
    2 f4 ~- ?) r( u- c% R
    y =
    . Z$ b' A& ]' e: g4 f& A! m2 a -1/(exp(C1 - n*t) - 1)' e$ z( W* M& j* d& f5 K2 Y+ b
                          03 D4 z7 K: ?) C! ]
                          1) Z" ]; V+ e# z8 r/ g, ^6 ^
    1
    0 ]$ j1 H  [/ F1 M; y2% e  ^- k5 T$ h
    3
    4 L5 ?3 ]# i; Z6 K$ l9 P- b/ e/ Z5 D4
    ; }5 P7 p0 Y+ _2 V5, Y' b* T9 {3 Z  q
    6. [1 Y: ]# G8 f- m' \& y% y
    写规范点就是这个函数! n+ @5 Y  b4 j" @) I9 o" ^

    ) j* F) T, l/ b% Z1 f9 s

    0 A( Q2 i. ~& O, I  B函数图像大致为
    * A" H8 I! D8 S' U! G' z
    / `, r% o$ d0 ^, \' C: S# d

    5 y/ S1 J8 N* M3 d9 B可以看出t = t m t=t_mt=t 8 j9 |& _( Z  }$ L
    m
    $ k" v) m0 o) O+ Q5 ]​        $ }' F; s* D; w$ c! M
    时这里图像的斜率有个最大值,其也就是传染的最快的时候,即传染病的高潮时刻,当然t m t_mt
    2 G' ?' D: h: ], km8 _8 x; S( o. U: E& u
    ​        2 M! E1 D; c  V' @9 i
    是可以求出来的4 \0 x  N2 E7 x( v7 k

    5 f7 z; b* Q. s  w

    0 ^, w8 N  U" L& M1 ]再看原式,当t → ∞ t\rightarrow \infint→∞时i → 1 i\rightarrow 1i→1
    / H4 B8 e1 G: M' t+ s( u  F% y病人的比例为1,当然这也是不可能的,因为我们还没有考虑有没有可能治愈,看模型三
    / Y; A- a# p. m" k( A3 O* x2 V) g+ q
    8 t5 B# ]& h. R5 Q
    模型三7 g% w  q" i- {" k! v
    假设:
    , E2 s6 D) \% ]% A2 `* z, {3 d2 J; x- c/ s

    , x1 C( p+ C# \3 Z8 n. d  V传染病无免疫性如伤风、痢疾等——病人治愈成为健康人,健康人可再次被感染。
    ( |" p/ n% g; b( z* n0 r' `病人每天治愈的比例为μ \muμ (日治愈率),1 μ \frac{1}{\mu}
    ! w4 L2 ^! j; G; B- }( q$ T! oμ9 F7 x- V/ K$ ~( F2 F
    1
    $ L5 p. ]" R" J, R! |1 j​       
    , ]; v) G% `- j! o1 H  T$ o) ?3 U/ [ 为感染期,6 D/ Z5 M2 X* u
    模型
    ; k6 N9 L' Q# I9 j7 I! c6 x% D4 q这是减去了治愈人数之后的新增人数
    ) Z1 I' L4 e! }9 ?. L8 u' p* b! Y' S( W8 ]6 P1 Z( S" D5 ]
    + `, Q4 Y7 b" C$ ^  W
      Q+ P3 m5 t1 N- u' o; g" v

    7 g- G8 o7 J! b% H; e, ^σ \sigmaσ 为一个感染期内每个病人的有效接触人数,称为接触数; K! K0 ]% t+ u8 W

    + U# N# R; P4 a7 v
    4 }7 c" o6 Q- p, A. f1 H, q
    可以画出上面的图形分析下
    : I" C, _  T4 J4 G. E2 p
    : M- Y5 ]* r( f/ g  u
    2 Y: l- s$ b7 X, e  n" I& e
    对上面的公式进行分析,可以得到,当i = 1 − 1 σ i=1-\frac{1}{\sigma}i=1− 5 V3 G& C7 q( [2 y* _, v
    σ
    # T; [$ r) R4 q5 G- o2 E# e4 L) j1: x$ Q+ G: @1 v: p! Y  w: T6 x- n# o
    ​       
    & f  n0 l" E; v0 ? 时,i ii对t的导数为0这也就到了i ii的最大值;当0 < i < 1 − 1 σ 0<i<1-\frac{1}{\sigma}0<i<1−
    8 [! n8 _  V: {σ# |) J; s. B' i! U7 X  y: q
    1
    + O' W& b3 A; n6 c+ D& |- p+ z​        2 P: U5 a/ ~2 i$ R1 N
    时,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− ( Z0 D8 U$ v' Z" E0 o
    σ% ?' E) X/ P1 m! X' Q0 [# r- p
    1
    6 k4 W8 [% P& F, E​        / R0 ?5 O% ]5 a
    ,d i / d t < 0 di/dt<0di/dt<0,i是单调递减的。
    $ q1 J9 n- N9 f3 ]* `9 s7 I$ X: _* @' A* m. H1 \. k% S2 O: X. C& a

    ( _6 }; N( t, B# V& m8 C4 U7 b当然我们也可以画出i ii随t的函数图像. G/ D9 u2 k' a" e/ G
    7 X8 p6 k* h9 j) z$ T" Y
    ) n. E: R% c4 U1 x0 `& M
    先看红线,若初始条件i 0 > 1 − 1 σ i_0>1-\frac{1}{\sigma}i
    & @+ v' R0 M* R7 D0. m( R1 ]# P" |( W
    ​        1 p& n& x" r7 ^$ C3 N# m
    >1− 1 @# w$ S1 J1 i" j' o" |
    σ
    3 a7 E* A+ T' I0 r1' w" ?/ q, \7 h5 r* O( V
    ​       
    ' e5 f* C( ~5 L" y/ e& |6 a* K d i / d t < 0 di/dt<0di/dt<0,i就是单调递减的,) i- k8 V/ Q" z' S4 \- m- U/ f
    若若初始条件i 0 < 1 − 1 σ i_0<1-\frac{1}{\sigma}i
    # \$ q9 R) j& A- k7 p0
    # `$ f, R$ K' D5 @  v​       
    4 h7 V9 `1 U' [% l# b <1− # N8 A- I& |3 y+ \
    σ
    # @; K3 H% N' r4 Q9 a4 \1! G) S) g, \+ Z9 s) J
    ​        # x: D* S; q1 A& f5 Y8 D
    ,i就是递增的,可以看到i对t的导数图像有一个最大值,下面的黑线就有一个增加速率最快的一个值,按S形曲线增长: R) {: N" ]. K" g

    + y  [2 X9 R+ T1 t8 S: P$ R! D7 \' ?
    % b# k6 E, d( R
    σ = < 1 \sigma =<1σ=<1时d i / d t < 0 di/dt<0di/dt<0 i肯定是单调下降的,最终降到06 e" p  c% K$ E
    ) W9 @6 q) N: N5 j$ S
    $ u7 _" B! `! u; b/ O& A+ a- q
    9 d  Y* d' ^8 e4 \; L. ?

    % E+ A9 J. T. c" J6 W7 m综上:, S2 k$ \$ e* E: ^: Q( A4 [
    想让患病者越来越少,σ \sigmaσ必须小于等于1,即感染期内有效接触使健康者感染的人数不超过原有的病人数.; o2 U: S0 R6 u5 x# P1 W' A
    5 P) j9 b* ~# Y2 S4 \

    ) S2 h% [) Y/ @) q, t9 F1 E这里我们分析的是感染之后还能感染的情况,但有些病毒感染之后会在体内生成抗体,就不会再被感染了,下面我们分析这种情况。: K8 Z! `6 O: `5 E

    4 U) k+ H( B1 a+ Y

    7 U% J% A& H. q" I  n2 I模型四 SIR模型
    0 r( r7 B: d; |% m( K. X4 W( TSIR模型是常见的一种描述传染病传播的数学模型,其基本假设是将人群分为以下三类:5 p) w6 U4 q" \- ?. p

    ( ?& W# I2 f. `; F4 a3 r( Q8 u

    : I& Q# n5 {# v' D- a1 易感人群(Susceptible):指未得病者,但缺乏免疫能力,与感病者接触后容易受到感染。
    3 F. i, G0 R5 Y/ C% v+ z$ Z( {. B) o: s' b

    . I" @# X. t/ B5 u; M( A7 p6 r2 感染人群(Infective):指染上传染病的人,他可以传播给易感人群。- k! y) y8 Q3 h( E& }7 {( Y6 C4 [
    6 ?; H$ o" U9 {9 @* ]1 {6 z# U

    9 j# u9 S; q0 A# P7 h; R3 移除人群(Removed):被移出系统的人。因病愈(具有免疫力)或死亡的人。这部分人不再参与感染和被感染过程。
    : n8 \7 |0 V+ D4 D) ?* Z3 ]2 L; {2 w1 F- U# p7 B  |( V

    . w. F& Z4 p1 b3 G$ G+ Y, Z% @假设:% G. U/ j  u% r8 M& S# _
    ; K! S/ W( ~# e
    % ^/ }* |! E* e# k
    传染病有免疫性如天花、麻疹等——病人治愈后移出感染系统,称移出者(Removed).
    # l( I% b- M8 \/ ]$ ?, {0 C总人数N不变,健康人、病人和移出者的比例分别为s ( t ) , i ( t ) , r ( t ) s(t), i(t), r(t)s(t),i(t),r(t).+ p9 H& Z# A; M1 m0 w- w
    病人的日接触率为λ \lambdaλ , 日治愈率为μ \muμ, 接触数 σ = λ μ \sigma=\frac{\lambda}{\mu}σ= % o/ @) b. ^# o0 X
    μ5 N+ K2 W% ?: k; s
    λ  [, l' J& n- N. M- E7 L
    ​       
    ! x; D- I9 l/ T5 l! _  s. r
    ! I# q1 C& [1 e) H' [. z建模:7 s& T" @! n* o8 X& k+ {6 Q, e( {5 g" E
    s ( t ) + i ( t ) + r ( t ) = 1 s(t)+ i(t)+ r(t)=1s(t)+i(t)+r(t)=10 N: q% K# j% j( z& H
    这个就是病人减去治愈的人,和上一个模型是一样的* W+ o% |7 Q( F, a7 @3 i
    ! S" w. h9 P; M5 ]0 I
    * v: Q: F) P6 L
    因为有治愈后是有免疫性的,所以可能被感染的总人数要减少,减去移除者就是9 Y% W; K3 f! v/ O
    ! t  J! i% t9 m* F3 }9 m
    3 j6 A4 f5 O0 k  d6 E) [/ c
    将上式化简为:) Y" v0 Z4 ^- S, d
    1 {7 C( y. t; g! {- h9 @$ D% C# J
    ' u% l( h" ~! F) }. l
    i 0 + s 0 ≈ 1 i_0+s_0\approx 1i
    $ B6 X7 k, Y9 u8 L" O! \0
    4 ]" y/ n' {# t0 d3 H) ?​       
    , y5 o/ P' V6 h- E +s
    1 ~; D6 j5 A+ |, g. A5 `% R0
    0 _' A5 I9 Z; {' M5 s8 E/ a: }) X​        ( h2 W/ f4 I2 ?2 X- I8 n9 s$ I
    ≈1(通常r ( 0 ) = r 0 r(0)=r_0r(0)=r
    % F' ]# B0 M, r: V, F0
    6 S- \! L# @3 i8 q, b% b​       
    - d+ ?; o  V/ i1 A& l0 ^ 很小)( f3 n4 S! d1 h4 c9 L

    ! u3 }. {0 w7 q* P
    % p7 z- R5 ~1 m; L+ w2 x8 p+ a! Z
    关于i(t) , s(t) 的非线性微分方程组,没有解析解,只能通过数值计算得到s(t), i(t), r(t)的曲线,下面来看下曲线的数值解的MATLAB程序) _- E7 m# S) w( w+ c

    + T! ^' Y7 h$ h8 c) U
    5 X; |+ c7 X+ |/ T# e) `
    这里我们先设λ = 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 3 l6 l# R( C, q, e1 @3 H3 r* `
    0% w: R7 |! }8 \7 f9 z
    ​       
    - D! u: y6 c3 \0 u$ J# {$ x' Z =0.01,s
    8 x& `) u5 k4 ~% y$ \6 a$ e4 c0
    & M! e8 x. v2 A. D​        # I. ?2 Y4 V2 k$ j% l' ~
    =0.999 t: G' D7 I' f) |( b
    也就是平均一个病人人传染一个正常人,治愈率为0.5;开始的病人比例为0.01,正常人为0.99,设没有天生带有病毒抗体的人,所以r 0 = 0 r_0=0r , D9 w4 Y# w* _* n
    0+ U. ~# |/ N8 n; M+ }5 f
    ​        1 p: ?$ ]+ ~! S7 k' d9 K, [
    =0,之后若果病人被治愈,则具有抗体了,有抗体的人为:r = 1 − i − s r=1-i-sr=1−i−s
    * S3 B8 U4 G* m5 C% }5 y
    ; ?6 m. w, X- C; }
    # F, s# I; m/ M' V2 X% Z& m8 u
    ts=0:40;
    * _+ S  ~, F: j7 {" P, r8 Sx0=[0.01, 0.99];
    4 h+ d% M8 O( _: [- i# ]2 X[t,x]=ode45('ill',ts,x0);
    " a# Z% }" ~. ]0 b8 Zr=1-x(:,1)-x(:,2);
    , {! p: P3 A/ hplot(t,x(:,1),t,x(:,2),ts,r),grid
    3 g4 _" B5 @3 ~9 @3 x2 glegend('i(t)','s(t)','r(t)'): q( \  U2 p: X* q" P! z) [- J
    " G/ a/ K& N6 g6 \1 y

    . J% n- i% f9 \7 ]9 Qfunction y=ill( t,x)
    # g/ H# h+ _7 _; q/ la=1;
    ( I( r- x1 {/ x- K9 A8 x% U4 ]b=0.5;" j, e8 d- n$ T2 \- d6 K2 z
    y=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];
    8 L: W) R+ U; ]7 _" I1
    7 C! l' Y, b0 B7 Q( A" ]- P21 J. D4 B6 w( Z8 X& r- f
    3/ m4 [- D6 k& }) O- g1 ?& f8 O
    4
    ; V+ S4 s5 `# Z& g, z$ O52 q1 S0 s) x4 h9 E# D
    66 d& I# Y9 h2 x& f% ]. k
    74 b9 M: l6 `  B1 y
    8" p( P4 q- W& I; X
    9; |3 }% M  a# P1 U* F+ B7 L' R0 c
    10
    . i: L% A! T  U' M9 Y$ ]# c11
    5 z+ W1 ~2 v  v- A' t& R' Y. G1 L, L% s) M; r+ P8 C7 i) o. ?& X1 Z

    ' d6 ]8 c' {* C" h5 @; O9 X可以看出:s(t)单调减,r(t)单调增,都趋于稳定, i(t)先增后减趋于0.( k; j" ^9 E9 |; {1 M' ^) w& w
    结果分析: Y2 v. r3 Y: f+ x) k: x1 @
    先回顾一下参数
    9 B4 ^+ E% L" y0 ?& s2 H4 M接 触 率 λ ; 治 愈 率 μ ; 1 / μ   平 均 传 染 期 ( 病 人 治 愈 所 需 平 均 时 间 ) ; σ = λ / μ   接 触 数 ( 感 染 期 内 每 个 病 人 有 效 接 触 人 数 ) 接触率 \lambda;治愈率 \mu ; 1/ \mu~平均传染期 (病人治愈所需平均时间);\sigma =\lambda/\mu~接触数 (感染期内每个病人有效接触人数)接触率λ;治愈率μ;1/μ 平均传染期(病人治愈所需平均时间);σ=λ/μ 接触数(感染期内每个病人有效接触人数)& k* \2 t$ h$ d3 {
    可以分析出:" N6 r  Z  t& p. X# c5 {: `. t
    ' }' O4 j9 @1 b9 @9 C
    8 s  N9 X1 u8 W5 j# M
    随着卫生健康思想水平高,接触率λ \lambdaλ变小
    . `+ V$ ^6 u2 f- I: K随着医疗水平的提高,治愈率μ \muμ增大
    $ D. }4 \, [7 {6 I& R5 x$ A2 r接触数σ = λ / μ \sigma =\lambda/\muσ=λ/μ减小——有助于控制传播.) z- G( O* v! Q* f9 U& X5 ^9 D
    我们可以试试稍微减少一下λ \lambdaλ,增大μ \muμ,来看下效果" I* ]: ^, W5 ]; B. `5 t

    " _- n) K% }# {# Y0 U. K

    6 \6 a+ V5 f- Ats=0:40;+ _. x( L1 }3 ^2 D# a
    x0=[0.01, 0.99];
      D7 c8 u: M9 _9 Y& k[t,x]=ode45('ill',ts,x0);: J+ r( k5 k- t0 b
    r=1-x(:,1)-x(:,2);
    . b* d" E8 P) R/ M) Zplot(t,x(:,1),t,x(:,2),ts,r),grid0 [6 C+ [4 C1 X/ F) E% [
    legend('i(t)','s(t)','r(t)')
    . X: t, i  P9 P3 f
      S, K1 d& \  G' z/ W, D

    2 A0 i9 Q9 a, rfunction y=ill( t,x)
      u  f+ w$ u9 m: c& b* T, S/ a! Xa=0.8;3 C  L4 a; D% U* m  m4 A$ i5 C
    b=0.6;
    & H8 G7 l# J: C1 v! Ay=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];- h# j- W+ c0 u
    1
      ?& M# ~, `* @' ^+ Y) ^8 ~2
    4 K, h9 Q) s: O( {, [  N, H. m3# w  V0 k: W3 _  L7 n% I' n
    4
    0 g1 u$ j" [- `0 j# E5, |8 Z* N. O. e
    6
    4 X/ T; ]% E4 ]& Z7
    ) V1 H: m) G! H4 {! M' i8
    " `5 p6 `# o) O' l7 l  U3 E9
    5 @; v* ?) r2 M' w0 y8 I3 {10" j! ]/ X/ A. |: G! r" a+ o7 l
    11
    8 S5 j' E$ s1 t3 h4 D3 R: b% y* _' G. i+ i+ p
    ( @9 {: S. C9 N4 E/ H
    综上我们可以得出结论:想要减少传染病的传播,我们就要在接触数σ \sigmaσ上下功夫。" g- [4 c- b- V* r1 Q
    7 h- }$ g' f4 S; n' o
    0 y! o5 K# q6 D& Z- E7 F
    实战建模
    0 ~6 X$ z3 Y, _2 Z/ U/ `8 b数据处理) i2 L, J0 f! p9 v; c, r
    & @6 G; j, G2 T: ]: P* r  ^* B

    - m9 Y' q. N4 K8 x8 K# e首先,我用python爬虫爬取了丁香医生官方数据,一共5534条数据 特征包括感染、死亡、治愈的总数,当日感染、死亡、治愈新增,疑似病例,时间,省份等14个特征
    # {2 \! `/ O% H# p( r: Z/ U' c3 ?, @: z
    ! B4 n: A, G7 J

    ' S" i* @1 h- N, k- u/ [" C6 H. {

    & }% T; ^* }! `6 @7 D+ z, U( m然后用python进行数据提取,提取了较为典型的湖北省的数据作为我的参考依据
    : [: K8 k: E7 p% F0 z
    # P* T+ o# s1 ~) `) U! x  B! P
    ; J8 n3 t4 O' Z3 u

    1 e* \! g8 _. I

    ! C* Z" R/ V7 U; p# z6 {* Z/ o7 d然后用python对数据进行清洗,提取出了患病总数,现存患者总数,死亡总数,治愈总数,时间,省份这几个特征
    + q: a1 g0 ]9 v
    . ~' C7 P3 T. ~( t( }) x

    - D# Y$ B( h% R0 g8 o$ i对日期格式进行修改,值保留月和日,并与死亡人数的位置交换. f: X7 v4 I3 v3 o+ h3 j

    6 U2 O2 x% J" y- m7 R

    ) q( q1 P0 O& J6 x  m6 G5 h: L这里我用python对提取的四个特征分别进行了数据分析(主要包括计算最值,平均值等,),并把1.20日作为第一天,7.02日作为最后一天也就是第165天,做了可视化可视化处理。
    : |# [4 H: y7 @1 N9 a; }: Q4 i感染人数示意图8 G# s3 R# C7 w0 g. e2 ~3 h" s

    2 V+ t6 O4 o" v0 B, F8 I# K1 ]* g! [4 o
    ; F5 {" e8 c) N" g0 M
    治愈人数示意图6 k# |. e1 T0 U+ q: S. h

    2 S7 L1 |  F' S9 `% L2 K
    + s4 K0 o' K- s0 o
    4 `' P7 A/ @" R7 N# |# O. {" Q
    + H) P& i6 `; o5 X$ R
    现存患者数量图
    6 x/ r3 V0 d$ m6 f- v# m8 Q6 I; l! f' ?4 d  d

    * f5 Y2 }9 W2 N死亡人数示意图% ]* p4 S+ f, i& j1 O- f6 R

    + U3 x3 i- ]: z; \
    3 M. Y" ?4 k2 c0 k; H7 U9 r
    9 q7 {' t! y; K# W
    % T- W7 p1 c/ b! t' ^
    经过上面的图片与describe数据分析,我们发现有一天是异常的,患者多出了平时的十倍左右,经过查阅资料,这天因加强了检测标准,所以增多了很多。为了避免这个数据的影响我们选择将这一天删去(或者用平均数或中位数代替也可)* G4 C; u* c( w- E0 A: Z0 h% a
    将上面清理过的数据存放到csv文件中
    # V; T! n; A5 y9 T* O
    , J+ b6 ~8 e( j) }9 A) b( P

    5 v$ R! ?; z' O% K9 x5 Z; _模型建立* n9 V) B3 ?$ f. [! U5 `
    模型假设
    8 I! ?5 k4 R8 s  J0 B经过上面数据的分析,我们大体可以进行如下假设:1 d6 c, N4 M& p- R& D
    1.由于不存在封闭情况,考虑开放体系。
    ! Z8 G. J1 U, R: V/ d/ z7 k2.目前数据以天为单位发布,因此不考虑连续变化情况,只考虑离散的方程。
    , L0 P5 f7 X) W, n' W3.新型冠状病毒的治愈人数和死亡人数相对较 小,因此只考虑 Susceptible(易感)和 Infected(感染) 两类人群。设易感人群总数为N
    & H( n2 y) a/ \2 a  P4.经专家鉴定新冠病毒患者治愈后至少六个月之内不会再被感染,所以设治愈后移出易感人群。
    4 K1 Y8 o/ M* ?6 I+ R5.设每个病人每天有效接触人数为 λ \lambdaλ(日接触率),且使接触的健康人致病.
    / [$ I) M6 I' Y/ W* z( a/ t6.设病人每天治愈的比例为 μ \muμ(日治愈率)
    0 k8 m$ y4 x0 V. S, d% Z2 M) k- q7 ~7.时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t).
      ]2 j: `0 v$ t5 j
    0 W" |* ~  D3 u" D! T# I3 D, y$ R

    $ S" d0 B' V2 s, n& n& [模型一
    ! K2 t: C- Y) Y2 D! b+ B5 D- ?. P- f$ Z2 K. H' I: B1 T+ X4 M) \6 f1 Z
    * I6 V# A* E/ {) l, r  E* @
    分析可以得到移出者r(t)=治愈人数+死亡人数
      i# {$ ~$ O( k4 a" Y通过python数据处理,我们算出了r(t)的值,并将其可视化8 }6 @) d5 r+ A

    ) j/ c! `8 E5 c: q6 s3 \
    6 C  @3 N- [& X& h. F) ]& H

    & w/ r: ?: l8 N% u' ?- \# L) j, ^% V
    + M5 G4 p- ?2 ~$ l: x# X
    我用MATLAB对其进行了拟合,拟合图像为3 H7 U( r% |8 x# Y9 R. r9 _

    # x( ^3 P/ @7 R6 f: M

    - ^% p! K1 x2 H6 T. z* `8 o3 H6 \! T0 L$ m& Z
    ( Y; l& t" K' z
    - s8 W5 ]( ?7 V" o# X2 j6 D

    ; E. R! w! V/ S+ k$ P5 g. t" e( i分析可以得到患者 i(t)=患病总数-移出者
    " S1 c' `( s" x. |可以通过csv文件的currentConfirmedCount 直接获得i(t)数据,当然也可以通过 i(t)=confirmedCountv - r(t)获得,对此我也做了可视化展示1 b$ ?& S1 l& T) U

      q/ t. X+ o3 V
    1 a! G: p( E* P4 [* X6 Q/ L  s. k
    通过MATLAB程序对其进行拟合,可以得到r(t)的函数图像大致为$ Z) c- s2 |3 B2 p0 p) W+ Q

    8 f0 I! H) r. K& y" y( K
    * I* j* n* t. X  a4 `) s
    . J2 m6 e- w+ q9 \2 t

    ! r+ T9 t" d7 L& A% r9 n
    . |+ M7 J5 p, E. u

    2 W- w2 y, X6 Z- \: N  @# s. O$ {4 z为了方便,利于公式推导,我们先设时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t). 所以有
    ( [' v. [* x4 U0 ]$ ~- C
    : q- G( y. x5 Y. d$ I! u# _4 G' |

    1 g& a0 Q5 B) L% {* p可以推导出每日新增病例的表达式
    3 g: l0 s- i3 T: ]5 J# U. k4 q% c6 X6 ?2 l" k& o4 M6 D, T1 @
    . A' j/ p. c* U, w' q* S; \1 u

    0 I0 G- Z5 c* G0 @3 j  g* e8 |

    # G4 G) U6 p8 {! J( n% e
    0 j! T2 J0 H2 ~+ |2 L
    7 l; v/ u! c: q1 B0 z0 A
    由以上两个公式可以推导出以下两个微分方程% S6 i$ E- [- Y. J$ b# n2 t% R2 T
    & D6 U9 Z3 `: d  f/ O0 I
    3 d- U6 x  @7 L5 y
    0 l$ o& K) G3 o5 ~

    * @  {5 w6 |3 w. Q& I可以知道初值! @3 c% p% m" n
    i ( 0 ) = i 0 . s ( 0 ) = s 0 i(0)=i_0.s(0)=s_0i(0)=i ) b( l$ R4 ]% N. L% `& U; l
    0
      }  a$ }7 j' d% O. T​        6 p7 v9 ]" ?1 r$ r0 O
    .s(0)=s 5 I$ p. w" s3 d- e7 c/ Y" ~
    01 B" P9 |: F* U$ h  ]0 }' ]
    ​        ! M2 c) {( }  {7 J+ c( B. w6 c
    * ^  m5 f* D$ |% }* ^5 X
    因为一开始治愈的和死亡的肯定很少,所以r0可以看为0,于是就有:& |  V. e" e8 U) n) O% B
    i 0 + s 0 = 1 i_0+s_0=1i 6 C0 Y" f: L( W7 T. F8 K6 E" Y
    0# ~: h4 w, F) H: M" a, W: r2 U! d
    ​       
    0 w. a, C  [6 X& J +s , ^6 ^5 d0 S3 n4 _% Z4 x7 n
    0
    ! F& V% g# `7 e2 ?+ D2 j​        $ `9 s7 p/ e5 o
    =1
    8 b  J) T& O" X0 y, K) y* F1 `通过解以上微分方程我们可以根据经验假设λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)的值分别为1和0.5(也就是每个患者可能使1个正常人患病,患者可能有0.5的概率被治愈);由于一开始患者肯定比正常人少很多,所以我们设i0=0.01,s0=0.99。对其求解可以得到s(t), i(t), r(t),的变化图像- `1 O' _, [; f9 _% `# n& n- _0 N

    6 [# w2 t$ z  n

      a( R6 v, X9 {: _7 w4 F( P" @6 Z8 D- V( w) T
    * {% w! A( h6 k2 ^( o( y& K- c# ]0 ?
    MATLAB程序如下% n$ {; h2 H+ Z& ]! d" h" a- o
    ts=0:40;
    * h* T* b/ o. _/ px0=[0.01, 0.99];
    $ z, \8 \. @; p6 L- u# h[t,x]=ode45(‘ill’,ts,x0);! R* o1 Z0 H. @8 ~7 t
    r=1-x(:,1)-x(:,2);
    . |% f! d; p6 x) B- m: ]plot(t,x(:,1),t,x(:,2),ts,r,ts,x(:,1)/x(:,2))9 l, k. g; T5 T& {
    legend(‘i(t)’,‘s(t)’,‘r(t)’)5 W; S7 s% \$ h* F5 ^

    . e$ ]% r! a+ z' S$ o, \  I2 V

    1 j; y0 n  ^$ F3 c. ?# Jfunction y=ill( t,x)
    . r1 `- _7 ^7 ca=1;: |7 {1 N1 Y: c, v! X) ]) h, d
    b=0.5;
    1 y/ e4 `7 f( [/ T: Dy=[ax(1)x(2)-bx(1);-ax(1)*x(2)];
    & q. n( y9 [* O. e7 o; p
    . N. P1 v: d4 c+ M
    . n0 n3 V1 \0 f* }4 z6 g/ E
    结果分析:患病人数肯定有个高潮,但之后高潮就会减弱,并逐步降低为0。随着医疗卫生条件的不断提升,患者的 λ \lambdaλ(日接触率)肯定降低,μ \muμ (日治愈率)肯定上升,所以我们可以把λ \lambdaλ调一点为0.8,μ \muμ调高一点为0.6,可以得到以下趋势图。所以应对传染病很关键的一点是我们要提高医疗卫生条件
    0 l2 c" R. Z, ?5 b4 G2 B
    2 U8 _" i4 E+ Z# E

    : t9 I  ^. \; C/ H2 g
    4 r, F5 c+ p1 S5 s; r) K, R9 g. Q模型二
    3 A# t+ c8 M9 L0 C; `. [+ A8 `/ [0 m! ?* o8 |
    * z" M9 y( Y0 j5 m$ _! h* ~2 U: ?
    实际上,λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)都是随着时间变化的,这里我们设s(t), i(t), r(t) 为第t天健康人、病人、移除者(病愈与死亡之和)的数量, s(t)+ i(t)+r(t)=N..
    ! ]0 [/ }% l* {! z/ T* W# H2 B(t), (t) ~第t天感染率, 移除率(治愈率与死亡率之和)- z& Y8 t! n! I' |! V8 a( Z
    有 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)
    / f5 f- _: G$ @. x( P. I因为s远大于i, r,s(t)视为常数,所以有
    . J5 |) X, j. n7 {/ g$ R" V; A$ _4 I6 P4 b
    8 [+ z# J2 e& f. O

    : J2 D% m2 E" g) b# a5 ^& u
    / M8 h, n) ?7 B. I
    取差分近似导数3 Q2 c$ m, W7 r% W8 Q

    ! E5 \; q( K4 `

    6 b) o% c$ l/ N0 u
    $ j& _. f, j4 Y4 ~
    % ?6 M% ~. x& w# q" U
    我们可以先用真实数据对(t)进行展示并进行拟合; I8 j) [" Z5 t2 Y) `" W
    " h$ Q0 m+ B# S/ S4 Y4 W+ L5 E; B
    / M% X# [: f8 @( s( L5 I

    ( d' }9 C8 }" D' u
    0 J" D  {) r7 w" W; @. @% D
    当然同样的方法对(t)进行拟合6 {. h7 o; H1 Y! d; `( Z$ X

    ( D' w/ {' j+ O8 d$ M
    : R# N  \7 t0 n7 q( K4 ~( O
    做不出来了,好难,光这些东西就弄了四天,到了数学建模国赛得多难多累啊,哎,让我这个小白手足无措。毕竟还没有正规的培训,这个模型等期末考完试一定好好做做!!!3 C4 S) }6 n. \
    冲国奖! D* ^3 ~( ^% u% g. N6 U
    冲国奖) m  @6 D. n' Z9 g# Z5 ]2 ~
    冲国奖
    3 ^2 K& l+ p$ d5 @. k————————————————' g. u: h$ R! h" X" C+ A
    版权声明:本文为CSDN博主「小白不白嘿嘿嘿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。  f0 p6 \, v& O" G+ y% p2 p2 C- y
    原文链接:https://blog.csdn.net/weixin_45755332/article/details/107094630+ Q# ~7 N! a, ^3 B: r! l# ?
    % J$ [- @& |6 B, ?! x

    4 v. S: L) F9 v& V+ [3 E* j% `
    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-7-29 02:43 , Processed in 0.490492 second(s), 50 queries .

    回顶部