QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4927|回复: 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
    2 O) Z2 M, I' \- d
    数学建模之传染病SIR模型(新冠真实数据)# |8 s1 T1 f3 P# ?: S: }! d
    传染病模型的基本问题# S4 C/ b% H  r" A! M. F
    描述传染病的传播过程
    % B1 ~7 G6 H8 N' N2 C分析受感染人数的变化规律
    + R5 \' u. K" n0 n  A, e, k预报传染病高潮到来的时刻
    5 ]6 z2 X! t; L  Y8 c0 F- ]6 D预防传染病蔓延的手段9 U4 Z; l# z. {  i" m
    按照传播过程的一般规律用机理分析方法建立模型  g  r  P1 G+ a# U
    注:我们这里是介绍数学医学领域中基本的传染病模型。不从医学角度分析各种传染病的特殊机理,按照传播过程的规律建立微分方程模型.# f) |3 B% B, s. z. ]7 ]

    7 ?* Z  ?4 r/ @5 [, t; a

    9 H; A1 E; G! _2 H* c建立模型7 I& t& Y- G' d9 b
    模型一% A4 H1 N5 _9 R# A% M0 C( h. A
    假设:
    " f" j! b. S- |5 H
    - y) I+ Y% [# z) {  D) X3 t
    2 r0 W) j8 d3 |6 E( L1 C
    设已知感染人数为i ( t ) i(t)i(t)(病人数量随时间变化)
    * h5 X! Q+ [7 X& S+ t设每个病人(单位时间)每天有效接触(足以使人治病)人数为λ \lambdaλ
    5 d, L- t4 q1 C/ m8 R/ w4 L  G模型:
    " y- V3 u  Q9 E* t, p4 k9 V- c单位时间Δ t \Delta{t}Δt内,新 增 的 人 数 ( 现 有 − 原 有 ) = 原 有 的 × λ 新增的人数(现有-原有)=原有的 \times \lambda新增的人数(现有−原有)=原有的×λ,即- U* k- F9 X. o6 I. {; ~
    9 B( W0 n5 h$ l  n; W( [# ?5 y
    6 {1 _6 d- X$ I! H5 k$ o5 N
    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
    / {; ]$ [! U/ g: y$ M4 [% N" k一开始的感染人数为i 0 i_0i 6 k( Y* W/ ?) j5 V4 h( C) ?! k2 `) d
    0+ R2 N; \4 d' l7 O0 F* Q" H
    ​        : Z/ n9 \! n9 R, ]7 Q: j9 L, Y
    # ^3 s8 }9 C* V# _: s/ r
    i ( 0 ) = i 0 i(0)=i_0i(0)=i
    ) J- t( ]( ^8 i2 D03 s9 a- Z1 c, y+ O8 K
    ​        , C$ b6 B  [- M- v- j
    ) u; \6 F) r8 D4 p3 Y
    解微分方程可以得到: c$ L( ~% U2 u+ g, W
    i ( t ) = i 0 e λ t i(t)=i_0e^{\lambda t}i(t)=i + f8 E# ~! ^( |& }
    0
    * |  o2 I4 S3 g2 y​       
    8 A7 {; v2 H. }  w- W" [  A4 E  P e ; Y" s) x! |, |9 R- f& J
    λt! b" a1 s9 n+ g+ N
    2 I7 S3 G3 o" O
    所以可以可到当λ → ∞ \lambda \rightarrow \infinλ→∞时i ( t ) → ∞ i(t) \rightarrow \infini(t)→∞
    / C& s+ N* a: V当然这是不可能的,因为我们考虑的因素太少了,首先一个是,若有效接触的是病人,则不能使病人数增加,所以必须区分已感染者(病人)和未感染者(健康人)看模型二来解决这个问题
    ) n/ S! K* o& E, ?4 b( Z7 J; J* a+ O6 O9 x+ Y

    ) v5 O( M( i7 `% \; Z模型二/ z2 T6 C) d& s& g: I6 l
    假设:, s" l3 e8 `- W# j& t! n8 {

    * e% \! j. B7 s' X3 J
    + ]  Y) N; S, T# g: Y
    将人群分为两类:易感染者(Susceptible,健康人)和已感染者(Infective, 病人).# o  r: g& _6 k+ p+ \. X$ T& 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: a+ i4 [% R. K; a每个病人每天有效接触人数为λ \lambdaλ(日接触率),且使接触的健康人致病.
    0 X" b* ^( o8 _- g. Y8 e& T建模:7 m3 R# F3 d% ^2 `3 S
    每天新增的总人数为原有的人数乘以每个人可以传染的健康的人数,再乘Δ t \Delta tΔt$ ?6 Y( Y7 Y" h3 y+ m0 k! j. \: n
    4 _; [) e1 ~2 j; L5 K9 O
    , a1 `' l1 z  y% n9 w% u& I
    Δ t \Delta tΔt除过去,两遍N约分得到下面,
    . I& U# V. }+ H* ]2 P$ u, D- U0 ]1 g! d% e

    9 N8 t0 w/ v+ T. k; [% A3 ]MATLAB解一下这个微分方程
    8 g  q; n6 k0 o1 Z/ `5 s# N% I, H
    - t4 C! x) R; H

    " o' ?+ D8 S$ k% py=dsolve('Dy=n*y*(1-y)','t');
    & l  h9 [. Z+ x) m+ {: O( o
    ( m) {* z6 C. W0 R/ K" k

    1 f$ b( P% @& e' ?; z( B1 c: Ky =
    5 v7 L2 ]% V; _& B7 \ -1/(exp(C1 - n*t) - 1)& V% h& |: X7 R1 k& \
                          0* {9 w2 H5 v) k. h( J
                          1
    5 E& ?( M4 Y- K# y- P$ O& Y1
    9 S+ ~8 V; }8 \8 |5 P: {" a2
    * w6 O1 a  o; E: _, D% Y7 ~3
    5 u+ R4 r- `7 V, D% g4* K) u0 _0 {, a9 w; W9 N
    5
    & N) y/ }: s7 e6* v9 E; ^" m* ]
    写规范点就是这个函数9 R5 b0 `7 {" N  A
    0 Q! T9 i; F7 x7 t9 d, L0 }! r3 Y; J
    3 V2 x: L, N; l: i
    函数图像大致为
    : v* f5 v- d3 h6 q* s' `" K/ k  c- e
    3 m0 Y' S' g5 S) n3 n( `6 n$ z4 ^
    可以看出t = t m t=t_mt=t
    4 y0 R0 ]( B& F: |% E/ t! `m, X- @& f, b7 H% r; c. e
    ​        ; N, s% |0 ^! @9 R% V9 v! n% T
    时这里图像的斜率有个最大值,其也就是传染的最快的时候,即传染病的高潮时刻,当然t m t_mt
    / D- E: M3 g% Fm. v" t, o" C4 v# N4 O4 X
    ​       
    9 g: k* t$ q( n0 L7 ?3 w$ a 是可以求出来的
    - C% z& g( L0 w; d! r$ d& Y4 h1 B% J) \1 W+ {. m

      N* ?6 D. U& c再看原式,当t → ∞ t\rightarrow \infint→∞时i → 1 i\rightarrow 1i→1
    ' \  E2 G  z% \! N* B病人的比例为1,当然这也是不可能的,因为我们还没有考虑有没有可能治愈,看模型三
    ' X% U$ X6 o1 h# b  V) z$ G
    # `4 `# {* [1 q' K
    & A3 B/ i; F6 m8 E
    模型三" ~, x  M+ A. J4 \" i" v' a- U5 |
    假设:( X+ m6 E% d  I( Q) f: |
    1 [% e0 {0 _9 e, z, y
    8 b( e/ A: H/ [
    传染病无免疫性如伤风、痢疾等——病人治愈成为健康人,健康人可再次被感染。. ?4 H/ h9 f+ j  _' F& E# X
    病人每天治愈的比例为μ \muμ (日治愈率),1 μ \frac{1}{\mu}
    + V6 R4 q) \( U* jμ7 \. q: `) j5 B% n2 B2 W
    1: f5 E# ]2 V  F: |4 y
    ​       
    & X# t0 q& k- ~- H1 i% J 为感染期,
    & {7 I- M  F# q' H. i模型4 K1 p  w6 T/ m$ q/ w
    这是减去了治愈人数之后的新增人数0 o: `  _' w0 U  x

    9 @  p7 d4 C% M
    3 Y1 b) ?* B) \. A. u1 f) x

    - k; c* y/ {5 t

    5 E8 V, g6 Q1 t& g8 b, `σ \sigmaσ 为一个感染期内每个病人的有效接触人数,称为接触数
    / a% g3 H+ G& R* c! Q( w1 E  e: J
    ( q3 O9 l$ J) r4 Z- g. |0 U/ h4 _& l
    可以画出上面的图形分析下- L* L/ t% f& Z- \
    1 r5 I& U/ Z: C; n6 X$ S

    - D3 u# m8 U! x- _, i+ e对上面的公式进行分析,可以得到,当i = 1 − 1 σ i=1-\frac{1}{\sigma}i=1− 1 [& r* A  M  V- h* Q0 Y
    σ4 A3 m% I  V$ f+ B$ R
    1& B: M* A/ m2 K. M% F, ~
    ​        4 \3 ^1 d+ H1 z: K9 R4 i
    时,i ii对t的导数为0这也就到了i ii的最大值;当0 < i < 1 − 1 σ 0<i<1-\frac{1}{\sigma}0<i<1−
    ! `+ p  \4 ?! H$ wσ. W% Q6 k8 \. _1 S5 n& J0 e6 d5 G
    1
    & c" C. m  ?, \: x! `8 D0 O( b- E* D​        / y  x) i  F+ R% 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−
    - V) n4 S+ |: J- y3 l* iσ
    8 B7 [: B" [( X/ Y5 i. J1' G! x7 j; Y7 a- _$ s. f8 S3 T  D
    ​        " C, }/ |$ U+ T. H# e# }
    ,d i / d t < 0 di/dt<0di/dt<0,i是单调递减的。
    , ]+ x1 }1 Z$ T& K7 p1 U- G0 ~% f! d* ~- m' J4 b0 u( ]
      f" A  G! k9 q/ M
    当然我们也可以画出i ii随t的函数图像) b% e) ~$ n; P% q- {) K

      z0 p4 q8 X& t- ?' D, t3 C: a: O
    0 G9 R% b) j' q% C
    先看红线,若初始条件i 0 > 1 − 1 σ i_0>1-\frac{1}{\sigma}i   V9 r; x$ Q3 s- p3 `
    0/ k- v/ }! q: }- B5 K- X
    ​        & ^5 X7 [8 m- ?" o3 C! N1 D: Y  O
    >1−
    % U1 x  t! ^5 ]" c9 @σ
    4 i" S- k/ \/ j& }# Z5 A1
    . p7 ~3 {& S- @, t5 p% S​        9 R) S: s# G( b: o  {
    d i / d t < 0 di/dt<0di/dt<0,i就是单调递减的,
    , @1 E8 W2 v! S. K7 R. m/ f3 S6 q若若初始条件i 0 < 1 − 1 σ i_0<1-\frac{1}{\sigma}i 7 A' b9 v. S, K& j! R( [% @, F2 V7 {4 p
    01 f2 p# R) h/ F8 w: j! g
    ​        ) {% T  n3 Y+ |" y$ E
    <1−
    * t6 l# U& _% q: U, X1 Sσ; i% C+ g! i' M6 }1 B6 j$ ~
    10 @' w3 E; ?6 a; m$ {0 S
    ​        5 X6 E) x: {1 c+ D9 n
    ,i就是递增的,可以看到i对t的导数图像有一个最大值,下面的黑线就有一个增加速率最快的一个值,按S形曲线增长
    1 S; q4 h9 B* e% b! s: p( b
    9 y$ [+ E+ H3 l2 c

    & q5 b5 l1 d1 [, B( eσ = < 1 \sigma =<1σ=<1时d i / d t < 0 di/dt<0di/dt<0 i肯定是单调下降的,最终降到0
    & V% l, ]- v, D  V, h, \  |1 V
    ! \2 W! i. p+ e: F( @, k
    + P. g- [# a1 c
    8 s5 p+ M7 U# K5 L+ w/ [; L4 L

    ( n( }5 Q# F* J- z# Q( l5 N综上:
    : T4 A, I  N7 u3 i1 r2 I2 ^想让患病者越来越少,σ \sigmaσ必须小于等于1,即感染期内有效接触使健康者感染的人数不超过原有的病人数.
    % K5 g5 n4 ?/ Z8 B- ?% o" [1 G4 _- ?0 @# y

    ; W& \0 k2 ?5 r  {/ p; r这里我们分析的是感染之后还能感染的情况,但有些病毒感染之后会在体内生成抗体,就不会再被感染了,下面我们分析这种情况。
    , x+ C7 \9 E7 }' o, K2 L) Z, {/ v4 [9 S. l0 Q: B/ g

    1 v9 }+ O# X  k0 R+ ^4 \7 R8 v模型四 SIR模型, ^( s: }. M1 S
    SIR模型是常见的一种描述传染病传播的数学模型,其基本假设是将人群分为以下三类:* }0 t/ U4 F* D5 E6 u. O

    ) g+ S  V1 ?: z" @" H  G1 P
    4 h- i+ R5 [8 P% v8 a
    1 易感人群(Susceptible):指未得病者,但缺乏免疫能力,与感病者接触后容易受到感染。
    9 [9 Q4 ^- k& ]. m, |. |# L* B
    8 Q% \# P! Z8 _2 _. M

    / P# H6 Y5 X* [2 感染人群(Infective):指染上传染病的人,他可以传播给易感人群。1 p3 H5 N& F. i

    9 T0 |, a! o; a! Z, x, w4 O
    : C8 {, ]* W4 J/ p; B- ~
    3 移除人群(Removed):被移出系统的人。因病愈(具有免疫力)或死亡的人。这部分人不再参与感染和被感染过程。3 U2 f2 _7 i* v" L  _: S1 S

    2 R) ?/ M% `$ N: P

    3 ^4 w& N4 d6 Z  u& Q( G! p假设:1 \& y6 {7 b6 K" @- D) A* s3 g6 s
    , `5 f8 k+ g$ c2 ^& \

    5 c/ Q( G8 A; z! j& ^5 r: n' E5 q传染病有免疫性如天花、麻疹等——病人治愈后移出感染系统,称移出者(Removed).( L, U# }) p  k& g2 L4 ^7 r. k
    总人数N不变,健康人、病人和移出者的比例分别为s ( t ) , i ( t ) , r ( t ) s(t), i(t), r(t)s(t),i(t),r(t).6 e" I: f/ N+ H9 }) E+ I
    病人的日接触率为λ \lambdaλ , 日治愈率为μ \muμ, 接触数 σ = λ μ \sigma=\frac{\lambda}{\mu}σ=
    1 Q* b, j2 {" L- hμ
    : p, I1 W, w( z' U& cλ
    ) y" A) K+ f+ {; m$ h​       
    9 P( C7 ~2 O& F5 s 8 g/ V  @: d- X9 l' _7 C* u- e
    建模:
    3 L! G- Y+ ~% n/ Y' j- ts ( t ) + i ( t ) + r ( t ) = 1 s(t)+ i(t)+ r(t)=1s(t)+i(t)+r(t)=1& m3 G4 u+ a9 B1 m7 b: B
    这个就是病人减去治愈的人,和上一个模型是一样的
    . a# Z; D6 }5 e$ c0 a+ A5 N5 H1 ~6 b2 k. q  Q

    0 W; S: ]; ^% |  U因为有治愈后是有免疫性的,所以可能被感染的总人数要减少,减去移除者就是; z7 R& T8 u6 J5 o  L
    ( e1 K9 f% ~$ f: D! ?
    * [5 k( `7 u9 t! j; J1 \
    将上式化简为:
    , S2 \, Y; V, `2 a9 K2 Y  F" l  U: c, t2 v
      {2 l# ~# W8 w0 ?  K
    i 0 + s 0 ≈ 1 i_0+s_0\approx 1i
    4 P  c" \& Q: k+ i! M9 ^  T5 f0" C& n" T* F5 n8 {$ C" ]; R2 Q
    ​       
    5 W; c9 v/ x* r4 X) } +s 0 Z" C* D* q. Q" d
    03 N, G; u) g4 M0 P8 U$ R: x& Z
    ​       
    * ^! t- M3 _5 l2 y5 C1 J6 J6 p ≈1(通常r ( 0 ) = r 0 r(0)=r_0r(0)=r # B% i. l/ D3 |- |3 o  ?# n
    0% o0 \1 o9 R: ~5 \7 }+ y3 Z
    ​        - ~( P8 b, x% X: n; F- |
    很小)
    : c3 c- H1 b0 ~- L. p& W5 [+ a' @/ l" z: z) ~2 v
    8 b8 D' _  a4 t/ G2 j( k
    关于i(t) , s(t) 的非线性微分方程组,没有解析解,只能通过数值计算得到s(t), i(t), r(t)的曲线,下面来看下曲线的数值解的MATLAB程序8 h% R- M% M6 K. I7 x4 g( ^

    2 v  f2 X7 r4 }7 X" ~$ f

    * T! }; y+ G! s) C: ~这里我们先设λ = 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 * w7 g2 ~" y0 ]. y. R# ]( Z
    0$ y1 |4 r  ]8 b
    ​       
    . E/ e# h1 A4 M  w% v =0.01,s 9 a  k1 u5 i2 g( u& m) d
    0( I4 g. K/ _# s: N$ z  T
    ​       
    - L6 a; R7 k! u' S# g* _ =0.99
    . Y4 c' o1 ~+ q& `也就是平均一个病人人传染一个正常人,治愈率为0.5;开始的病人比例为0.01,正常人为0.99,设没有天生带有病毒抗体的人,所以r 0 = 0 r_0=0r % G5 i/ m- J! |! ^. V
    0; m. r. b/ ?  L. T& t
    ​       
    ' l4 K$ e6 Z, } =0,之后若果病人被治愈,则具有抗体了,有抗体的人为:r = 1 − i − s r=1-i-sr=1−i−s
    $ ~+ H- B, U8 x  R; k1 @2 F7 m7 [5 k  g* ^" l4 z

    % _. F' q) G7 J0 ^% A- b: ets=0:40;
    9 l6 V" O) R' X" P3 N  l! Ux0=[0.01, 0.99];6 [2 n9 [9 z! t: `: b
    [t,x]=ode45('ill',ts,x0);: y& E6 _6 K1 M7 ^" D, V, n0 L
    r=1-x(:,1)-x(:,2);
    4 R' Q& V+ ~6 }0 P* t# {plot(t,x(:,1),t,x(:,2),ts,r),grid
    0 y3 f5 D5 L" Y6 Ylegend('i(t)','s(t)','r(t)')
    4 S( d+ k6 \# }
    8 ?2 j& }* Z# n

    1 _- {" Z7 v$ h% H) P5 Lfunction y=ill( t,x)
    : E# x" U0 j0 Ra=1;
    & n+ t5 \2 d6 }. Kb=0.5;
    - M4 s  Z( u- Y6 j7 x' ^y=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];
    + l0 {7 k( Y/ D- t/ K7 {, J1
    : E- W0 p: R* ?1 c9 f, G, F4 K/ E2
    / K' C2 G5 |" }6 @3 [8 }6 k34 _' \1 a3 }$ K" Y
    4
    * P! m* E# i+ Y8 j4 E1 m3 E2 N5
    & o. i, H) y4 Z/ c/ u8 o6% C/ I5 t* k( T$ x; e+ s/ k( o
    7& Z% j4 S9 z- k2 F1 w) l. X
    8. o6 ~: o; R$ \! p! l; u2 X
    9
    ( X1 t- M  c) H10; C# r) i/ Y! d% v5 y3 k- u7 d( k
    11
    2 \5 z& ?* \' f# H8 H4 _* L6 b6 l+ [3 C: b$ G; \3 K

    * ?7 s: l) }9 ^2 b5 p( c可以看出:s(t)单调减,r(t)单调增,都趋于稳定, i(t)先增后减趋于0.# S4 Q% G3 D2 b, Z& _6 o; W! h: w
    结果分析
    ( C1 N' q7 o) K7 s- N先回顾一下参数) N$ l" O5 h: V: p8 C( W, F) A% b
    接 触 率 λ ; 治 愈 率 μ ; 1 / μ   平 均 传 染 期 ( 病 人 治 愈 所 需 平 均 时 间 ) ; σ = λ / μ   接 触 数 ( 感 染 期 内 每 个 病 人 有 效 接 触 人 数 ) 接触率 \lambda;治愈率 \mu ; 1/ \mu~平均传染期 (病人治愈所需平均时间);\sigma =\lambda/\mu~接触数 (感染期内每个病人有效接触人数)接触率λ;治愈率μ;1/μ 平均传染期(病人治愈所需平均时间);σ=λ/μ 接触数(感染期内每个病人有效接触人数)% {# i+ Y% P* o6 y7 i: A1 S% @: z
    可以分析出:# _; T6 ^; `7 w0 i

    1 f- Q9 q7 ^; A* s
    ( c" X3 ~6 |* c2 `  t
    随着卫生健康思想水平高,接触率λ \lambdaλ变小
    % C  a. `" b- t( a* g/ V随着医疗水平的提高,治愈率μ \muμ增大
    5 p! `9 l& k$ ]( h# k接触数σ = λ / μ \sigma =\lambda/\muσ=λ/μ减小——有助于控制传播.+ n; R$ e4 M+ S4 G* F" x9 b
    我们可以试试稍微减少一下λ \lambdaλ,增大μ \muμ,来看下效果6 Z2 Z/ K& s8 ]- f. }; e

    ! `' @, V- z+ v
    + D- k: C- [' N: o
    ts=0:40;. O* _8 n, I, z2 e/ G# Z4 h5 ]
    x0=[0.01, 0.99];
    . s) F1 x$ M9 D[t,x]=ode45('ill',ts,x0);
    : Z; {9 \( T5 qr=1-x(:,1)-x(:,2);
    * }% ~- D8 d  u9 vplot(t,x(:,1),t,x(:,2),ts,r),grid
    ; {& l& H, V, [6 e. O. dlegend('i(t)','s(t)','r(t)')
    , o/ I8 [3 ~+ X4 H+ |: A- R6 J) K0 Z! i2 ?7 f( [

    3 B9 ?& X2 ~/ S# ofunction y=ill( t,x), q4 F% o( p7 t+ u0 V2 j2 c
    a=0.8;
    3 [1 x1 {1 J' d$ n/ Cb=0.6;3 T) K. _) U) U$ m) ]( ?% m% p5 i
    y=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];
    / G$ H) p5 r4 m6 I  b# [1
    " w# c# S5 c  U# I; @2% Q/ ~8 I4 s5 l
    3
    3 `# ]0 a7 a) y6 u; w2 E4+ M. e: z4 g% a' r
    5' W4 u6 f1 d2 ?/ D8 q1 y2 m- V: O
    6( X' r! H& t; Z1 A) p3 @8 m# ]
    7
    1 ?7 I, v& d  h5 F/ A# O0 }84 m1 ?8 Y9 s% o, w+ J
    9- ^. f8 y1 q0 w- B2 V* b
    10
    / U+ x$ N2 F0 ?" R3 v; Q11
    3 `$ n- r. o6 U- B9 p7 e
    % v1 c+ Q6 C* d) H

    , G. D4 k! z7 X2 z- s综上我们可以得出结论:想要减少传染病的传播,我们就要在接触数σ \sigmaσ上下功夫。7 k1 k9 f+ ^+ T6 E0 T4 w- T

    4 C' T" p( |$ [" x  V
    . ~6 p& H3 s. @; g9 ?8 _# X
    实战建模) y* }+ Z# `* Q, T' \7 o3 n1 ^& d
    数据处理4 {8 l, V  q* K' _) d9 n( H# {

    . X1 D9 _6 c0 E& U& y$ \, c

    & n, S/ }+ Y1 G/ [首先,我用python爬虫爬取了丁香医生官方数据,一共5534条数据 特征包括感染、死亡、治愈的总数,当日感染、死亡、治愈新增,疑似病例,时间,省份等14个特征$ n4 ?/ l6 `8 Q9 j; f

    : D9 O# V% e) ]2 i  k. M" w
    " O2 W- |: K3 R+ \& n- X( D, i
    ' }" _* O2 t, m

    ! q! _7 q5 m& A1 @4 a' R+ [8 ^然后用python进行数据提取,提取了较为典型的湖北省的数据作为我的参考依据
    2 H9 Q+ i3 S( B  m
    3 H+ o4 N# ]" q  `1 A

    * u7 g6 g% [9 e5 q
    ! s, E" l% ^' D

    8 w3 X& x* @2 x/ Z/ m% Q然后用python对数据进行清洗,提取出了患病总数,现存患者总数,死亡总数,治愈总数,时间,省份这几个特征; ]& U# A/ Y: H; j. V; F: Z# T

    - U/ x1 {: W. _/ V9 N3 N

    4 z2 j* @# x9 Y0 f对日期格式进行修改,值保留月和日,并与死亡人数的位置交换* Q: X" H% {4 C4 d
    ; ]3 q) f2 r: v6 w8 b( n- x2 R

    ! g* P  A$ {2 ^+ k$ g( }. S! R这里我用python对提取的四个特征分别进行了数据分析(主要包括计算最值,平均值等,),并把1.20日作为第一天,7.02日作为最后一天也就是第165天,做了可视化可视化处理。6 a1 [! M0 `* i/ D4 t
    感染人数示意图4 E0 W) n& N" o, P
    4 V* ^& K( d1 B
    ( C5 V+ |6 Z' t9 U8 M
    治愈人数示意图
    ! m- d" c; p/ M) W
    * M6 c" o# D& `! \4 u
    # u' Y: i' Y* x2 }8 l
    5 z& P  d. }1 Y; j
    " X6 {$ A  W& f1 R) y) |# L
    现存患者数量图, g1 a  p! r1 V" Q5 G( d0 w, [
    ! H8 @+ J9 X# A6 H- Y$ s
    ! c3 W+ Z. r% j9 d
    死亡人数示意图
    ; b8 ~, w6 F; r: ?! @3 z
    $ b$ h' S- @9 F* A( y4 O, ?3 U
    * Q4 E/ O' T* E
    # P, i& I  w" \9 C1 c
    ; I2 q2 Z3 \0 @+ f7 f* r
    经过上面的图片与describe数据分析,我们发现有一天是异常的,患者多出了平时的十倍左右,经过查阅资料,这天因加强了检测标准,所以增多了很多。为了避免这个数据的影响我们选择将这一天删去(或者用平均数或中位数代替也可)2 p- i# j7 n( x- d# p
    将上面清理过的数据存放到csv文件中
    & X! q* o# F  p( }' x
    $ s1 o$ w. K3 ]" L: @" ?3 a

    7 X- O# h9 \) i% z模型建立  h7 x. q! j' `, j+ A' _
    模型假设4 H9 l- ?& C, H/ i( [
    经过上面数据的分析,我们大体可以进行如下假设:
    9 @8 V7 j' k* T  `& p1.由于不存在封闭情况,考虑开放体系。
    / A+ `5 a8 l3 j! D1 N' i/ }- o2.目前数据以天为单位发布,因此不考虑连续变化情况,只考虑离散的方程。
    " j1 }- k" L1 N( v. X, C6 e3.新型冠状病毒的治愈人数和死亡人数相对较 小,因此只考虑 Susceptible(易感)和 Infected(感染) 两类人群。设易感人群总数为N
    / F2 v, I& m, t; U4 Z3 v0 u4.经专家鉴定新冠病毒患者治愈后至少六个月之内不会再被感染,所以设治愈后移出易感人群。
    $ W( \! w6 d: x9 d. V5 j5.设每个病人每天有效接触人数为 λ \lambdaλ(日接触率),且使接触的健康人致病./ X+ C# Y9 N! m
    6.设病人每天治愈的比例为 μ \muμ(日治愈率)
    & g% R7 Y' v' G) w5 L  K3 H7.时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t).$ P4 N8 d; c- ]7 c' J

    5 N; u  @; u8 c: p) ]9 k! [3 K
    4 H8 u- b/ w0 V- X6 s
    模型一
    % i6 I$ f5 e; W0 g8 W4 A
      z) h% w. w% w' m) v

    , i1 }2 `0 F, Z$ C' }$ d- N分析可以得到移出者r(t)=治愈人数+死亡人数
    4 y& u( I8 U; w; ^通过python数据处理,我们算出了r(t)的值,并将其可视化
    ' |: w( \  U( W+ h
      k; Q. g/ f5 d
    ' s3 j9 `- w- q' e3 h7 [

    5 v9 v/ h- E" n- i0 U
    * n0 @4 `3 H( D4 g3 k
    我用MATLAB对其进行了拟合,拟合图像为
    - v9 E; R, h" o/ l8 y0 a# P" x, }* w/ @

    8 n0 O; ?) I9 D, c& f5 D$ }9 F5 l. U2 k! J, g0 ~

    ( b- k. a6 {( y% ]- a+ W" W4 m" ?! a0 H$ _; e: c6 l

    8 F. r. g( |& i, G分析可以得到患者 i(t)=患病总数-移出者
    3 f% a: T. o: e( ]( o1 A* ?可以通过csv文件的currentConfirmedCount 直接获得i(t)数据,当然也可以通过 i(t)=confirmedCountv - r(t)获得,对此我也做了可视化展示
    1 T0 }, \0 y8 K: @6 \2 Y8 {( v. @2 a# F% r- M3 X% U2 p
    ' A- x, ?# O- L/ G( i5 r0 ^' c  p
    通过MATLAB程序对其进行拟合,可以得到r(t)的函数图像大致为
    ) l* P& A. `8 }3 `  F3 u' a, c# J
    4 R4 z$ Q; ]+ x, {/ n3 g& b: B3 O
      T: b$ B0 W: y2 c1 I' l7 G4 X  s$ G

    9 g4 C6 Q1 \0 j; A4 E, X

    8 l, K$ F/ T8 D9 g$ }% Y& }3 W( Q, ^6 g  F; R

    7 ~$ s, Z7 i3 Y; }8 a为了方便,利于公式推导,我们先设时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t). 所以有0 C3 k- u5 F3 _$ A0 Q

    / N3 N- a+ M( U. b; R3 T1 Y1 ^% s
      ]5 k- c) O& z) j: \. y- r( V2 n
    可以推导出每日新增病例的表达式, S% g6 ~( U. ]8 a; a! T% \! c
    & M, H' c7 K3 e; g4 |5 ^7 d+ g
    ! @! c0 `* D* W% k1 S- E
    4 ], p) P, |& u* m! Z; u) t" b5 h

    ! ]# @) F  l! t+ a/ e
    1 {% R9 |! S4 V8 ~/ F

    9 R3 Z7 B8 }7 a* J: g由以上两个公式可以推导出以下两个微分方程2 W, C. n7 ^% b$ i9 a5 @

    2 z; X0 `6 ^9 @; y

    5 M3 B" t' t% E# d+ y6 p2 F& ]5 @) D2 b4 N7 Q5 H

    9 ?6 G" W8 X) b! \9 E- ~* L9 _可以知道初值
    4 V$ p* o4 ~0 n$ h" J) {i ( 0 ) = i 0 . s ( 0 ) = s 0 i(0)=i_0.s(0)=s_0i(0)=i 2 k4 H  A2 R3 |$ j7 ?* Z2 i
    0+ {# K# d2 A  F; w5 q6 z! j
    ​        % w8 d/ x, U' b. j6 k' O3 ?# M
    .s(0)=s ) q! i8 {. y# B/ A( G
    0# |( r# s# o3 h3 G% {# N, x
    ​        " n/ B, F) m2 c  J9 e
    2 @% e8 N" v( z  w6 Q! k7 h
    因为一开始治愈的和死亡的肯定很少,所以r0可以看为0,于是就有:6 e3 D% M$ E* R0 e1 J
    i 0 + s 0 = 1 i_0+s_0=1i ; }, L3 [. c2 h: I& A
    0% G) e& {- B/ h( T# |* K9 y
    ​        1 |8 i7 D' T; |$ f) H
    +s ( q9 _1 A. f6 V6 q/ O  E) W
    0" {$ g& b' K: W; Z/ S, s0 |
    ​       
    , v; L- c9 D2 s  n6 w( c$ _+ Q: e =10 A2 Y; \- Z! Z; D* X1 s0 L! b# u
    通过解以上微分方程我们可以根据经验假设λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)的值分别为1和0.5(也就是每个患者可能使1个正常人患病,患者可能有0.5的概率被治愈);由于一开始患者肯定比正常人少很多,所以我们设i0=0.01,s0=0.99。对其求解可以得到s(t), i(t), r(t),的变化图像
    " {$ v6 t: R  V) E; V2 q9 x
    , i+ w3 ~$ @8 V$ T$ N# ~

    + i+ h8 ]& d$ ]$ m& I% f! p& E1 g$ m3 |5 G* O( ~& o
    & U. N. l2 t  [; B
    MATLAB程序如下
    2 m7 [1 H+ P8 D2 f  k& _* {ts=0:40;; G7 [, @+ z$ m  f4 Z8 }6 f' a( M5 k
    x0=[0.01, 0.99];# X% K; s) p9 ]7 w+ c
    [t,x]=ode45(‘ill’,ts,x0);
    % N+ I# B' f# V5 g/ Kr=1-x(:,1)-x(:,2);; a" \. E3 I5 H4 w
    plot(t,x(:,1),t,x(:,2),ts,r,ts,x(:,1)/x(:,2))
    / L' H$ j0 C4 {' ]; X" W3 U: |legend(‘i(t)’,‘s(t)’,‘r(t)’)1 G0 Q5 D2 ]6 [3 b

    5 {+ F( g+ h' M! m7 }) P, w

    3 V! Q* V% O5 b& W8 W7 c# ]. ufunction y=ill( t,x)
    $ f  k5 }" L4 f! ?1 na=1;4 e9 _/ x# w. u" @! D3 @
    b=0.5;
    2 p- o( t- [3 |, g! ^y=[ax(1)x(2)-bx(1);-ax(1)*x(2)];( w0 R' p6 `7 W$ t) W- }

    8 V& h7 j  n% }! i/ [

    - b6 w1 O! d' a# t+ h6 G/ P- O结果分析:患病人数肯定有个高潮,但之后高潮就会减弱,并逐步降低为0。随着医疗卫生条件的不断提升,患者的 λ \lambdaλ(日接触率)肯定降低,μ \muμ (日治愈率)肯定上升,所以我们可以把λ \lambdaλ调一点为0.8,μ \muμ调高一点为0.6,可以得到以下趋势图。所以应对传染病很关键的一点是我们要提高医疗卫生条件
    1 |) g' B5 s+ g. `  R0 ], |- m5 [" X& }! |+ d, H; j. j

    & S% I+ l! N6 R7 u; V: @
    4 ?- u: r- }; S  \4 n模型二
    ( F1 _# _4 d) [3 T, P
    - ~, X7 I, m5 c5 Z, z

    , K( J5 a, s4 i' K) G% d$ U2 @实际上,λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)都是随着时间变化的,这里我们设s(t), i(t), r(t) 为第t天健康人、病人、移除者(病愈与死亡之和)的数量, s(t)+ i(t)+r(t)=N..( k2 [# X5 Z( L% J9 R
    (t), (t) ~第t天感染率, 移除率(治愈率与死亡率之和)/ @3 c1 k; r* _1 g) B
    有 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)
    $ Y8 k6 {' a1 b7 {因为s远大于i, r,s(t)视为常数,所以有
    ) Q* O  d; b  k# O' o9 F# e% g3 Y$ E. p# S6 P9 M: A% T

    : o) Q( X# Q3 N2 s( O
    8 |% q1 a( C+ P% O2 i: j, t
    ( I. k5 H0 O  J, V; M' S& K
    取差分近似导数* b7 s2 s; f. P) k9 }
    % P! @- a' g  H$ {: @+ o

    # x  W+ {6 Y4 K' U3 S% B3 [* ^
    $ |$ P, X2 Y4 X! B) I, A1 V; w

    # d9 n% N2 z0 L1 f我们可以先用真实数据对(t)进行展示并进行拟合
    / [0 |5 r& k. \$ \3 S
    ' M) X; m' L3 N( F

    $ |1 N( |% q) i$ K# E0 n( \# u
    0 }2 o5 ]% \! v* E
    / w" X$ `7 N9 `6 Q; E# ?2 [
    当然同样的方法对(t)进行拟合8 I4 z1 |6 J4 N" o3 K5 X$ c7 k

    5 _- [5 S! g% c* v: ?- k

    1 f. N& g8 d: L做不出来了,好难,光这些东西就弄了四天,到了数学建模国赛得多难多累啊,哎,让我这个小白手足无措。毕竟还没有正规的培训,这个模型等期末考完试一定好好做做!!!
    4 r, |8 M. V: L. `冲国奖
    % ?% F0 K7 X9 D  }% n- q- F冲国奖# m9 ?2 ]: n$ ^3 A8 _
    冲国奖
    0 z9 n: c1 A3 j" K4 r————————————————
      q$ {3 M8 j" r4 Z$ d: k* R版权声明:本文为CSDN博主「小白不白嘿嘿嘿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    ) P2 _2 O! i9 z( Y4 z1 j* h- M原文链接:https://blog.csdn.net/weixin_45755332/article/details/1070946304 {# W: o* P( V, H# `% K3 C

    : J& {) Q3 o; [% u1 F! i/ V9 w+ g9 c7 l; G# \, w6 p6 t
    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-11 05:14 , Processed in 0.675482 second(s), 53 queries .

    回顶部