QQ登录

只需要一步,快速开始

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

    % L3 C, B+ M8 _# z" E' P, h* D8 k数学建模之传染病SIR模型(新冠真实数据)3 k* a1 p& ]% j! H- z2 `8 e' _% a
    传染病模型的基本问题% L7 J) i6 S3 k/ |0 t$ R
    描述传染病的传播过程
    6 O% S: B6 D  ^( R5 |分析受感染人数的变化规律
    ) q$ r" I: e0 ^$ l! a0 L' \预报传染病高潮到来的时刻- X& z( y4 o0 u% T4 Y
    预防传染病蔓延的手段- g2 W. O  n; V
    按照传播过程的一般规律用机理分析方法建立模型
    1 p  z- y: M: ]' _7 f3 w( N注:我们这里是介绍数学医学领域中基本的传染病模型。不从医学角度分析各种传染病的特殊机理,按照传播过程的规律建立微分方程模型.
    $ e- J! |/ y. y' M# A+ M! L1 Z0 Y6 Q: f5 Q1 B/ H3 F# _6 G

    + g; g% S4 P: s# B7 C建立模型
    + A- J% E* k& l- p4 S: G. G模型一$ f6 J( A# K- \
    假设:) a2 W3 b0 A% T+ H

    , l5 ^% {2 J$ d
    8 F7 o& ^) k( B
    设已知感染人数为i ( t ) i(t)i(t)(病人数量随时间变化)
    ! M5 z1 c& _& B" T, q* ^( t设每个病人(单位时间)每天有效接触(足以使人治病)人数为λ \lambdaλ
    6 G2 f( k# c2 k( S模型:/ k2 r/ `7 o, {) T( P9 s' z* o
    单位时间Δ t \Delta{t}Δt内,新 增 的 人 数 ( 现 有 − 原 有 ) = 原 有 的 × λ 新增的人数(现有-原有)=原有的 \times \lambda新增的人数(现有−原有)=原有的×λ,即" q/ ?# M5 }; G+ L

    ) j0 E& y" q" t, J" t% k9 x

    ) g( A3 g0 t- \5 k6 {$ pi ( 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
    5 h; F2 ~7 N8 i8 `& B- L一开始的感染人数为i 0 i_0i
    3 P* a5 d1 B1 A2 H3 H0& I5 O) ~& o" e% C
    ​          T2 a  O6 F3 _. L' }
    * l% t  u. f$ I) V& G# `9 Y
    i ( 0 ) = i 0 i(0)=i_0i(0)=i
    , m# `( E8 X# |0
    ' F' }- }( H; f' N+ ]- _2 S​        % E  C0 Q1 x3 D- H

    . h- c# V+ F/ q- H解微分方程可以得到2 r" P2 T+ i) o! O
    i ( t ) = i 0 e λ t i(t)=i_0e^{\lambda t}i(t)=i ' k1 H1 F1 q  G1 x+ }2 g, |- o" S
    0: K, k: V) g: z
    ​        + \' @  l9 m& _4 {
    e 5 s' E1 k- {+ X$ v7 `! o7 w
    λt
    , u9 j+ R$ v; H( l0 G" I4 R 7 p0 C& e+ s7 ]1 f
    所以可以可到当λ → ∞ \lambda \rightarrow \infinλ→∞时i ( t ) → ∞ i(t) \rightarrow \infini(t)→∞( ~* Z4 ~# B+ o# c0 e8 V- Q& ~
    当然这是不可能的,因为我们考虑的因素太少了,首先一个是,若有效接触的是病人,则不能使病人数增加,所以必须区分已感染者(病人)和未感染者(健康人)看模型二来解决这个问题, ^' ^) @2 `9 [. o+ _1 ^9 N
    ) E7 U% r# N; H  t# S' ]
    , T( J; O3 _4 h4 ~5 m% G: a
    模型二
    # i+ q% j+ p0 }, Y' j假设:
    1 d6 ~! r' y6 `% m+ g! L- ^5 b$ @+ `3 m

    # C2 C6 U. |/ w* m) Y$ `" k! k, c将人群分为两类:易感染者(Susceptible,健康人)和已感染者(Infective, 病人).
    - G& T) C) X3 E3 J; {4 z+ B* Q) w总人数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
    ( B  |4 S6 N7 K每个病人每天有效接触人数为λ \lambdaλ(日接触率),且使接触的健康人致病." U+ A: n1 c4 ]! b4 @  P
    建模:. p8 _+ z8 ]& q& Q- W5 Z+ Y
    每天新增的总人数为原有的人数乘以每个人可以传染的健康的人数,再乘Δ t \Delta tΔt
    ' l7 r3 p& U; y9 k3 u* @  y+ q1 \1 A( m

    4 Z$ W* p4 {) K, o! I& |Δ t \Delta tΔt除过去,两遍N约分得到下面,
    4 W- ^5 Z5 G/ q7 j- {3 h! _4 G4 c  u( m9 P- z; Y3 [

    " z+ N2 ?+ ?" W/ p* ~, M1 `4 UMATLAB解一下这个微分方程* M# x' G, A+ G

    $ o9 Y4 T7 b  Q. O3 A* J6 |

    6 t+ [* d; B! F7 j6 U3 w) O& vy=dsolve('Dy=n*y*(1-y)','t');
    ; H/ ~- ?. q4 a5 ?* t& t5 |3 {1 l) w4 t% e

    : d2 i4 Z2 ^$ G' N+ m  S3 by =" C" L6 Y9 X8 `' }# D
    -1/(exp(C1 - n*t) - 1)  P0 [  t; l: F% h( O
                          0
    " Z3 j: t+ w9 n( Y: w( h                      1# j5 j& x9 J+ n8 ~, K3 }2 B
    1
    % H$ ~- Y& q. ~; f7 [$ G2
    # J5 L* G8 Z4 s" c! ]3" n# `/ @0 L/ ?$ L7 G* i2 E6 c
    4
    + u- g; B6 t3 Z  P: f3 b5! z+ t7 j; s& [
    6
    2 e% t* A# t) c( O7 w5 c  b写规范点就是这个函数
    0 K+ u3 z. r5 K3 E! A7 t2 C4 x0 O: j* _4 x% q  C% o

    / T. v5 ?' Y( T2 i& a! ~! N函数图像大致为
    " z  \  f' D6 e0 n% n9 g8 C3 O
    6 m+ X5 Z! Y/ v- b
    6 m! _! e' |' F
    可以看出t = t m t=t_mt=t
    ! P! C9 o, ^; Q2 dm* x: r" N. Q5 t5 H& n
    ​        & k+ ^. H3 s+ K/ D2 q+ `
    时这里图像的斜率有个最大值,其也就是传染的最快的时候,即传染病的高潮时刻,当然t m t_mt : P( C$ R; U3 e6 v; Q
    m' h$ y& \0 B! j
    ​       
    0 s% |0 z/ w" D; U$ u- p' i# I% ]( u 是可以求出来的
    6 K1 h( [, f) y- a0 _0 |  Q3 Y
    6 ~: z  S; X- B3 {' p/ K1 q

    ! h7 m% _2 K3 T7 V再看原式,当t → ∞ t\rightarrow \infint→∞时i → 1 i\rightarrow 1i→1
    $ y7 |8 k- o4 x7 m# L3 o病人的比例为1,当然这也是不可能的,因为我们还没有考虑有没有可能治愈,看模型三4 f0 f7 r  e# g3 `9 {* P
    4 z1 ?7 ^" L4 |9 B( ?- i* R
    4 b9 b* b; ^9 M- ?0 j/ y/ P) K- s9 i
    模型三% }* Z+ z5 d8 Z; Q$ \; l
    假设:( K) Z9 {6 I# v( [

    , S% R  S3 z6 b+ f1 Y4 P

    7 r) A$ a+ n! M9 x0 j5 @! Z传染病无免疫性如伤风、痢疾等——病人治愈成为健康人,健康人可再次被感染。0 d8 [+ I7 x% {$ J* w- z
    病人每天治愈的比例为μ \muμ (日治愈率),1 μ \frac{1}{\mu}
    2 b7 e- _9 F0 w: t1 r4 a$ w. x+ |μ
    : p/ s- G# k7 T  v0 l1, T8 l7 p8 b. U+ H
    ​       
    ; J. I2 D$ F1 C1 ~; G 为感染期,2 \7 f: A7 H3 ~
    模型
    . V2 _; ]$ H' c8 d7 S6 ^' F这是减去了治愈人数之后的新增人数5 G. u; O) N. e# L- P; ^' x
    # y* _8 g3 \8 O/ D

    5 o% w& n& E! Q0 |  j4 D7 g+ }% T4 N. T7 K+ f! y; B
    6 R$ x2 T& \: j$ x: a
    σ \sigmaσ 为一个感染期内每个病人的有效接触人数,称为接触数% D* R/ H4 t3 D, s5 Q' O

    & h; M  ^, _3 ^' L" ?

    9 V2 W1 c0 m" Q( x) j可以画出上面的图形分析下, k/ f2 U- n2 f7 I" ]( m
    8 U) S8 x4 s4 h3 s: K* D4 G

    3 I4 u2 X3 C. m! X: H  Y对上面的公式进行分析,可以得到,当i = 1 − 1 σ i=1-\frac{1}{\sigma}i=1−
    2 _+ S: X- w. s% qσ0 ]7 ?, a3 s& J7 H; H
    11 r6 u9 |  S1 |4 w. p$ {" s
    ​       
    / u9 X' k$ ~7 S6 S. W8 O 时,i ii对t的导数为0这也就到了i ii的最大值;当0 < i < 1 − 1 σ 0<i<1-\frac{1}{\sigma}0<i<1−   I' X2 a5 `! l- ~; E$ ]4 H# L
    σ% m. d/ H3 t+ X+ F! [& T
    1
    + x' C" e1 f1 `3 }, w8 O( N​       
    7 s1 T% C" n. M/ 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− 3 \# k$ s; b$ M( c0 l
    σ3 K2 F* d8 ^" y' }. m9 A
    14 |2 t8 w! q; V& y- @. U
    ​        , w/ ]) b, ~6 c1 G; y
    ,d i / d t < 0 di/dt<0di/dt<0,i是单调递减的。
    : N8 M; A! ~! R( A0 C9 t
    0 ~+ \$ Z: P' v' K8 R, T

    * z; y  \' H2 F5 {6 r: }7 V当然我们也可以画出i ii随t的函数图像
    7 |, ]/ j4 W' I2 ?% D6 Q
    , ~. g( t* [# r/ ~; W

    8 ]8 ^* m/ r, q先看红线,若初始条件i 0 > 1 − 1 σ i_0>1-\frac{1}{\sigma}i
      X9 q4 A: j* ^) v4 N' z' I0' F1 n4 W/ O. @: k% R2 k8 O* h0 k
    ​        3 x3 K! t0 T4 |: C7 e" \
    >1− + d3 ?5 c  Z5 o0 `! i, I/ m6 w/ E
    σ$ a4 ~3 l2 ^& a; H7 A  g
    1
    ; D7 l! P& R, P$ c+ P​        ( J* h- m$ Y& `3 S1 y# K- k# J2 }" N
    d i / d t < 0 di/dt<0di/dt<0,i就是单调递减的,
    # z! P- |8 U8 A* @( x: F若若初始条件i 0 < 1 − 1 σ i_0<1-\frac{1}{\sigma}i 0 h0 S7 t) \0 D
    0
    3 l3 h5 _, V' Q9 c* u! l! a​       
    . y- F; o" I9 j <1− . l$ {5 m- a* p( _" M% D1 p
    σ
    1 u7 Y" m, q5 q7 a. \) D: ^0 t1
    ( V: n: b% c! x9 b7 B% @​       
    # [6 f- t" r. a4 X+ q9 H! ^ ,i就是递增的,可以看到i对t的导数图像有一个最大值,下面的黑线就有一个增加速率最快的一个值,按S形曲线增长- @/ ?: k. a- ~( J2 [
    % H; d/ ?, Y) ]$ k0 m; _

    - L5 M9 Z, d" z# F- mσ = < 1 \sigma =<1σ=<1时d i / d t < 0 di/dt<0di/dt<0 i肯定是单调下降的,最终降到01 X+ ~3 z0 o% r( R% A
    6 z4 n1 C+ S* U8 M. q
    * X  v1 u! w* V

    * h/ ^, M8 U8 @3 T) j$ b3 m

    " w7 ?+ N! W  A! e; ?" o$ n综上:  g% G1 ^5 ?' B' q: B
    想让患病者越来越少,σ \sigmaσ必须小于等于1,即感染期内有效接触使健康者感染的人数不超过原有的病人数.
    $ m8 E- q9 S- `- V6 ^# _# W% `: C& @* D0 q) U; p/ i
    + G! s: ?% C; L2 T6 b( r1 [
    这里我们分析的是感染之后还能感染的情况,但有些病毒感染之后会在体内生成抗体,就不会再被感染了,下面我们分析这种情况。$ y1 r* J1 T. l: l% `- M

    * M- q2 o5 m. ^* |, b: m
    7 k; D5 k% t  Q* \6 z
    模型四 SIR模型
    6 v7 W- E2 _. M8 _SIR模型是常见的一种描述传染病传播的数学模型,其基本假设是将人群分为以下三类:) P2 n4 W- h: ~

    7 r  j( s/ c5 ^
    0 K6 @  x: A/ m9 a
    1 易感人群(Susceptible):指未得病者,但缺乏免疫能力,与感病者接触后容易受到感染。
    9 k$ [) z7 n3 g/ ]
    5 O( p' A* O7 S5 }

    9 q' D, ^, G" }- @' e) w2 感染人群(Infective):指染上传染病的人,他可以传播给易感人群。# F4 u  c! S  f  |" D3 B

    6 C( z4 ~* @: e5 [  J
    / E6 d( t- D" A+ D; r, Z1 r
    3 移除人群(Removed):被移出系统的人。因病愈(具有免疫力)或死亡的人。这部分人不再参与感染和被感染过程。- ~. a9 r1 P4 b1 A/ u( R* Y

    7 I6 o/ [! M( _+ T6 i) J/ A

      G+ n1 A7 d( g& c. Q5 e假设:
    - P0 U) i8 e# }, b( {* n
    + }% S' S3 \) r

    1 b) c8 @9 m: j7 T! B. j, K+ \传染病有免疫性如天花、麻疹等——病人治愈后移出感染系统,称移出者(Removed).
    5 f1 K7 X2 C' u2 E总人数N不变,健康人、病人和移出者的比例分别为s ( t ) , i ( t ) , r ( t ) s(t), i(t), r(t)s(t),i(t),r(t).- j# U. l) M* s0 ]
    病人的日接触率为λ \lambdaλ , 日治愈率为μ \muμ, 接触数 σ = λ μ \sigma=\frac{\lambda}{\mu}σ=
    % f* {% y; [) Q- ]μ
    + N3 Y. ~5 q4 @! V8 l' ^% Lλ
    5 ?& w/ o0 e/ L( P! U) I​        + _$ s; M" V$ s. G

    & _0 W0 [8 m* {$ I! H3 k4 q' `建模:
    " y9 G7 @% P/ L' B( F' e" S) V4 `s ( t ) + i ( t ) + r ( t ) = 1 s(t)+ i(t)+ r(t)=1s(t)+i(t)+r(t)=1; b6 [# s6 Q. k" L& [
    这个就是病人减去治愈的人,和上一个模型是一样的
    7 [1 [, P& |0 o% @1 s% K) x- h( _8 N5 c5 Z
    % Z" D0 k! t7 Z
    因为有治愈后是有免疫性的,所以可能被感染的总人数要减少,减去移除者就是# t/ D" d1 Z- a! t' F  z7 S  X
    6 @" I# |3 _6 r! G' X9 r

    + D3 X3 a& M, W将上式化简为:
    3 A" i9 @$ V# v2 F! i5 N/ R6 Z4 h; Z# F7 K* B6 w

    # ?: [: _* c0 J9 `1 H) |2 Ji 0 + s 0 ≈ 1 i_0+s_0\approx 1i 0 ?- K3 g5 k6 j- w' }0 v, ~
    0' j; S1 Z6 ]5 U, _2 c  P6 ^
    ​        / |" H+ \7 B/ r) t6 ~0 E
    +s ) s, S( s9 t1 p+ D% U  A5 ]: h- P; E
    0
    8 d% H* R7 n( q4 u4 r​        & K$ u0 Q: I  X% ~
    ≈1(通常r ( 0 ) = r 0 r(0)=r_0r(0)=r
    " I7 A( y8 B7 l2 P, z1 p0; b' P7 a  @' V$ R: _
    ​        2 h/ P/ J' Z: @1 L( K4 }
    很小); k. E' S3 G% P( `

    4 N( K5 z$ ]6 o( _, F2 @( ]
    9 N6 H) \3 e  v4 D- d/ k( [& n% s% J7 K
    关于i(t) , s(t) 的非线性微分方程组,没有解析解,只能通过数值计算得到s(t), i(t), r(t)的曲线,下面来看下曲线的数值解的MATLAB程序
    - e1 s$ w# j3 u( h& }4 d2 X$ ^8 B: \  n* ~/ N7 F
      E& F, k4 P4 ^8 B) |; s; D/ r
    这里我们先设λ = 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
    ( Z$ A! x" `: P( d$ X7 J01 v% J- g1 M9 A. y2 ~
    ​        ; X0 S# a. D# `6 o
    =0.01,s
    % R4 v4 `7 z) l" c+ S# W0
    3 o1 }) |; J% _8 t- J2 A( [( H​        7 B2 r. l7 t( a' J: x, y
    =0.99/ K/ L  o* {7 y
    也就是平均一个病人人传染一个正常人,治愈率为0.5;开始的病人比例为0.01,正常人为0.99,设没有天生带有病毒抗体的人,所以r 0 = 0 r_0=0r
    " p* n6 h/ v, Z9 w- o! H0
    8 @9 m. ?1 e' w6 O​        ; P% f8 h7 q4 |5 Z
    =0,之后若果病人被治愈,则具有抗体了,有抗体的人为:r = 1 − i − s r=1-i-sr=1−i−s
    : b7 w) w$ Y( s! t* U, y& s
    * P2 @% g0 d5 a6 x
    . t4 p2 c5 i2 R; b0 p2 x3 d
    ts=0:40;
    * P2 Z3 z( R* h  F5 Vx0=[0.01, 0.99];
    & c2 [. k0 w0 C# w[t,x]=ode45('ill',ts,x0);
    0 z2 f. E* I2 U* m- sr=1-x(:,1)-x(:,2);, M4 w/ g9 f5 q2 i  ~  g( y
    plot(t,x(:,1),t,x(:,2),ts,r),grid
    $ K" g; I8 i  N: S  o% i& hlegend('i(t)','s(t)','r(t)')
    2 B2 r, {6 h3 \7 k( j& c' i/ ~% g) u) ^0 f8 r: A

    , n2 |% E+ @# r1 K" A9 Vfunction y=ill( t,x)
    9 [. ^( J: R  G* G8 I; }  da=1;
    6 o$ |* {9 I# u2 J; U: t0 Jb=0.5;
    % k/ a7 k& s8 N/ U6 k6 }y=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];  N& I6 k7 p/ P. l
    17 T: x$ e1 z- O
    2
    $ u6 x8 i2 ~) F: K8 W2 k6 n3
    + Q' b4 U# u" ^# ?8 w4
    + t& [# J8 M& }# \  k8 D50 b7 a. w! |3 V+ U. ]% O' p
    6
    8 G7 w+ B2 H; J1 _# @" h# T- g7
    5 v3 ^3 `4 N0 |! e% ]- R2 \, G0 P8/ l: a, X0 H) `1 x9 {
    9' ]' U. ]7 Y6 s& r- l; x5 S) R
    10" R  L& ?# Q% K6 ?/ ^* |( B; _2 t
    11' @/ i: }$ k$ x  s4 P5 V( l
    # l8 m2 \* \- s( r
    ) n" k4 R) s* r* L% H) V
    可以看出:s(t)单调减,r(t)单调增,都趋于稳定, i(t)先增后减趋于0.
    4 s  q% v" p0 \& s1 W" J& W结果分析
    3 v8 j! f' y$ ~' W4 Y( P4 f先回顾一下参数
    " ?# T+ D4 R. |5 @接 触 率 λ ; 治 愈 率 μ ; 1 / μ   平 均 传 染 期 ( 病 人 治 愈 所 需 平 均 时 间 ) ; σ = λ / μ   接 触 数 ( 感 染 期 内 每 个 病 人 有 效 接 触 人 数 ) 接触率 \lambda;治愈率 \mu ; 1/ \mu~平均传染期 (病人治愈所需平均时间);\sigma =\lambda/\mu~接触数 (感染期内每个病人有效接触人数)接触率λ;治愈率μ;1/μ 平均传染期(病人治愈所需平均时间);σ=λ/μ 接触数(感染期内每个病人有效接触人数)1 J5 v3 e# O3 l: F7 W( E& D
    可以分析出:! ], b7 i* L! Q9 _
    ' W$ i  ~: `3 E+ ~: F

    9 q2 ^) n% I2 }! |: L: e5 t8 ]" U' _随着卫生健康思想水平高,接触率λ \lambdaλ变小8 V( D7 J2 u" i% N
    随着医疗水平的提高,治愈率μ \muμ增大
    2 O* h# s5 O! b$ j& ^+ p接触数σ = λ / μ \sigma =\lambda/\muσ=λ/μ减小——有助于控制传播.4 y8 a: M# O8 v1 U5 n% R
    我们可以试试稍微减少一下λ \lambdaλ,增大μ \muμ,来看下效果* A4 B' a. ^9 ]) v1 X# B  [7 F) J
    . u/ F: j' i$ z8 Q$ y! F2 o& F  \
    % h1 f" ^2 N) `# W- A2 Z
    ts=0:40;5 Q4 l  _9 C  o1 M$ a8 W
    x0=[0.01, 0.99];7 b6 P' }( ^) E; f8 J! C
    [t,x]=ode45('ill',ts,x0);3 T* t1 W& T4 I# j
    r=1-x(:,1)-x(:,2);; n  k1 i/ D# I4 i7 C9 d+ k3 i8 i8 y
    plot(t,x(:,1),t,x(:,2),ts,r),grid5 d/ a- X* V% X3 V8 C$ a8 ?& T8 h
    legend('i(t)','s(t)','r(t)')! n0 ^9 P8 L" e& g, {3 @

    7 N( |+ `! }( }' f/ |+ s. y

    0 ?; o: t! D, \( t7 ^( ^; T" N2 nfunction y=ill( t,x)" _  Z, h2 i5 I& {& k8 y$ L
    a=0.8;# ~9 ~) k/ w4 f# `
    b=0.6;& J" d7 b$ T& |. S, Q) q
    y=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];
    / r: M+ T$ O. s# K  {1 i" N1- d7 o' F7 }2 c
    2
    $ }& G3 L/ d2 h- u4 }3
    # V  `1 H$ O7 w" q' S4
    & R' P3 ~' U. ~4 v6 @6 ?1 B7 j' y" a5( A: Y) S: x: B) j( _3 H
    6
    3 K$ X6 t3 ?) T7 H7
    , z! L+ g/ D# G% r) z3 d( B7 b/ T8. \( y" F( E2 E3 p+ w
    9
    3 q( J, N& E) l# ?( d# ~, Z# _10
    . f- l* |& {, j. u. A3 v+ ^11& O; B- ?  _; v& h

      U- ^/ b) G0 Q, f, O1 z

    , z8 \; S! @; H+ y, s综上我们可以得出结论:想要减少传染病的传播,我们就要在接触数σ \sigmaσ上下功夫。
    - S; @+ H. [2 G
    6 c3 Z8 M8 C' @6 `0 j

    " @( \8 y. C6 K$ K+ Q  B7 d$ ^实战建模2 c) d& `/ a4 i, b- k# V
    数据处理
    7 X. e7 f' I: k4 b: D( p( j' l! G! e

    " B9 W; q" g2 M; Z/ u首先,我用python爬虫爬取了丁香医生官方数据,一共5534条数据 特征包括感染、死亡、治愈的总数,当日感染、死亡、治愈新增,疑似病例,时间,省份等14个特征
    5 l4 |9 |  e' ]% r3 n- w/ n& k# y2 n0 t% T( ~# }0 r

    ; P  a9 Q3 ]' P4 v1 l4 A" |) }
    & k; e; _3 y, b8 Z) v' r
    * @" T+ y" G0 S6 v
    然后用python进行数据提取,提取了较为典型的湖北省的数据作为我的参考依据6 Y, ^" X9 B" u, R/ I
    + V, a, Q4 h. P  e
    . R) _2 D8 I: E& m
    % H; z5 s- q# L* M

    % d; J6 d) O$ x% C然后用python对数据进行清洗,提取出了患病总数,现存患者总数,死亡总数,治愈总数,时间,省份这几个特征
    % ?1 t8 r1 K* T+ p8 W' T2 X8 h! D) x4 o- O

    . X+ P; G/ V' J, Q# ]1 S! ?对日期格式进行修改,值保留月和日,并与死亡人数的位置交换" o4 X# u- E& i
    % ^# ~  C  O" a) Z$ Z/ ]
    : A! _. S- a+ I
    这里我用python对提取的四个特征分别进行了数据分析(主要包括计算最值,平均值等,),并把1.20日作为第一天,7.02日作为最后一天也就是第165天,做了可视化可视化处理。, r* h0 R+ M& U9 {; m$ P
    感染人数示意图% @- N! A% Y3 o3 x

    ( Q6 ]/ v' E3 F8 D/ B
    : w6 U6 D  b( q9 s1 b
    治愈人数示意图: L6 y+ R8 x8 f1 c4 ~4 {

    3 z$ V# ?1 j. S0 R0 c

    0 C! c0 v' y" S9 `9 D4 @5 s9 o" N3 u4 m0 r1 P8 W$ E! `
    + Y" Y, A( m8 _. H2 l
    现存患者数量图, H8 x+ V$ L8 y5 l1 X- Q

      G0 r. i; P7 o9 Z7 w/ P* ^) l
    3 `+ d; k& V' q) b
    死亡人数示意图
    ( o- m( m6 ?& @6 M" i1 N, G3 q% O: @) T1 V: d) n8 M
    * r& Q' X: R: R  y  c

    9 r; b7 D. Z- e8 c% S/ R
    , k0 @" n/ Q2 p: F& a
    经过上面的图片与describe数据分析,我们发现有一天是异常的,患者多出了平时的十倍左右,经过查阅资料,这天因加强了检测标准,所以增多了很多。为了避免这个数据的影响我们选择将这一天删去(或者用平均数或中位数代替也可)
    1 p4 M6 j- k6 M, q% d将上面清理过的数据存放到csv文件中
    , b+ |) O' b; q* L, X
    5 o2 B' c3 h4 a6 ?6 J- @

    : J+ r$ W- I& n8 p) K7 R6 O& [模型建立; h( Y6 G8 K, P) {: S2 a* [+ S
    模型假设! ~( @7 l( a' K
    经过上面数据的分析,我们大体可以进行如下假设:' ^$ C. N) P8 q( X: P' Y$ @* U
    1.由于不存在封闭情况,考虑开放体系。
    - E; A) x; c! ~& ]/ E2.目前数据以天为单位发布,因此不考虑连续变化情况,只考虑离散的方程。, X9 K6 k9 t) q# J% [/ c
    3.新型冠状病毒的治愈人数和死亡人数相对较 小,因此只考虑 Susceptible(易感)和 Infected(感染) 两类人群。设易感人群总数为N7 h& W# c" \/ m3 Z" E
    4.经专家鉴定新冠病毒患者治愈后至少六个月之内不会再被感染,所以设治愈后移出易感人群。
    : l; M5 w. X+ r2 K; y5.设每个病人每天有效接触人数为 λ \lambdaλ(日接触率),且使接触的健康人致病.
    & x0 J) r2 |( ~: f1 [: D6.设病人每天治愈的比例为 μ \muμ(日治愈率): r& s9 n7 _. I  G& L
    7.时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t)., l7 q3 m8 @5 R. c! a7 W7 y

    ) j; A$ X: p  q" t

    ! R6 p# h: T* M- S; `+ I* Z模型一
    " p. q( V; |7 E) O# j& o
      E8 U$ D1 ^% ^" H. }. b; D

    4 w' a) O/ L' _+ ?) Y0 a6 l分析可以得到移出者r(t)=治愈人数+死亡人数
    ! c, a; C! }: e3 c通过python数据处理,我们算出了r(t)的值,并将其可视化# m3 d) s4 n* O$ O9 g
    ' b7 [* }8 \) O) x8 [

    # Y: R2 E+ F( p$ ^- x# p
    5 I2 C  ^* R+ s( s- l4 e

    . v4 v& T- i( v7 h' ?8 Q我用MATLAB对其进行了拟合,拟合图像为
    * {- e6 a. o+ ?  G1 Q# F) x( X: d7 ^& c0 ^

    6 c" ~# n% {; y9 j$ b; C0 y* i; G: f9 C
    . o$ _2 J6 o* @( S
    ; J" a$ P* r: e+ Q
    + v1 O3 B, O5 @

    ( T+ u$ ]8 G; U0 b0 I/ k% D( i3 F: z8 t分析可以得到患者 i(t)=患病总数-移出者- a& v7 ]3 R( Y% p7 b2 _# I
    可以通过csv文件的currentConfirmedCount 直接获得i(t)数据,当然也可以通过 i(t)=confirmedCountv - r(t)获得,对此我也做了可视化展示
    " N; c/ U  M6 Y' L: {1 T! a; g4 A9 F5 D$ }6 Z

    0 g2 ?5 p# p0 v通过MATLAB程序对其进行拟合,可以得到r(t)的函数图像大致为
    8 H+ ^' i2 _# O, C7 Q0 P
    $ @% P3 {* [1 ^; D8 n3 u
    7 O' \+ B; }# B: g4 R/ W

    / A/ X3 D: p4 i) f7 C6 o3 `7 E
    - ^' E# C% l; l
    : v. Z+ }3 V, G, ]

    ' y: H+ a. W: O% G为了方便,利于公式推导,我们先设时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t). 所以有
    7 }: ?( A) n6 j0 n* @/ C
    ; }1 O' H2 i" Q6 n( [2 E

    1 B& y% h, S0 h$ ~: F+ r可以推导出每日新增病例的表达式, [! V  Z  z( F
    5 r0 W! z/ Z% O: E0 a' H% P
    3 G) m: m0 p6 I( L5 ]( R
    ( d8 H8 Z; @6 g0 }- }' v. B
    $ C9 x2 X/ j7 F5 G; P. d, G
    9 J8 H' b: Y1 m( }. v4 b/ G

    ) T+ b6 W5 L. o由以上两个公式可以推导出以下两个微分方程
    $ @# s2 J# U" ]0 C# }4 E* o0 I4 N* ~- W: q

    7 ^) _$ O; T4 P! C2 L+ \+ B& k. P' t+ h0 h4 ^0 a

    ) A* r+ K8 I! `. l可以知道初值
    4 t  w" D% |4 _+ E# a3 \i ( 0 ) = i 0 . s ( 0 ) = s 0 i(0)=i_0.s(0)=s_0i(0)=i & s( F- a9 `9 n$ a
    0
    ! O0 h1 ?; h' Q0 p) v" m​       
    ; H7 c1 Q2 _- ]5 H) B7 g .s(0)=s
    ( ]/ ~# q- Z) i0
    ( M' J% F6 ]& \0 {​       
    . m+ a, ~, L# s" M3 Q ! E- B, G- p; H  E$ h- u, Y
    因为一开始治愈的和死亡的肯定很少,所以r0可以看为0,于是就有:. W$ F2 e% ^# q# }
    i 0 + s 0 = 1 i_0+s_0=1i
    0 S* E. @/ }, H7 c0( M: w0 X0 L, C  f/ Y
    ​       
    2 e6 g) d+ P: U  Q, x- } +s ) K! @! E2 |( a0 p" b
    0
    . T4 t+ V; |1 `$ u​       
    2 C, ?( l$ P) T. R7 s! f =1$ x5 W9 O  N7 t! U
    通过解以上微分方程我们可以根据经验假设λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)的值分别为1和0.5(也就是每个患者可能使1个正常人患病,患者可能有0.5的概率被治愈);由于一开始患者肯定比正常人少很多,所以我们设i0=0.01,s0=0.99。对其求解可以得到s(t), i(t), r(t),的变化图像+ i6 N1 B, f: a7 _1 t, D
    2 ~: `# m- _! z& v" X

    9 z" h6 K/ E) F) R  Z, g* l3 s' D; ~! ~# A. l! ^" k
    7 A. E' c7 q  w. D' T
    MATLAB程序如下
    1 N6 q7 k+ e' X' _; M: }$ Z. Jts=0:40;& D: S- D' r( j" I, H  w, Q1 L. L' n  ]
    x0=[0.01, 0.99];
    . Y1 J0 Z. C5 s0 W2 ]* ]5 u' k& _[t,x]=ode45(‘ill’,ts,x0);
    5 p9 V% w6 m# l, S" u1 fr=1-x(:,1)-x(:,2);
    3 U% E+ F. X6 kplot(t,x(:,1),t,x(:,2),ts,r,ts,x(:,1)/x(:,2))
    + ?( s; g9 b2 |legend(‘i(t)’,‘s(t)’,‘r(t)’)
    ' o, I( b, `  J5 P
    , B) M$ G; G4 B* l) Y+ [; Y3 H- V5 y

    ; X* A, c& q( e, C5 L" ifunction y=ill( t,x)' a  V! N+ ], F, \. q5 U  |
    a=1;
    $ n$ r) L; f% k9 Z! p+ I8 L2 O- lb=0.5;
    4 J5 M' h2 H; |4 Ey=[ax(1)x(2)-bx(1);-ax(1)*x(2)];3 x+ z& W# `9 O8 A1 ]
    7 E. T! P, |7 h+ n2 @- @
      ]8 m$ R/ R# u4 ?# L* K
    结果分析:患病人数肯定有个高潮,但之后高潮就会减弱,并逐步降低为0。随着医疗卫生条件的不断提升,患者的 λ \lambdaλ(日接触率)肯定降低,μ \muμ (日治愈率)肯定上升,所以我们可以把λ \lambdaλ调一点为0.8,μ \muμ调高一点为0.6,可以得到以下趋势图。所以应对传染病很关键的一点是我们要提高医疗卫生条件3 I. H' p: u6 ~  q. h
    : ]& d1 d! F( |

    $ c& b9 B: T0 w2 p( x( {/ s, N
    & e6 b3 }5 j8 U1 g- @" _, o模型二
    . |' [" H) M! {7 k) D6 F7 k4 M
    ; o. u5 F- o. O$ O
    4 R, B% o  g# o, G3 s0 ^  @
    实际上,λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)都是随着时间变化的,这里我们设s(t), i(t), r(t) 为第t天健康人、病人、移除者(病愈与死亡之和)的数量, s(t)+ i(t)+r(t)=N..
    $ s: V- v( u3 G/ {. l9 [(t), (t) ~第t天感染率, 移除率(治愈率与死亡率之和)
    : x/ f* r& a/ P% J( |: y有 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)
    / N1 e9 Q) h- A7 J) d- E! M) C* ~因为s远大于i, r,s(t)视为常数,所以有  i, K( W0 b1 t. d: L$ O1 \
      B2 B( i# G+ u6 q1 P
    1 _+ t5 j: e6 Y
    / S$ [) i3 U9 Q3 _( I1 O" W
      t; a0 ~% L. v0 W& _( ]) W7 Y
    取差分近似导数
    3 @0 i# |- S% J: \/ e) Q1 D! x" q# P9 C. T5 J& }
    - Q, ~5 S% \5 [9 X, Z& Y% H* E
    7 M8 f8 K) S# M) g- o( O4 e

    " Q9 i4 n( K' R+ P  Q( }我们可以先用真实数据对(t)进行展示并进行拟合
    " F5 r* W+ f9 C0 ]5 x/ `# N8 o4 a
    3 V( p( C7 [* t3 e# X
    1 {& L# x7 W4 s' Z4 w
    , L8 q- s+ |3 j' G0 E- `7 S8 }
    当然同样的方法对(t)进行拟合: b/ B3 q" D4 Z8 v: r
    * b0 T3 n$ R) I$ R5 r
    ) y8 m: R( g* }' Y- s7 p2 T) t
    做不出来了,好难,光这些东西就弄了四天,到了数学建模国赛得多难多累啊,哎,让我这个小白手足无措。毕竟还没有正规的培训,这个模型等期末考完试一定好好做做!!!
    & k2 K1 ~5 Y) F' C冲国奖
    ) Q" t8 `- k- `" ~$ ^冲国奖
    3 Z- }8 H3 q% ], f' V2 w6 B冲国奖
    & S& c8 t4 w# c; k% j/ |4 \7 _————————————————- j0 h" n3 N* L
    版权声明:本文为CSDN博主「小白不白嘿嘿嘿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。3 F& s6 D+ F1 G3 z2 E
    原文链接:https://blog.csdn.net/weixin_45755332/article/details/107094630- r7 C. q4 M7 |8 x, w. u" p- o

    6 J: ^0 A% _9 h) ?+ }3 G% p, d/ g1 k' q% ~' x4 ?$ z
    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-4-14 00:43 , Processed in 0.413908 second(s), 56 queries .

    回顶部