QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5686|回复: 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
    * |9 Y& @# D$ G
    数学建模之传染病SIR模型(新冠真实数据)8 B3 U0 q9 k; N% P3 e
    传染病模型的基本问题
    # f+ t" @5 w7 k/ @2 X9 `3 e( M描述传染病的传播过程
    % v- x. {8 |. ?; L. O分析受感染人数的变化规律& f) h$ f+ y) O, Q' y( z
    预报传染病高潮到来的时刻
    ( i- j2 K" N8 Y7 n7 E% t5 E预防传染病蔓延的手段
    3 c6 U, h, t8 j' W4 N9 M  K  s" i按照传播过程的一般规律用机理分析方法建立模型
    $ T: q! V/ o) N  h, A4 K注:我们这里是介绍数学医学领域中基本的传染病模型。不从医学角度分析各种传染病的特殊机理,按照传播过程的规律建立微分方程模型.& e; e& o8 M8 @- @/ E; _2 S" \
    : P2 B* |4 N4 b

    # }9 R9 J7 c5 h% j' M建立模型- H/ O8 R7 k' E
    模型一6 ~9 r5 v$ ~5 H
    假设:
    + F# Q5 {( ~3 P$ J# `
    - l( ^* X$ W$ d
    7 p& i& z  A1 w1 G7 m2 ~" P! F
    设已知感染人数为i ( t ) i(t)i(t)(病人数量随时间变化)
    ) U- U! o) i7 T% M5 F设每个病人(单位时间)每天有效接触(足以使人治病)人数为λ \lambdaλ+ S; t" `9 o# i  |  e
    模型:0 u1 U$ B  w% ^4 V1 J9 i
    单位时间Δ t \Delta{t}Δt内,新 增 的 人 数 ( 现 有 − 原 有 ) = 原 有 的 × λ 新增的人数(现有-原有)=原有的 \times \lambda新增的人数(现有−原有)=原有的×λ,即
    3 ~8 F* [: c  ]8 ]  n4 T5 S! q* J+ q7 ~0 ?* l7 v: S" \

    5 V+ e% v( @0 f1 C" 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  M: w0 {& V1 f
    一开始的感染人数为i 0 i_0i
    / M9 _5 q% o" k5 j% j7 u0
    9 l6 {6 w' r4 K, J$ r' k( O% }- {​        ' W% t; I4 f  V4 }% }
    0 B3 u& E6 Y! Q
    i ( 0 ) = i 0 i(0)=i_0i(0)=i
    % T. c9 w* o* v7 M4 C0
    6 U! r$ @) J; b. V7 a​       
    1 W! j: |; W" ?! C( ~
    0 u( ]8 ]( O0 R* `& E1 P0 x解微分方程可以得到
    * B* |$ g  a1 S2 ]  B6 K" ui ( t ) = i 0 e λ t i(t)=i_0e^{\lambda t}i(t)=i
    ( C0 k( z- d! D5 u. Q0
    ( L9 ]! D. A; o​        : G3 D$ J$ n5 F  P0 z. H/ t
    e
    8 S7 Q: k0 y- F4 A) Y8 Z- d. Qλt$ X" }0 X( P7 M# f# Q' w7 L% J
    " X9 q& i; n, l" ?' o  X  T
    所以可以可到当λ → ∞ \lambda \rightarrow \infinλ→∞时i ( t ) → ∞ i(t) \rightarrow \infini(t)→∞
    ( A2 R& o  g( `8 ~" l+ E; F当然这是不可能的,因为我们考虑的因素太少了,首先一个是,若有效接触的是病人,则不能使病人数增加,所以必须区分已感染者(病人)和未感染者(健康人)看模型二来解决这个问题' c  f7 B: B# j' P  K5 l# o) F

    " E) U2 {( C% q- _& d5 [+ u; D$ K; ]
    * E3 P. {: A1 x6 V! }4 ~+ G
    模型二0 X6 E- B, S' [' n5 V$ k' p
    假设:- \0 Q! t" w; ]3 [5 I" |2 t% T6 u

    ; ]8 _; M  T, b/ v6 g$ P7 C* Q

    0 q4 D" l1 }  |  g将人群分为两类:易感染者(Susceptible,健康人)和已感染者(Infective, 病人).) g8 n- h( c" a3 T5 j$ J/ p( \# j1 K
    总人数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
      y1 m. U) n) g/ b* T7 i每个病人每天有效接触人数为λ \lambdaλ(日接触率),且使接触的健康人致病.2 z8 U- a0 d, d0 @
    建模:
    ( R0 D7 R- j" P. H3 u每天新增的总人数为原有的人数乘以每个人可以传染的健康的人数,再乘Δ t \Delta tΔt! A8 ?3 Z. E7 \* {+ W; j

    . \& F3 D/ y+ B2 x9 p0 p3 }

    8 Q# g6 Z$ [0 d' _. mΔ t \Delta tΔt除过去,两遍N约分得到下面,6 W2 F$ W, M4 ?% x" Z# A8 l+ @- m
    * K3 P9 w: m1 @) \/ A  s
    ( w- U- J8 K) x5 z8 q, o
    MATLAB解一下这个微分方程" V% |* X8 |2 }$ l7 o3 d

    + W6 a; z) q7 `7 v+ p

    + S8 b, p; ~4 p3 D. Z  b% fy=dsolve('Dy=n*y*(1-y)','t');% j% `- Q1 M6 h  V3 `: H- I* b; y
    / J; I9 I- B/ H: p

    : C, l! O* g' c4 H- g9 d$ S; Wy =. K* [1 W) w# s* F. N# R  A
    -1/(exp(C1 - n*t) - 1)8 H9 t7 s9 S( \
                          0
    . y# q5 Y2 b1 d6 Z2 `8 d                      1* a5 H7 D* O6 F, G+ e1 `! \
    15 A  o, R, V! L
    2
    4 W/ S, h. j5 U" j6 ?5 ~6 [3
    % P% N5 e. a# f8 z* ]6 d: |4
    ) T* y4 f+ l/ _) W6 i- L) p53 x" O3 f8 ?/ d' I
    6
    6 S9 W# E4 A' p写规范点就是这个函数  {: t* |0 g* h, a+ ?

    " o& ^/ S# v  c

    ! F$ l0 q0 }0 }  u函数图像大致为
    ) @; L) J0 @* @0 }0 ^
    , \3 i* Q3 {" x# \

    6 d/ d- k; u, x9 N可以看出t = t m t=t_mt=t 8 m1 L1 {: `5 b  \, H7 M! F
    m+ V+ K0 s1 [4 F# Z* v6 t
    ​       
    8 F9 h# @2 a" J: A9 W. \' v+ K 时这里图像的斜率有个最大值,其也就是传染的最快的时候,即传染病的高潮时刻,当然t m t_mt 0 [4 L  \8 h- i
    m9 E" Y! C( u* }: W
    ​        ( v: {7 r% z) T- f
    是可以求出来的% L" ?3 u1 g7 p4 T/ a6 n

    $ ?$ I8 X! n: m2 I
    / \4 w. m2 g2 h7 j
    再看原式,当t → ∞ t\rightarrow \infint→∞时i → 1 i\rightarrow 1i→1  w; g2 A8 S( }/ y
    病人的比例为1,当然这也是不可能的,因为我们还没有考虑有没有可能治愈,看模型三
    6 `# f# U0 x, m; m* L7 {0 T  B5 x& X  [6 {8 C2 `' E- Z

    & _- o  D! b0 w& d: n模型三0 h2 H2 }' K  a
    假设:
    - y$ T1 s: ^7 h$ G3 {: J
    / z2 w1 N- N5 U6 N
    ; W7 D9 F. X& P# s8 ?6 D, ~9 i3 Y
    传染病无免疫性如伤风、痢疾等——病人治愈成为健康人,健康人可再次被感染。1 e4 o* H% `' B& M& M+ _  l7 e
    病人每天治愈的比例为μ \muμ (日治愈率),1 μ \frac{1}{\mu} 6 M3 m* n& L5 r6 k
    μ
    0 Z1 d" N  _5 e- ~1$ S: s+ s- b) w5 T0 d3 t8 s7 j
    ​       
    * Y5 [. m. H# Z/ M& c, R 为感染期,( L7 V$ E! o* u
    模型% r  V+ V$ V. X
    这是减去了治愈人数之后的新增人数- O. K* M) o1 n, E% L
    9 b6 H: X0 I4 t. f/ k

    4 l+ A  P) x2 g2 L' Y& H  j% X  e
    " p" e3 f6 M  f' h. b
    4 A/ u- B8 o9 C% ~( u- {5 R
    σ \sigmaσ 为一个感染期内每个病人的有效接触人数,称为接触数
    9 d! {  r9 o2 Y! _3 I* _2 M7 m. m! i  S# k& Q

    * `  S' o7 N1 ?. J/ v3 B7 f可以画出上面的图形分析下# k% F7 E5 Z3 Y4 {. C2 O

    # {- ?& O0 Y+ Z  B; @8 M2 w+ w% B
    ( M* b, D' C3 E
    对上面的公式进行分析,可以得到,当i = 1 − 1 σ i=1-\frac{1}{\sigma}i=1−
    " I7 L! P7 S/ @8 w0 Bσ$ k* {0 F4 [4 Z. g$ [
    1
    ) ?, x: y" B! S1 y6 x# |​        5 M! o* q5 F4 i1 u5 x* f9 ~2 d. m
    时,i ii对t的导数为0这也就到了i ii的最大值;当0 < i < 1 − 1 σ 0<i<1-\frac{1}{\sigma}0<i<1− 0 ?* ?, D& B2 w4 R$ P) |4 I
    σ2 ?+ ~8 g4 s$ Q  }
    1. u/ ~8 ~/ s! F2 T1 J0 U
    ​        : i! g2 ]0 D# E
    时,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−
    5 L+ o1 Q& \6 a! b3 q! A& C- ?- ^; Qσ6 `6 p- J7 V) N7 x* p
    1* a% _7 \$ q* y+ f) W
    ​       
    ; f. g7 y2 b  S  u ,d i / d t < 0 di/dt<0di/dt<0,i是单调递减的。) d, s0 q, S. S8 G. N
    5 e3 n4 b' X: i
    1 \' M" {7 v" {4 D( I3 I+ S2 j- @
    当然我们也可以画出i ii随t的函数图像; c2 n3 Q9 {7 R- j' _
    3 B5 A6 n- ^9 @

    3 Q5 t6 p1 n. y) q先看红线,若初始条件i 0 > 1 − 1 σ i_0>1-\frac{1}{\sigma}i
    - T1 t" Q  z) J2 ~0
      l$ }; _$ K( L& L8 T0 ?# J​       
    9 B  K: I& |& Q6 t# p4 H& w7 Z: r >1− 2 Z3 m1 B! W. o" q  x+ b) k
    σ
    1 |9 E' R# W7 l( ]. F3 Z1
    2 y# t& D2 q, [& g. M​        . o9 I9 ~. M' a3 b
    d i / d t < 0 di/dt<0di/dt<0,i就是单调递减的,
    + Q  l, p! l* R- J2 L9 R8 W: o% ?若若初始条件i 0 < 1 − 1 σ i_0<1-\frac{1}{\sigma}i
    + a# l8 D# d* B4 F02 Z6 }) G. b6 q) l- Z, b
    ​       
    ) U) I3 D  d1 I* ^" z <1− ! |# w! t' {: t3 m. J
    σ
    5 y" n1 g: j; g$ _- V. l3 D! R- q1( c, a8 |) \% Z# ~' P7 l9 _8 c
    ​       
    - u2 @! D6 k: q' c3 m& S7 _ ,i就是递增的,可以看到i对t的导数图像有一个最大值,下面的黑线就有一个增加速率最快的一个值,按S形曲线增长& F( ~" U5 Z- [! c3 Z; _. z# p0 D  }# s
    ; b/ e1 E( P3 W: j
    ( q5 J" `  H3 j& u8 o
    σ = < 1 \sigma =<1σ=<1时d i / d t < 0 di/dt<0di/dt<0 i肯定是单调下降的,最终降到0: H8 H0 V4 q4 x2 d$ l( Y

    ! o$ M- ]& O$ G7 S

    4 C* |8 \) l9 f' l7 c7 S
    4 }' {) d* {7 h* g) }
    4 `/ |! n0 y' X& d) a- z
    综上:
    - L# K/ ~- V' q0 [' v1 I想让患病者越来越少,σ \sigmaσ必须小于等于1,即感染期内有效接触使健康者感染的人数不超过原有的病人数.
    / v6 i+ G2 y# Y2 h7 h
    3 `% [1 Q# P3 _! ~& U
    0 A- J) l7 O- ?& p) J( e
    这里我们分析的是感染之后还能感染的情况,但有些病毒感染之后会在体内生成抗体,就不会再被感染了,下面我们分析这种情况。8 B8 Q+ p- Q, p( h- E. ]* m

    2 ?8 [3 d! n+ i  i" k

    $ b, P5 w5 i9 ?' P  c# J. y模型四 SIR模型
    4 A9 S6 l& y" o8 @6 r) ?' b9 XSIR模型是常见的一种描述传染病传播的数学模型,其基本假设是将人群分为以下三类:1 l- _: U* {; I/ X' a
    ! [, S9 o1 ]4 g& k' C2 t

    . Z; \2 U2 m- O4 z1 易感人群(Susceptible):指未得病者,但缺乏免疫能力,与感病者接触后容易受到感染。* K% E6 O0 u  c: ^$ A4 _1 F

    ; H2 @( h4 s! p" X$ N

    , c0 M  K; L- s/ h2 感染人群(Infective):指染上传染病的人,他可以传播给易感人群。
    : O7 V) }1 C$ W: M. s
    ' C- _- ~! @5 L* E3 o2 G: ^
    5 [9 e' Q# X4 ^7 S; q2 L
    3 移除人群(Removed):被移出系统的人。因病愈(具有免疫力)或死亡的人。这部分人不再参与感染和被感染过程。
    # k6 P( ^) G: |, d, ?
    % @8 @7 j( c, o# R' f# z
    % u3 V* O% @3 C6 ~: ~; L
    假设:
    ) r" |" \* z! S% m" G3 C- }1 l) |) r, h
    # {' R% k1 k& i1 h
    传染病有免疫性如天花、麻疹等——病人治愈后移出感染系统,称移出者(Removed).
    ; l, C/ d9 J, I总人数N不变,健康人、病人和移出者的比例分别为s ( t ) , i ( t ) , r ( t ) s(t), i(t), r(t)s(t),i(t),r(t).
    8 e6 r2 L% V% y1 p* \; O+ e* y病人的日接触率为λ \lambdaλ , 日治愈率为μ \muμ, 接触数 σ = λ μ \sigma=\frac{\lambda}{\mu}σ= 8 K5 w4 |% V8 l# n% ?# ]0 d
    μ3 t! n0 ^8 O0 a% d+ L
    λ
    + P6 d! O& h4 H5 D​       
    ( w8 P( F! G. Z, S# E$ M 8 V- c* |8 o) @
    建模:8 Z5 V+ C; l- q1 @& q0 a
    s ( t ) + i ( t ) + r ( t ) = 1 s(t)+ i(t)+ r(t)=1s(t)+i(t)+r(t)=1% U. n1 _; s3 d1 r+ M7 {( ^+ N
    这个就是病人减去治愈的人,和上一个模型是一样的
    * P0 a  D, v% e! @7 L! G, F6 o
    . f6 w9 [. y2 U
    2 A6 H4 _3 _1 y$ P( W
    因为有治愈后是有免疫性的,所以可能被感染的总人数要减少,减去移除者就是
    4 J! s* m& Y- o9 ^
    - r: X$ c1 E- y  Y

    0 `( w# L9 c' L, W" V0 T将上式化简为:) h6 T! p! u" p) Y* s
    1 ^, F+ b) Y* k. z

    / D/ L+ K5 y) z; W. s/ h8 e& G) Ki 0 + s 0 ≈ 1 i_0+s_0\approx 1i
    5 s" J9 H- k/ \+ g# n0 N0
    0 Y8 ?. B2 H% G) j: w. b% O​        3 b" {9 A/ h. p/ ~
    +s
    # c9 F; O7 _" q0% n: B# A5 t& _' S. t, o' U
    ​        7 V, k0 `- L1 ?& B0 @( {+ f; S# g$ X
    ≈1(通常r ( 0 ) = r 0 r(0)=r_0r(0)=r 4 @! g- X4 W% g' ~$ |
    0
    ) ~3 z1 U4 H2 r# L! [9 h​       
    ' f7 E6 z1 }  |4 s, [ 很小)
    / r0 G. C% T- e8 v( b0 @
    4 L& D  M; O0 v+ D7 Y8 U4 O( ?

    8 n/ e4 k( K2 l) e6 M关于i(t) , s(t) 的非线性微分方程组,没有解析解,只能通过数值计算得到s(t), i(t), r(t)的曲线,下面来看下曲线的数值解的MATLAB程序3 J' h: ]' u4 v2 w

    ; e: `0 ]/ Q# P$ z2 T6 g! c" a- O
    - G. v3 D+ N& V3 M
    这里我们先设λ = 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 & y6 B" Q7 g  c
    0. e3 Q3 m& Y* d+ r" B
    ​       
    & o1 U6 Z) `& p9 Y# n =0.01,s
    $ r6 [" y; T. `! ]5 R0
    " F/ G  I# e) w: v+ T/ ~. J+ [( M​       
    : X1 b; Y: O- p =0.99/ ?1 @3 W! a" E
    也就是平均一个病人人传染一个正常人,治愈率为0.5;开始的病人比例为0.01,正常人为0.99,设没有天生带有病毒抗体的人,所以r 0 = 0 r_0=0r ( N0 j9 F: Z, D' |0 T
    0
    / @6 M1 L2 M  A4 E: r* k​        - p9 `! A# K$ C$ n
    =0,之后若果病人被治愈,则具有抗体了,有抗体的人为:r = 1 − i − s r=1-i-sr=1−i−s
    7 j, h2 Q7 {" o( N+ h9 f4 X
    . L% E$ k; G0 |* E: l+ x/ ^
    $ d8 H% x' w0 _9 U/ o. e
    ts=0:40;- d/ C6 N7 O# n. Z/ z$ y
    x0=[0.01, 0.99];2 A5 b% U( J) `& u
    [t,x]=ode45('ill',ts,x0);
    8 X1 Q) Q6 G" K7 Z# i" A! K2 b. jr=1-x(:,1)-x(:,2);
    / b  g& A* ~/ E0 F; L& u% C: Zplot(t,x(:,1),t,x(:,2),ts,r),grid
    # n: S1 h+ X1 |% M% Xlegend('i(t)','s(t)','r(t)')
    0 h6 J- H$ B4 A) a- [. c/ e$ N" i2 S
    ) h- G6 Y0 v0 a
    function y=ill( t,x)
    ' ]/ v! F, X1 s9 Ua=1;. ^" L( e8 O0 |4 Q, B7 q) u
    b=0.5;" P( T  d8 e# N( h
    y=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];* }! U4 z9 X( o/ W& \- l
    12 _& T7 S0 K/ {9 R
    26 s; j) Q. H+ V" z/ H8 M% s( T% g7 N
    3% a' t4 m' G5 v2 ^5 `
    4) Q) w) G4 Y2 j# a. g# H5 u
    5
    9 @' V0 x' T3 A) _+ ^6
    ; E7 }1 S0 F& ]& f3 O( R0 [$ b' t) I$ |' d7# V+ Y/ [3 [" Z+ o1 j
    8
    % U- H: u$ s3 f4 a7 s/ h& A1 `  j/ X91 \, ^+ p+ H1 X; `( @6 N) H) e6 B
    10
    0 K1 i, |. v1 c11
    0 }  h4 U# V% l  m$ ?
    ' B* A7 k% v+ I3 ~4 q* K

    . w" x5 V& S! ?6 j# k可以看出:s(t)单调减,r(t)单调增,都趋于稳定, i(t)先增后减趋于0.
    5 S% v0 U) ?0 f7 b1 g结果分析
    1 o& J4 Z! m' x8 b' M先回顾一下参数
    ) G, N( H2 e: m& t3 j  a接 触 率 λ ; 治 愈 率 μ ; 1 / μ   平 均 传 染 期 ( 病 人 治 愈 所 需 平 均 时 间 ) ; σ = λ / μ   接 触 数 ( 感 染 期 内 每 个 病 人 有 效 接 触 人 数 ) 接触率 \lambda;治愈率 \mu ; 1/ \mu~平均传染期 (病人治愈所需平均时间);\sigma =\lambda/\mu~接触数 (感染期内每个病人有效接触人数)接触率λ;治愈率μ;1/μ 平均传染期(病人治愈所需平均时间);σ=λ/μ 接触数(感染期内每个病人有效接触人数), Q1 [: Y: ~/ \- C% F/ h
    可以分析出:% @& [& y# [, W: P$ ?

    + Y& a! a) F4 ~) a4 A/ t+ }
    ( i1 D4 E4 X- d9 o& ?$ u' Y
    随着卫生健康思想水平高,接触率λ \lambdaλ变小
    + d% l$ j4 t3 P6 F2 {" k4 J随着医疗水平的提高,治愈率μ \muμ增大- p  U) ]5 R4 [& M' G
    接触数σ = λ / μ \sigma =\lambda/\muσ=λ/μ减小——有助于控制传播.' Y* Y9 l3 X8 p  a$ ], c" ~
    我们可以试试稍微减少一下λ \lambdaλ,增大μ \muμ,来看下效果
    5 h' W& n7 u" W5 y8 F* o- Y( s7 e$ {) z# j, H9 R. o
    & n: |% T) z. o' l, H' S1 I
    ts=0:40;- l" N$ l2 j7 Y9 E$ \7 D
    x0=[0.01, 0.99];
    4 @+ l1 ]8 I0 }% ]# S[t,x]=ode45('ill',ts,x0);
    % [) u+ }0 M3 H5 {, {2 B) wr=1-x(:,1)-x(:,2);' u: V4 m5 d3 K8 B; {* t& d  \
    plot(t,x(:,1),t,x(:,2),ts,r),grid0 f, l  S! g  a) S
    legend('i(t)','s(t)','r(t)')" y) ?" e: w- B+ D# b& Q) \

    + Z" O! R* T1 H0 ~4 c9 d
    ! \9 Q1 F: L% V: H
    function y=ill( t,x)3 r, c) v$ f9 a2 ^) P4 f
    a=0.8;' I0 i# W! O* w. Z6 R) j
    b=0.6;7 }( b; g6 Y" f4 p0 N
    y=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];
    8 o' q7 n/ Y! {1 p" m1
    * }+ Q: \3 j. k) [9 M  z24 g# s8 E4 y- i% w* d% f
    3
    1 J3 ?' l% f$ J: N/ s% G4( F# B3 L/ p& S- @: p5 G
    59 p% t1 [9 y$ I( c' p$ e) E( j
    6) D6 G( Y8 S# B1 X+ b! n
    7
    $ Z* d9 b( G6 \8 E& Y' P2 a4 v: A& V8  t& u1 `% @2 d' e$ I* a9 Q+ ^# {3 `
    9' Y% Q% a9 V% j  \* O$ `
    10
    3 G6 T% b' l' Q6 h3 y" D11
    0 L0 b2 N) o! x$ W/ ?
    ' R0 {1 ^! G4 X2 x- n% E
    * e8 x- X. B' W# G1 _
    综上我们可以得出结论:想要减少传染病的传播,我们就要在接触数σ \sigmaσ上下功夫。7 K1 I9 W' j3 k9 T
    8 |; K+ I7 A- U& D4 J# g
    . B# }5 v; K2 S) X: O. W- G; x
    实战建模
    5 i% J2 @; d4 ?% `- E: p, f8 v数据处理
    5 |% ^( r. v1 E- a, v4 K  W7 K8 I9 m& a9 q; S
    9 C, j, d" |/ C4 R
    首先,我用python爬虫爬取了丁香医生官方数据,一共5534条数据 特征包括感染、死亡、治愈的总数,当日感染、死亡、治愈新增,疑似病例,时间,省份等14个特征6 x% T" T" @5 u( {! z

    1 B% b8 b  Q# E8 o) E1 |

    ; m2 T; k& E8 x% a. W
    5 j. R* f6 ~* D6 \: J( w8 b/ _
    % Q, o/ q9 x) t2 q" K0 Q7 A; T8 {# B
    然后用python进行数据提取,提取了较为典型的湖北省的数据作为我的参考依据5 \) H6 q: H% ^0 H2 |# B2 M) O
    4 C  `. P' N0 [; N

    ! j' i2 D. |* U" B0 M5 q0 Z  E2 ~6 Q
    4 {2 J+ X, r$ a* L+ B2 _7 o$ A
    然后用python对数据进行清洗,提取出了患病总数,现存患者总数,死亡总数,治愈总数,时间,省份这几个特征8 _+ M3 [+ K9 P/ T/ j' B
    # }, ?- D- Y9 f. R& x& h

    6 S# A: T1 ~( Q" x) E4 M+ q对日期格式进行修改,值保留月和日,并与死亡人数的位置交换
    ) Z3 a, |! T- K, [. w% A2 Y8 W# f2 `
    / n5 G9 X2 }+ U2 w" @
    这里我用python对提取的四个特征分别进行了数据分析(主要包括计算最值,平均值等,),并把1.20日作为第一天,7.02日作为最后一天也就是第165天,做了可视化可视化处理。
    - ^# `, S6 M( n感染人数示意图
    : |' h4 R5 L) o: _  o, x6 I6 ?+ B. ]) G

    6 ?$ U" }# H$ r- _/ U治愈人数示意图2 M' B3 |, }* f% ]8 m; G- }

    3 m3 }- Y1 Z$ F3 m. L/ X
    5 e8 q% `& Q6 N; M0 g5 h

    ! o. z, a' u* H! ^; k
    ' b9 S& L4 ^4 X' v& W
    现存患者数量图
    ' j- D$ s& B; s' h* Z
    $ o4 @! M) e$ q2 U3 B
    $ v. ~4 y2 |/ J6 o: W9 v
    死亡人数示意图
    $ L: ~$ @! t7 X! K2 i1 I
    " {  y8 c+ r% k: M! {  @0 w

    0 M. H! B: _* j) o+ h# f5 |& U5 _0 S9 ]( u

    2 ]2 H& E* l1 P# ]5 f* ?, z: k经过上面的图片与describe数据分析,我们发现有一天是异常的,患者多出了平时的十倍左右,经过查阅资料,这天因加强了检测标准,所以增多了很多。为了避免这个数据的影响我们选择将这一天删去(或者用平均数或中位数代替也可)! d& ]- A  H+ Y( t/ v
    将上面清理过的数据存放到csv文件中4 _/ J  j# k* m+ S  H- I

    2 y* ^7 i2 D: I2 N7 i! d0 [

    4 k3 a( U2 k( V模型建立6 ]9 f! S+ b1 g* K: }1 d
    模型假设" O& c. u6 L+ _$ \/ P+ ^
    经过上面数据的分析,我们大体可以进行如下假设:
    " x8 B8 h+ b' K6 ^1 H, C8 V( F* q1.由于不存在封闭情况,考虑开放体系。! \5 D3 j$ R+ W/ ]# |
    2.目前数据以天为单位发布,因此不考虑连续变化情况,只考虑离散的方程。
    , ~" d* f* T9 Q$ u8 i) |3.新型冠状病毒的治愈人数和死亡人数相对较 小,因此只考虑 Susceptible(易感)和 Infected(感染) 两类人群。设易感人群总数为N2 V" O4 T% ~1 `. u6 t: p) p- Q
    4.经专家鉴定新冠病毒患者治愈后至少六个月之内不会再被感染,所以设治愈后移出易感人群。$ B. V8 v3 D# h, p5 ^  p% E
    5.设每个病人每天有效接触人数为 λ \lambdaλ(日接触率),且使接触的健康人致病.  q- ^1 u# G8 m  W: Y; ~
    6.设病人每天治愈的比例为 μ \muμ(日治愈率)
    ' V2 P8 S6 H# V# R; H7.时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t)." R9 v4 L5 S: \, D
    * M( b$ n$ b8 L. E
    * c, ?6 t% B; B$ K8 l( p' l
    模型一2 Y" g1 L0 p& a  X+ X  R

    % `* @4 E9 b4 T7 z& F
    6 f! Y  A% J+ Z: O: B
    分析可以得到移出者r(t)=治愈人数+死亡人数
    # N# p+ r3 I$ K通过python数据处理,我们算出了r(t)的值,并将其可视化1 c8 i! k) M6 S0 J! q* W* ~

    : B) y) M0 q$ X8 ?1 A2 Y

    : G4 k2 A( E/ H( @/ Y' z; v' U
      J' q7 H4 I" ^

    + L7 s& I1 s% T. H% P/ f我用MATLAB对其进行了拟合,拟合图像为
      P+ z1 E4 W5 J; N8 _1 i+ [; o
    ! e! u0 g7 y! I6 l; O  ?/ g% B% Q
    % ^8 Y- c& C2 q

    6 o: I( l! a' T& T- y
      y2 r: s4 F- }& j. V1 ~

    # g1 j; l- |4 d

    ! y6 Z  F$ P+ O1 t$ F分析可以得到患者 i(t)=患病总数-移出者
    " b# q: i2 _/ q可以通过csv文件的currentConfirmedCount 直接获得i(t)数据,当然也可以通过 i(t)=confirmedCountv - r(t)获得,对此我也做了可视化展示
    8 F& ?& D' e% [+ l2 j8 B
    ! S2 m& p9 c9 I( v4 D5 B
      j4 |0 w8 ?7 C( o8 O$ ^
    通过MATLAB程序对其进行拟合,可以得到r(t)的函数图像大致为
    $ N$ Q# R' C# g8 C8 \  W& y7 e1 |
    ) S# R. B8 p% B5 C8 M6 W5 V$ i1 y

    6 [& B8 `" m0 e4 y

    " [" k+ {1 b8 D0 `, i: \  x2 Q+ @
    / e, y0 I- I/ F
    为了方便,利于公式推导,我们先设时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t). 所以有9 r( S/ t. Y* U4 j# t, ]% t
    # [+ o* D, P5 j* D  Y. l/ `
    # F! o- m( K# i4 e. V
    可以推导出每日新增病例的表达式
    & |, p7 J  I) s$ l1 c/ K# d" W1 ?/ l3 Q3 N* z' K7 E+ i& a% ~! @
    " J! _5 r" M5 n! y  {9 e

    1 f/ ]# G4 J4 k* f1 t4 ?1 |

    , M, ^2 c1 y2 d6 i( b& {, W) h
    / T) \, R6 s7 Z- n, U6 b

    & H) W/ r4 F- s! W* Q由以上两个公式可以推导出以下两个微分方程
    + ?: _; y6 w' q8 N' U* e5 ~
    4 v; a. F$ m6 M! C6 E* g
    ; V2 ~  ^9 M7 V- r

    ) `* L& I; I' T) d% M
    2 j9 n/ L: o/ m1 Q4 y# [  F( A
    可以知道初值, w# U& O+ K7 A
    i ( 0 ) = i 0 . s ( 0 ) = s 0 i(0)=i_0.s(0)=s_0i(0)=i
    6 v/ y. _0 e2 Z7 E2 v# g; ?0
      i1 w$ l% W- J3 M​        7 l/ {% q5 _, o9 i4 i
    .s(0)=s
    ' y8 H1 K6 U% C4 E0& F1 s2 \, ?7 W. l$ N
    ​       
    $ d; ^2 d7 \6 y' i1 j  @! c . h. M- |/ H  J/ g2 [- |! w
    因为一开始治愈的和死亡的肯定很少,所以r0可以看为0,于是就有:# y: ?9 K, }  `) S, C) y6 M5 X- L
    i 0 + s 0 = 1 i_0+s_0=1i . q, f* X6 L; h8 F* ^8 E
    0
    - l; H4 _! Z& F  K4 p! Y​        * k: G6 _2 X8 A+ `, C1 t: Q
    +s / l2 j! u5 s7 |' |+ V
    0
    1 x4 _8 j- h; s! b$ s​        4 t* L$ i" K6 ?$ \
    =1
    8 p  @" {5 T( Q: W6 x4 j& v" R通过解以上微分方程我们可以根据经验假设λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)的值分别为1和0.5(也就是每个患者可能使1个正常人患病,患者可能有0.5的概率被治愈);由于一开始患者肯定比正常人少很多,所以我们设i0=0.01,s0=0.99。对其求解可以得到s(t), i(t), r(t),的变化图像
    ) B& R. u& Z) u+ e* o1 j" U  B6 M  K/ {% `

    2 d( a+ f: q4 D3 D/ ~$ `
    - S! H) I) P. j- ?* Q. `

    5 x: ]6 }3 g: _& O* z9 B9 v  q0 dMATLAB程序如下
    " T3 F- M, F+ l* O7 pts=0:40;4 ~; x' w- G$ n2 P
    x0=[0.01, 0.99];
    # P7 b! v5 z; `% U2 g1 o# c( Y[t,x]=ode45(‘ill’,ts,x0);% b1 j% x3 |8 @0 ]! g9 m
    r=1-x(:,1)-x(:,2);
    $ O0 S4 o5 g9 Q% M/ C9 s( g+ U8 {plot(t,x(:,1),t,x(:,2),ts,r,ts,x(:,1)/x(:,2))  V) ^( I8 Z- D6 N
    legend(‘i(t)’,‘s(t)’,‘r(t)’)) s/ R  [' S0 v% B0 ]* J6 h
    $ o, G+ S" T1 V

    + H- Z* A" A+ g2 O  t+ B% X/ r: Ffunction y=ill( t,x)* B  U1 }2 h. D9 d* A" H2 j% H
    a=1;
    ' R  o) k; ]8 xb=0.5;. I0 K" V1 X6 R7 j8 b
    y=[ax(1)x(2)-bx(1);-ax(1)*x(2)];. R5 i& |4 l2 X5 |: f6 S
    # v9 f3 J# [& E

    ' m# X- `' Z( t5 F# x8 s结果分析:患病人数肯定有个高潮,但之后高潮就会减弱,并逐步降低为0。随着医疗卫生条件的不断提升,患者的 λ \lambdaλ(日接触率)肯定降低,μ \muμ (日治愈率)肯定上升,所以我们可以把λ \lambdaλ调一点为0.8,μ \muμ调高一点为0.6,可以得到以下趋势图。所以应对传染病很关键的一点是我们要提高医疗卫生条件
      N) f. [2 s' g$ V+ }
    2 O& A5 ^6 `8 J" ?$ k( l* v

    9 P3 \4 A4 ?: n2 b* |: W0 a8 @9 a; G% h3 R: `  c! @2 E
    模型二
    - T: w0 L$ ?  I8 [. g  h: e' @3 S2 R. n6 p: c7 J

    5 F. e# L5 Z& G实际上,λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)都是随着时间变化的,这里我们设s(t), i(t), r(t) 为第t天健康人、病人、移除者(病愈与死亡之和)的数量, s(t)+ i(t)+r(t)=N..
    % c5 ^- ]0 R4 \3 m% W(t), (t) ~第t天感染率, 移除率(治愈率与死亡率之和)8 ?+ j* L) L  w; d( [! X
    有 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)8 r1 \8 z& ~2 i9 M7 U6 P  J
    因为s远大于i, r,s(t)视为常数,所以有
    5 p' f/ Y, q4 r( G( M8 c: u
    $ B, Y, o" Z  h2 A! h
    5 y# ]  X" Z4 }  H
    5 K( p1 p, X3 A, ]
      t: s$ J! f! W" r9 v9 C/ J$ X" g3 V
    取差分近似导数
    ' v) ?* F' |7 l9 o, t' R- M  N. T3 k
    4 t; D. \4 j; ^
    % G+ v. Y$ p+ H2 H' O* Q
    ' ?0 P" _" H. z- y5 |2 x' K' e

    " n" d  U  }. E% o% C- [4 s我们可以先用真实数据对(t)进行展示并进行拟合
    ) ^; U; n0 o/ x" j3 q6 i% N6 D5 a) h
    $ J% q2 H2 i' k0 j" P$ d

    % B3 _* ?+ s* m( u. R0 g
    2 B- t( u" |( Z$ I$ T* s
    7 z7 H9 `- h$ b) D2 Q
    当然同样的方法对(t)进行拟合+ d- U' x6 L. ]. b4 g( k3 h  p; n. w

    8 O( b5 d0 m# c' _) q: J

    2 n. w+ T) ^% h4 L5 D' T: z做不出来了,好难,光这些东西就弄了四天,到了数学建模国赛得多难多累啊,哎,让我这个小白手足无措。毕竟还没有正规的培训,这个模型等期末考完试一定好好做做!!!' Q1 K% L2 C1 [: R3 r
    冲国奖
    & ^& t8 |; S+ V2 ?冲国奖
    4 s- R: C+ l. z7 J- j2 u冲国奖! O& D! {7 J7 L2 Z) m* j7 L
    ————————————————# |% }* I8 n1 M/ J- T; o; O
    版权声明:本文为CSDN博主「小白不白嘿嘿嘿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    9 V5 K) x6 u; ~, _原文链接:https://blog.csdn.net/weixin_45755332/article/details/107094630& V: t7 v6 t2 T: M5 b  m
    7 `9 G; h6 _' U% [. a( ?% K8 y
    # t; |7 a0 N7 f+ F) t! O" h- N. H
    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-3 09:17 , Processed in 0.460257 second(s), 50 queries .

    回顶部