QQ登录

只需要一步,快速开始

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

    0 O: _" m- ~5 o% b# c/ t数学建模之传染病SIR模型(新冠真实数据)9 `; X4 G$ }6 N- x. `3 G( C
    传染病模型的基本问题% H3 v1 S# Q/ V8 @" h  }& s, F
    描述传染病的传播过程9 x& N0 P/ ], t- i( f! C8 i% v
    分析受感染人数的变化规律
    % A) e3 x9 m  i6 Z预报传染病高潮到来的时刻) u: @% v2 ]- S* N/ Q
    预防传染病蔓延的手段
    ! h# l( ~- l; ?8 D- ]按照传播过程的一般规律用机理分析方法建立模型
    - ]0 R* K3 X+ \6 v. N, }7 l+ ?注:我们这里是介绍数学医学领域中基本的传染病模型。不从医学角度分析各种传染病的特殊机理,按照传播过程的规律建立微分方程模型.
    $ [2 z5 ]! e+ e
    + J/ Y6 f$ l& x( n3 `8 L# T6 `4 n

    0 {! @$ B& `- Q7 ~" J# c3 C' m建立模型, V. m5 |3 @: @, u. y
    模型一' |$ R5 _6 A, O( t2 G) L
    假设:
    - R! H" S5 J  Q6 g  w
    # R9 o' n2 B! O0 l3 X" n# O
    + I0 l5 Q# [0 B% n% E3 q2 @2 b
    设已知感染人数为i ( t ) i(t)i(t)(病人数量随时间变化)
    6 c; @5 u7 N+ y( y- ~设每个病人(单位时间)每天有效接触(足以使人治病)人数为λ \lambdaλ1 d( ]3 g/ k- Y2 ?
    模型:
    5 P: h# }6 l9 B! i# i单位时间Δ t \Delta{t}Δt内,新 增 的 人 数 ( 现 有 − 原 有 ) = 原 有 的 × λ 新增的人数(现有-原有)=原有的 \times \lambda新增的人数(现有−原有)=原有的×λ,即! R! ], G  D/ q- Y1 x4 g

      ?  Y, H- f6 w+ ~& P% e: c

    0 O1 z% M0 _3 N, k; g. Ui ( 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& @0 S% \' C( F+ H7 |
    一开始的感染人数为i 0 i_0i
    9 m9 b3 N  B0 A4 L1 f: d, F" E3 m0, C% Y3 Z1 r2 r% c
    ​        9 g$ K. L% [5 B7 y8 c8 [* A; n

    & `6 x9 [- g* e4 A0 a2 b/ pi ( 0 ) = i 0 i(0)=i_0i(0)=i ' ~" Y. X! n4 _9 l4 Q8 o! j
    01 @0 `* ?6 \# p6 n7 j2 S
    ​        - U# t' P, o5 M

    $ f9 J2 v1 x9 Z% ]. G/ U& e解微分方程可以得到( u5 G- Y6 T' X# ]
    i ( t ) = i 0 e λ t i(t)=i_0e^{\lambda t}i(t)=i
    ; j9 _5 U: J9 _( n& W7 A  B09 I- q% K+ F! ?* @$ ~+ B# v5 ?2 A
    ​        & e  N: Z/ }) [, ]4 L" P: J) V
    e
    3 M/ c" J! o: G' d* i" Wλt
    / N' T' S8 j. J& M 8 e; x; r- Q: h; ~& o" m
    所以可以可到当λ → ∞ \lambda \rightarrow \infinλ→∞时i ( t ) → ∞ i(t) \rightarrow \infini(t)→∞5 Z- Y6 l/ @7 s, \, S
    当然这是不可能的,因为我们考虑的因素太少了,首先一个是,若有效接触的是病人,则不能使病人数增加,所以必须区分已感染者(病人)和未感染者(健康人)看模型二来解决这个问题" ^" J' T+ [, Q% r" }# H4 Q
    ) z9 ?, t$ S% A- ?1 l

    0 ~4 H1 c- e5 u# D3 G模型二+ m7 `. h- T* K* N3 ^" r2 O
    假设:+ w9 q3 _. U9 a, J( x- r! V$ X
    7 e: t3 Q4 o% `* K

    5 O, K+ N1 \6 n, w  s将人群分为两类:易感染者(Susceptible,健康人)和已感染者(Infective, 病人).
    , {- U! w' r) y, [; z8 f总人数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% f% N$ Z% Q. M- `+ c. d( v# |6 _
    每个病人每天有效接触人数为λ \lambdaλ(日接触率),且使接触的健康人致病.
    / S$ {3 O7 ^2 t7 k建模:$ y; d: C# b/ j
    每天新增的总人数为原有的人数乘以每个人可以传染的健康的人数,再乘Δ t \Delta tΔt9 ?! u  o. `7 h
    0 S* L& \0 Z2 L1 E2 _1 Q( P7 O

    ' ^% ~  |: ^0 }7 |1 l* G1 VΔ t \Delta tΔt除过去,两遍N约分得到下面,
    % {! J/ B4 A6 G2 e% a
    % |& o6 N0 H  G6 p& y, `

    ( E& L% `7 ]/ H; g5 K2 }MATLAB解一下这个微分方程
    3 _; B/ E: b6 r4 H3 d3 s$ A4 j) P
    " V6 R9 f' ~' N( Q- e
    y=dsolve('Dy=n*y*(1-y)','t');& d2 a& g' y: o- v1 _! y5 Y6 e( t
    . ?8 |  X( H/ j+ M0 l

    ' }* A  P' N6 g) J  a/ `; W0 p, ey =5 q; S; r2 I: X, ?1 t
    -1/(exp(C1 - n*t) - 1)' N3 u0 ~) F7 v
                          0' H6 R$ X3 O" \* T
                          16 R, w0 C" T' c( Z4 O6 C
    1# I7 {' w& s9 U' y  z
    2( `8 ?" ~) k0 u/ R) A' X+ e# t# L
    3
      L2 F" X& a3 O1 E. ?- W4) h+ c1 j" S9 h
    5
      l! U1 c4 B2 b: b6
    % G1 o9 p* o9 M6 X; Z: n写规范点就是这个函数+ P- p( x' ?% j) O- b8 g4 y7 K% C

    ' G% F; }7 q# w; X
    * i9 h9 a: M3 }8 P9 C
    函数图像大致为
    ) B0 A( f4 u5 x. }1 Y+ I9 U; m7 b* x" z0 _& l# h

      n& M7 A  K/ D! V- h9 H可以看出t = t m t=t_mt=t
    $ v1 [: A0 _! o1 s( o! Sm
    - k& N( x; f: E8 G/ A​       
    - Y# v( @) `1 y  h 时这里图像的斜率有个最大值,其也就是传染的最快的时候,即传染病的高潮时刻,当然t m t_mt
    ; x3 P# K! U2 `; C2 Gm) C0 A& k' U' _. m6 O9 Y" D! p
    ​        # a, z$ S7 X3 H0 z6 p# N7 H; v
    是可以求出来的3 i& ?  Z: J  L

    + \# g0 r& a/ M7 A6 Z( V+ F

    % p1 G- Z8 L+ g. I% _再看原式,当t → ∞ t\rightarrow \infint→∞时i → 1 i\rightarrow 1i→1# H- U' t9 t4 T
    病人的比例为1,当然这也是不可能的,因为我们还没有考虑有没有可能治愈,看模型三
    + n( C: C2 L0 N% }) q  r" w3 N. A+ U3 S7 S- E4 ^/ a" d2 n  Y" i

    / F. c& j7 B. E2 _  r模型三
    3 c9 S9 ^0 n/ ?! b% n假设:2 V4 j2 r: ~) [1 j+ G# h( Q' X
    " L! m4 p# Y( d( N5 C. _8 ~8 ~) C
    1 k; c6 O! N  |: b; a4 _
    传染病无免疫性如伤风、痢疾等——病人治愈成为健康人,健康人可再次被感染。3 A6 }, H1 Y* |2 W! {1 M5 c
    病人每天治愈的比例为μ \muμ (日治愈率),1 μ \frac{1}{\mu}
    2 o, ^+ X1 h1 s7 Z' E! v8 yμ
      s; g9 o1 D" ~& H( z) _' U8 X16 i# f  l4 L1 T" H
    ​        ) P  W. b9 U" l: [
    为感染期,, ^% `/ G  {- Q+ w  B1 e. e
    模型- K/ c! I. T: P" W/ o
    这是减去了治愈人数之后的新增人数/ W) L8 B5 ?5 [, O
    " f( v$ }: q  u7 s, |, ^' Z
    " r; Q  ~4 k, W+ }8 B  C2 m

    7 v/ X: B# F4 I& L
    2 X0 q9 U  C" u/ E5 t6 e9 _
    σ \sigmaσ 为一个感染期内每个病人的有效接触人数,称为接触数
    2 Q! b. [: K3 q  C
    $ }3 b: }/ ?' F( E# X! m, X, N& M/ _

    , B# M, V) n; M. X. R0 F* B可以画出上面的图形分析下3 r# @. \: C5 \+ l8 ?7 K
    ' V& D! }( W4 Q
    9 w" A% g0 |" j2 S
    对上面的公式进行分析,可以得到,当i = 1 − 1 σ i=1-\frac{1}{\sigma}i=1− 3 T6 c5 J% ~  p( I& ?+ T4 Q# R& }
    σ
    $ u: r; `( _8 x* O# Y  p1$ J: V; @* Q9 ?/ `. A; P
    ​       
    7 s! P5 h8 L: y; p: k% B: K 时,i ii对t的导数为0这也就到了i ii的最大值;当0 < i < 1 − 1 σ 0<i<1-\frac{1}{\sigma}0<i<1− ( h# R2 b$ l2 U* j! _' V
    σ# ^: g% a1 v. ]- E7 r8 ^! b
    1
    ! M) Q( U* Z8 D​        0 r6 q8 K$ ^' M/ I5 W3 Z
    时,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−
      w9 w4 b" ~4 {* v% n" y2 lσ4 A7 i; V  p; F- s& x5 P
    1
    + X# T, s. U4 T' j2 _; v3 y​        % ?# x/ Y- Q: u9 H
    ,d i / d t < 0 di/dt<0di/dt<0,i是单调递减的。7 U: F& k9 K; t8 _# ]3 S9 k
    9 z% l7 h+ r3 Y$ X( S  h! A8 T
    1 E0 X9 `; L5 H# P4 C
    当然我们也可以画出i ii随t的函数图像' h2 m& B7 y6 N! Z' q" p

    , A3 }+ U2 a9 i( k4 C1 T( f% X
    : y# x2 y/ }# B2 O9 g0 m
    先看红线,若初始条件i 0 > 1 − 1 σ i_0>1-\frac{1}{\sigma}i 3 {- N# H8 R( d& n
    0
    9 g7 u( Z6 f0 K9 a​       
    ' w3 k) k4 c( z5 j: @: U >1−
    3 N/ q) k- L2 @+ |σ
    1 e+ \( r; M* B4 d# r3 x! ~1" v) S8 h" t+ k0 Y
    ​        0 [) P1 H6 `" `" I2 I% S
    d i / d t < 0 di/dt<0di/dt<0,i就是单调递减的,
    + H0 M! M2 F! L& D# \5 e若若初始条件i 0 < 1 − 1 σ i_0<1-\frac{1}{\sigma}i
    2 ?. Y0 e/ m9 A2 t2 w0' K4 c4 G, |- q  t4 Y
    ​       
    * R( y, Q. e8 Q5 ]; L <1−
    ( D6 A5 J, f4 @6 vσ3 \* S* T' `  z7 h
    14 ?$ j8 F$ {3 i* U3 Y
    ​       
    - H. V0 `1 o( S' c0 v8 n ,i就是递增的,可以看到i对t的导数图像有一个最大值,下面的黑线就有一个增加速率最快的一个值,按S形曲线增长! p& _+ p$ s& \% g- F4 ^3 F
    7 C2 _7 H# W- U4 \7 h
    # z% v# _+ K8 u9 B+ B7 o
    σ = < 1 \sigma =<1σ=<1时d i / d t < 0 di/dt<0di/dt<0 i肯定是单调下降的,最终降到07 l& X$ n: k7 b
    2 ~2 n6 Z- `/ A7 I, \

    " ~! Q6 s$ }0 n- r( m# s/ F* A; I/ F6 e* f

    4 M/ N0 z# I. [6 U, _" G综上:2 N( z5 ^! \% T( E/ b
    想让患病者越来越少,σ \sigmaσ必须小于等于1,即感染期内有效接触使健康者感染的人数不超过原有的病人数.
    & s; W6 _/ c$ b/ ^# Y( x) r$ G* S- u; }* i! T$ i
    1 Q, N3 q9 ?/ L, Y' e
    这里我们分析的是感染之后还能感染的情况,但有些病毒感染之后会在体内生成抗体,就不会再被感染了,下面我们分析这种情况。" k% r$ g+ y5 {. S  m1 p/ L6 Y

    ( n/ l) H5 R2 ?6 z

    . a$ R9 [5 ]9 {% _6 ^模型四 SIR模型
    - ]9 t" f8 Q6 d. \) M' _+ i( a# |SIR模型是常见的一种描述传染病传播的数学模型,其基本假设是将人群分为以下三类:
    6 _- J6 l* R3 K
    8 O( b8 _- Z8 Q3 l/ g( Q

    . X# @# K: W' ]2 W, Q4 f1 易感人群(Susceptible):指未得病者,但缺乏免疫能力,与感病者接触后容易受到感染。' M% J3 c' [8 |: ?0 I8 _$ A
    9 j: V) w+ S$ D& ~, ]0 d

      U( ~) N% c' q* p6 w- t( ]2 感染人群(Infective):指染上传染病的人,他可以传播给易感人群。4 o0 t+ z5 c) ^8 x4 h

    7 v% _6 _% T& |
    & k& _/ U6 {  F% Q; x3 t) ?
    3 移除人群(Removed):被移出系统的人。因病愈(具有免疫力)或死亡的人。这部分人不再参与感染和被感染过程。
    - u  u6 k' `8 f$ f+ o8 Q/ ?8 E
      J# \3 P" }- u. U% r# N
    8 K1 d6 q. z& j/ J
    假设:
    % K6 X& e" J! [% Y; l
    ! H% G4 M! r  @3 ~

    . N) T5 u, [. P传染病有免疫性如天花、麻疹等——病人治愈后移出感染系统,称移出者(Removed).3 d8 x, o5 a. p% y4 C
    总人数N不变,健康人、病人和移出者的比例分别为s ( t ) , i ( t ) , r ( t ) s(t), i(t), r(t)s(t),i(t),r(t).. W- n( e+ w0 x
    病人的日接触率为λ \lambdaλ , 日治愈率为μ \muμ, 接触数 σ = λ μ \sigma=\frac{\lambda}{\mu}σ=
    0 o7 O! m+ w( |$ zμ& t/ ]2 V$ X" f1 H/ L8 J  t
    λ
    ; i  k  E% [% W1 l7 o5 D7 n5 }$ t+ w​       
      K- K+ p8 a$ [3 k; |( @) \6 |& w
    3 P; a+ u7 T3 |# R- W建模:
    $ S+ S  L) K) A/ u' }s ( t ) + i ( t ) + r ( t ) = 1 s(t)+ i(t)+ r(t)=1s(t)+i(t)+r(t)=1" ^9 J3 j' F8 P4 E- x9 v
    这个就是病人减去治愈的人,和上一个模型是一样的2 e: J( j. C' t; H) P
    $ B# e4 a( a( n3 ^

    5 l$ y0 N2 f0 I因为有治愈后是有免疫性的,所以可能被感染的总人数要减少,减去移除者就是% D7 Q4 R9 K7 [! ~
    2 m( r) R! i. d3 i0 ]/ {
    . @& z1 |2 g4 G$ s4 l8 ~' {# P
    将上式化简为:
    9 ]8 g; W6 v5 _
    7 E$ `* l7 `+ S% O% F2 n7 d# @

    # w5 g8 U; d9 g! X6 t/ C, a" Bi 0 + s 0 ≈ 1 i_0+s_0\approx 1i " k# N1 {. d) G/ Q- z* Y
    03 F$ J2 V5 k  N+ l, [
    ​       
    % x8 X7 F/ z, K0 [. ]; y +s
    : t, B9 P6 g% M& l" J2 u/ g  _; @9 _0$ Q. `2 Z8 B' D  @
    ​       
    7 ^) e' ?$ g2 P# y/ A ≈1(通常r ( 0 ) = r 0 r(0)=r_0r(0)=r
    " V  r- G7 Z% R' ]: s0
    + ?9 Z# ~5 `9 W' r9 ~) u$ `​       
    ! d+ F  R7 h( L% N! f) l2 z4 E$ E 很小)
    , m7 y% K* G& F5 K* s
    2 G2 {0 s3 H1 a! T2 f4 d

    - U" Z. L8 Z3 Z* |! k关于i(t) , s(t) 的非线性微分方程组,没有解析解,只能通过数值计算得到s(t), i(t), r(t)的曲线,下面来看下曲线的数值解的MATLAB程序
    ' R( ~3 T  ~4 ]' Z5 Q9 r( M- F
    , o" y; @  U; T" D4 N
    1 [6 ~  d; x! x: N
    这里我们先设λ = 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
    % V4 _( @. X+ i* M, D& d# t0
    ; K+ e- v$ w% {7 G( U4 ~​        ( o; Z( \0 ~0 p7 W
    =0.01,s
    0 w0 j- B1 u% H& j06 D+ P% n) t9 z( L6 t8 o+ t
    ​        ; g$ v( {+ e- R# Z# a
    =0.99
    1 u- {7 Z" J# r- b2 m) ]9 W: U也就是平均一个病人人传染一个正常人,治愈率为0.5;开始的病人比例为0.01,正常人为0.99,设没有天生带有病毒抗体的人,所以r 0 = 0 r_0=0r
    * @* P' P$ F! s& Y$ u0. F$ |& V& P, {# w
    ​        6 D% ^2 N: x  [) Z0 _/ g. w
    =0,之后若果病人被治愈,则具有抗体了,有抗体的人为:r = 1 − i − s r=1-i-sr=1−i−s
      B& B" w4 f% ?& ]
    / R: q( q) S+ ]+ {+ d5 S+ X$ z
    8 [5 C% k7 s0 x5 S/ n1 h
    ts=0:40;0 r& }  P/ c6 @2 E8 n  m( C
    x0=[0.01, 0.99];
    ( a, p, K9 J4 Y, o9 `[t,x]=ode45('ill',ts,x0);; N+ K* f3 Q, b% O9 ]( ^
    r=1-x(:,1)-x(:,2);2 Q0 V# N3 Y) \0 v1 P
    plot(t,x(:,1),t,x(:,2),ts,r),grid
    ! [5 ^, _1 E7 n! H  g  z/ vlegend('i(t)','s(t)','r(t)')# Q# T% \) h% \% n

    8 l& I$ O' Y5 G: x
    % W$ L% i( s- `' d/ s. y
    function y=ill( t,x)  _3 D4 N( |2 Z5 f: u& a; s  c
    a=1;& s5 l; R4 m+ G' ^8 a0 ~
    b=0.5;
    ; {6 M2 x7 L3 C" l! f0 p8 ^y=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];
    7 I1 R7 f: u; b3 y1; u6 G7 L* ^' G- o; T+ ?
    2& f# }: D' b% g# _. q, Y
    33 n. J- p) W) P
    4( X4 ~. U$ M/ y$ x7 l
    5
    9 ]& E6 e  l% y' e9 N1 X6
    % z, ]* g9 D' J7
    & l" [- p  E7 m3 k7 E. A' ?' Q83 L) j% m1 `# F% q+ O$ Y! X( ]! [
    9) T, [. L' W3 B- Y0 S
    10
    $ A" `/ T) w" I+ z! M11
    ( _6 l/ |- H* s+ l/ F' o) _2 D% e% M( _; `) R! R' V8 K+ b! s

    ( J# i$ d& |3 F! J可以看出:s(t)单调减,r(t)单调增,都趋于稳定, i(t)先增后减趋于0.3 Q8 j: E6 E+ l5 W3 I- u
    结果分析
    3 g: F' P5 b3 R. Z先回顾一下参数
    5 P+ l. v+ e9 ?7 Q1 r接 触 率 λ ; 治 愈 率 μ ; 1 / μ   平 均 传 染 期 ( 病 人 治 愈 所 需 平 均 时 间 ) ; σ = λ / μ   接 触 数 ( 感 染 期 内 每 个 病 人 有 效 接 触 人 数 ) 接触率 \lambda;治愈率 \mu ; 1/ \mu~平均传染期 (病人治愈所需平均时间);\sigma =\lambda/\mu~接触数 (感染期内每个病人有效接触人数)接触率λ;治愈率μ;1/μ 平均传染期(病人治愈所需平均时间);σ=λ/μ 接触数(感染期内每个病人有效接触人数)
    5 @; f1 j5 o2 m) b# E可以分析出:
    ) a9 r% Q7 [; n  X$ p
    7 `$ g2 b: u9 Z% T( C

      I6 a- {1 J5 g' L随着卫生健康思想水平高,接触率λ \lambdaλ变小6 m; }, u; f1 Z8 N% Z
    随着医疗水平的提高,治愈率μ \muμ增大
    % E1 }2 c5 q6 ^. i( P接触数σ = λ / μ \sigma =\lambda/\muσ=λ/μ减小——有助于控制传播.
    - p6 i# W3 c9 T& M+ d9 n5 S/ ?我们可以试试稍微减少一下λ \lambdaλ,增大μ \muμ,来看下效果
    % J; {) j5 }% t/ [% A2 o9 `* L: n  d6 G2 m9 z
      B3 _( ~" I$ g+ ]" j1 t
    ts=0:40;& P8 J1 L7 Z) \1 m6 z
    x0=[0.01, 0.99];2 c5 m( e- f2 n9 a& s5 z
    [t,x]=ode45('ill',ts,x0);
    0 e( Z3 o8 t9 er=1-x(:,1)-x(:,2);
    & |' a; P' l0 X+ r& V! I  ?plot(t,x(:,1),t,x(:,2),ts,r),grid
    9 L( ~. u9 J3 T& o3 b8 R- ^7 flegend('i(t)','s(t)','r(t)')
    ! d9 l0 z6 t- p( C' m9 y7 ^' S# U

      Q  o6 X) R! a# r& E8 Mfunction y=ill( t,x)2 s6 `* t# S2 h, i: d, A
    a=0.8;
    $ M, b* ?7 E0 u4 _2 _0 J$ Jb=0.6;
    / S" z% C' S" m$ Xy=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];7 R4 |, `0 d: T5 n. f; w1 `
    1
    , k0 S  [) U2 U: `24 ^0 C1 `! P' O4 Y# `$ r# B% i- N
    3' Y  r* s, d2 K9 ^  ^$ m' Z
    4/ W  [9 g9 L2 Y
    5
    ' N" c% D9 J5 P9 w: d3 C68 l; |: `% X8 A' r5 l
    7
    * `) E  u; R4 d8
    : G4 E8 \; Q2 U3 y4 ]# D# _1 i1 w9* p4 I" l0 z/ T) y: z
    102 @+ b: R* ?, w9 Q6 v$ G4 X/ V' h+ q
    11
    0 \2 W6 M! S3 R) N$ I3 X  V4 E4 x1 @+ {9 {# h) E+ q% j
    , @6 K) k+ S% ~$ N- D' K( [' y
    综上我们可以得出结论:想要减少传染病的传播,我们就要在接触数σ \sigmaσ上下功夫。
    & U4 |5 S6 Z- y+ W2 C. h
    ! f3 k6 V8 Y' b" f1 T/ ?3 U2 d
    5 S$ L% m: K6 z. ?- R/ ~% V
    实战建模6 v" l; c( N& I* G; Q
    数据处理
    * ]1 A8 X3 ]# M* I$ j" p( u! Q; k* Z* c/ X
    $ g; _1 M& B+ B$ I
    首先,我用python爬虫爬取了丁香医生官方数据,一共5534条数据 特征包括感染、死亡、治愈的总数,当日感染、死亡、治愈新增,疑似病例,时间,省份等14个特征6 s- P( V8 p. [& X% \( `( f
    # g/ z; ~  h" }: N- _
    1 X* Q' ~# ~* }* u: M

    / L5 S* i) Z: T# M5 j

    1 [+ I0 Y9 Z) Q2 V1 K然后用python进行数据提取,提取了较为典型的湖北省的数据作为我的参考依据
    0 f. l0 ?% `5 S4 i0 }3 Y% p
    " h$ v, n) l5 V; a

    ; M4 z' _8 Z' E4 Z
    ( a0 P' n# S2 x! w7 x1 |: k6 r
    / B" i$ O7 r/ U2 }- `
    然后用python对数据进行清洗,提取出了患病总数,现存患者总数,死亡总数,治愈总数,时间,省份这几个特征. t$ R( V/ P. `4 a
    8 _0 u! I3 M$ a: m- o0 u

    * c( r( x! B9 Q, _0 w  t对日期格式进行修改,值保留月和日,并与死亡人数的位置交换( S$ p2 r7 K+ x1 l! D( C

    ) ~5 x; c8 C7 V7 |4 F

    7 ~  |* W$ ~3 R这里我用python对提取的四个特征分别进行了数据分析(主要包括计算最值,平均值等,),并把1.20日作为第一天,7.02日作为最后一天也就是第165天,做了可视化可视化处理。8 {) T  s+ I& N' ^' g& J  ?3 T
    感染人数示意图
    " ^! c0 u( k2 [8 ^
    ' @8 X2 v9 D) P0 C
    . a( T8 ?2 {% r  |
    治愈人数示意图
    % L' K$ X) }, b
    ( q3 t: f4 i8 X' ^

    . @5 i2 ?4 Z9 \# `3 S$ z
    0 a0 l/ S' p' l
    ! [$ z/ s$ H( R' o% t' n* B# `, _* S
    现存患者数量图/ ?% L8 U  R9 f# u: Q9 X1 d, m. Q
    % z4 x7 c. ^, w" I' p& y
    + {% T# H1 [0 g  w
    死亡人数示意图/ [4 a! [% ~6 x/ p6 h" K+ T
    ; P2 W( G3 e( o6 j3 z) h

    4 a% m3 C8 y/ A2 [; _) s: [5 N8 [1 C/ Z9 D/ z( M* B; O
    . Q$ \! D) D% y# v  ]: y  q
    经过上面的图片与describe数据分析,我们发现有一天是异常的,患者多出了平时的十倍左右,经过查阅资料,这天因加强了检测标准,所以增多了很多。为了避免这个数据的影响我们选择将这一天删去(或者用平均数或中位数代替也可)
    7 F. D; [- {- G0 \将上面清理过的数据存放到csv文件中
    * x. D, Y! ~+ H  Q
    1 e3 B8 N0 |6 S) D* Z' C

    % I9 ~$ O# ]  z3 E9 [) B& ~4 E模型建立
    1 w+ N7 C( Q( m) C- F( n2 i) y模型假设
    ( a" l) O5 j) ]经过上面数据的分析,我们大体可以进行如下假设:
    3 H, T7 r; ]+ D1.由于不存在封闭情况,考虑开放体系。) A" g! J- T0 V- c3 r& V) `' r4 T
    2.目前数据以天为单位发布,因此不考虑连续变化情况,只考虑离散的方程。- O+ G4 U. f, W. |
    3.新型冠状病毒的治愈人数和死亡人数相对较 小,因此只考虑 Susceptible(易感)和 Infected(感染) 两类人群。设易感人群总数为N8 N' [# X( W' o+ }5 W
    4.经专家鉴定新冠病毒患者治愈后至少六个月之内不会再被感染,所以设治愈后移出易感人群。
    , P2 N. }5 ]- C" c5.设每个病人每天有效接触人数为 λ \lambdaλ(日接触率),且使接触的健康人致病.
    % t5 @6 {& [4 b. X2 s$ k( ^, Z6.设病人每天治愈的比例为 μ \muμ(日治愈率)
    5 e1 ~( S4 I4 s) s$ O7.时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t).2 F0 z/ |8 Z5 a4 \
    - S1 ]/ b7 X. ^0 f( l& [/ R

    ) U+ E& |: g! o( m5 P$ |+ Y' z模型一
      s  a" k( N% V! ~8 P
    4 j9 \  A+ b: k' q
    0 r: l! e; g; f  f5 e" f' c
    分析可以得到移出者r(t)=治愈人数+死亡人数3 V8 n& f7 k0 j' Y; j9 w7 ~$ @
    通过python数据处理,我们算出了r(t)的值,并将其可视化' H, Z, ?& @% p0 [$ \; ~
    * N) Q! n1 X  m' Y3 n! }% f& ]/ b. q

    ( [4 _3 _0 p6 _
    - h$ O! _' K  N6 I! F# A0 E

    2 |6 B4 k2 }" C我用MATLAB对其进行了拟合,拟合图像为
    ' @8 L; c3 r5 ~- X6 ]" o! k6 r7 C. v# L, D

    8 S$ {1 M7 R& o4 |+ ?1 z1 v; L, X& y; D) R, }+ ^
    : g7 k! m7 O: \! J1 g) U; W+ j8 V

    2 F! y& H! O! e5 H1 l+ _

    + b% q* k# q* H! o3 Z) f分析可以得到患者 i(t)=患病总数-移出者
    ! h- U6 a0 N* C/ D% G3 _0 w( k5 L8 n/ m可以通过csv文件的currentConfirmedCount 直接获得i(t)数据,当然也可以通过 i(t)=confirmedCountv - r(t)获得,对此我也做了可视化展示3 c$ m' q: ^) \& |3 Z( g8 N9 P
      n! A8 d- [. s

    2 S5 a6 E. B2 G5 {% V通过MATLAB程序对其进行拟合,可以得到r(t)的函数图像大致为
    3 t8 o& ~7 o* Y% F8 Z& E3 L5 R; ^: O+ J3 K7 \

    ; {; C$ @) P* R5 y
    7 V; i* K9 I3 U) D/ D

    - N: h2 r! d: _) C
    8 r( c! ?; G& E3 _4 x  q9 L
    0 ]+ V2 {" K( u
    为了方便,利于公式推导,我们先设时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t). 所以有
    1 G) ]+ D0 y8 h! Z7 T9 Q) |7 l2 p0 P# ~2 m

    . m6 I& I$ d& r) L$ E可以推导出每日新增病例的表达式+ h* o6 ]# V5 W+ B

    - ^+ g( E* Z/ y% r' J
    ( f+ O6 r: P. S

    . ?5 {1 C7 c/ {- w+ X! @
    & l) G* w( w$ V7 L' h  l8 k" p: Y

    6 \; o5 ~" f) b; m4 F
    , U$ m" H/ k* ?) n! J$ I: h
    由以上两个公式可以推导出以下两个微分方程
    4 u6 B; }* m4 `$ _
    3 \$ V- x9 Y0 d: o, s# x7 Z. L1 N
    ; G; j: b4 H* G" M5 u# z' O

    0 H7 b' b4 V( Z& n6 D, B$ S
    ; X8 y8 P+ T  V) ~: ]! M9 l
    可以知道初值0 A+ l8 X8 l, N4 g( J: a, W
    i ( 0 ) = i 0 . s ( 0 ) = s 0 i(0)=i_0.s(0)=s_0i(0)=i 5 K, E5 l0 o6 S+ Y4 A+ T
    0
    + s1 r, @2 }4 g9 w4 Z! F' O​        ( M5 D4 \& c% x3 b4 v
    .s(0)=s
    ' a8 w, @8 Z3 j( k5 Z02 n; c4 I: d. R, E
    ​        9 k% Z. y/ t7 u/ X  y
    2 W* Q; ?7 w( |) u. v8 I
    因为一开始治愈的和死亡的肯定很少,所以r0可以看为0,于是就有:
    ' g+ x( }( J7 x+ C1 J2 P9 K$ S" ^i 0 + s 0 = 1 i_0+s_0=1i
    - X! E( T) |7 x" i0 e0' t2 U, E9 |, D/ g
    ​        ) S4 @1 F$ M5 P5 \' R. ]9 _
    +s 7 C5 C: G2 B8 i  ]* D0 c3 |1 C* J* s
    0
    * `* j7 Z( @  i6 X2 x​       
    + \8 J3 ]# X0 ` =1) I1 @2 m- S' \' d
    通过解以上微分方程我们可以根据经验假设λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)的值分别为1和0.5(也就是每个患者可能使1个正常人患病,患者可能有0.5的概率被治愈);由于一开始患者肯定比正常人少很多,所以我们设i0=0.01,s0=0.99。对其求解可以得到s(t), i(t), r(t),的变化图像
    : v/ u. }$ G2 j: Q- y( k7 R
    2 G) I( n; c* ^

    # y& s: f7 I$ y
    ; Y9 n3 z9 W2 b  e! u2 ]
    $ v( ], C8 y' t- W+ B6 K3 @( s3 @
    MATLAB程序如下
    " Y" ?: ^1 q! q8 q- ~& x; ~ts=0:40;0 u- a4 |& x: l6 n+ v% N5 X
    x0=[0.01, 0.99];" |" |3 \( K1 V4 X2 ]
    [t,x]=ode45(‘ill’,ts,x0);
    1 E* X* B9 R: s4 q9 _: g$ Dr=1-x(:,1)-x(:,2);
    4 v( l1 w6 p; j1 b" R+ X: }- {plot(t,x(:,1),t,x(:,2),ts,r,ts,x(:,1)/x(:,2))
    & `, n4 N. i3 P; T. K- O! Flegend(‘i(t)’,‘s(t)’,‘r(t)’)5 w- v: u& `% A! a
    - Z, l- s3 j  w0 T$ y
    & i( ?( h, `0 h3 m# F% w3 r, B
    function y=ill( t,x)1 h! z  f' }5 H9 y& |6 L) g; T
    a=1;
    7 Z/ @1 U& D5 f6 \$ }b=0.5;( M$ {+ ]6 n" n; f" w! e2 w" ^
    y=[ax(1)x(2)-bx(1);-ax(1)*x(2)];1 ~6 O% _6 \( J3 W  [) J; j5 d% L: Z
    1 P; A8 O: g; t

    " A0 k+ x8 g4 ^1 {7 c; N结果分析:患病人数肯定有个高潮,但之后高潮就会减弱,并逐步降低为0。随着医疗卫生条件的不断提升,患者的 λ \lambdaλ(日接触率)肯定降低,μ \muμ (日治愈率)肯定上升,所以我们可以把λ \lambdaλ调一点为0.8,μ \muμ调高一点为0.6,可以得到以下趋势图。所以应对传染病很关键的一点是我们要提高医疗卫生条件
      m1 I( g3 Y9 G# `0 v) z
    1 m4 z4 C/ |+ J* d8 i4 W! b
    : W5 `4 i2 e8 m  w& F* S
    & L( r7 I& J" Z4 H# I/ E
    模型二
      Z& S' N* w7 j2 m5 }  G3 z) X$ {; Y8 [. j
    ! u: C. N* f& U4 I- P5 H% `
    实际上,λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)都是随着时间变化的,这里我们设s(t), i(t), r(t) 为第t天健康人、病人、移除者(病愈与死亡之和)的数量, s(t)+ i(t)+r(t)=N..8 d" Z, w$ J6 m6 l6 P
    (t), (t) ~第t天感染率, 移除率(治愈率与死亡率之和)) \. E) A" j1 B% A6 ~
    有 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)9 _" }2 N1 P$ E/ s- i
    因为s远大于i, r,s(t)视为常数,所以有
    $ c  Q1 |2 G: W- c, f' L3 ?  D. _8 P/ G& Y8 s) q" t. d( v6 i/ j

    9 v. z' I! }& ?% R  g$ o0 f
    - F% E* V9 P3 ?3 U3 g! Q
    ( j) [% I: ]& |- ^; t
    取差分近似导数
    2 v# e, d$ v1 {, k
    8 Z+ k7 @% T* n2 G3 s
    ' k4 Q& Q* G& }! U% Y
    7 u) m& H# B6 V/ D' e
    6 G4 d, H& ^! y  o) W
    我们可以先用真实数据对(t)进行展示并进行拟合
    ( o; Z) y1 I5 {* w# W5 {, y" D- J
    8 X* s1 u- ^0 s4 b
    % |4 q1 d9 z5 r* f6 W

    / }0 b4 ^. E4 _2 }1 f+ R) `  A
    ) U% \; M8 I3 L9 _8 @
    当然同样的方法对(t)进行拟合/ ?  E/ ?) p; u+ U- J4 r
    ) x) V$ j0 k/ Q( b! ]' L/ @) z+ G- J

    1 a: w( }: F& P. h, i, Q做不出来了,好难,光这些东西就弄了四天,到了数学建模国赛得多难多累啊,哎,让我这个小白手足无措。毕竟还没有正规的培训,这个模型等期末考完试一定好好做做!!!: \, ^. H2 i/ ?( G. [4 C% _0 v$ [
    冲国奖$ N; R; l3 M* {6 a5 L" F5 m
    冲国奖
    6 p' Y  z: S$ J. V冲国奖% X: D, u+ q& y4 ^  N& o: L7 h
    ————————————————
    2 E, i  T/ z) R0 f3 f: b# a# ~版权声明:本文为CSDN博主「小白不白嘿嘿嘿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。% D1 X. ~9 @$ J) ~: m* w
    原文链接:https://blog.csdn.net/weixin_45755332/article/details/107094630, T, L  o$ @4 n! w& _3 N

    8 j% j! g, ^4 v2 o
      G8 J# o: @0 u1 `- r. ~! `2 a
    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-2 00:49 , Processed in 0.441752 second(s), 51 queries .

    回顶部