QQ登录

只需要一步,快速开始

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

    ( K* m" }. b8 E6 A& M! {数学建模之传染病SIR模型(新冠真实数据)
    - l: l7 f! w0 {7 W传染病模型的基本问题
    # N6 g  ~8 `) p" `- m  p1 U描述传染病的传播过程
    # H& N6 h- e. Z6 P分析受感染人数的变化规律  k/ ]( q$ ~0 m" L2 P* t6 S
    预报传染病高潮到来的时刻' K3 u# ?) x* X" ~/ \& ]. Y
    预防传染病蔓延的手段
    - D' z3 y1 [5 P2 h按照传播过程的一般规律用机理分析方法建立模型
    + e+ r, B6 }: L3 p注:我们这里是介绍数学医学领域中基本的传染病模型。不从医学角度分析各种传染病的特殊机理,按照传播过程的规律建立微分方程模型.4 S0 ~% n* B9 }, C' n

    ; D7 t. G0 G; g- y

    # F+ v( O- c; _& r' E2 R. V: k建立模型
    3 @( p5 s- P* n) W) U5 ?) l* ?模型一
    0 T! f" H7 h+ [. K假设:
    5 \( B7 D; \, K( l! M; _, i0 r4 S# W& [6 i$ x

    , T4 p% h' e/ V( k+ s. d9 E设已知感染人数为i ( t ) i(t)i(t)(病人数量随时间变化)
    5 M3 ^0 `. m/ [( |) T$ A设每个病人(单位时间)每天有效接触(足以使人治病)人数为λ \lambdaλ$ e2 f  n+ k3 ?- a/ c
    模型:
    ' ^( j; m2 p$ }/ w$ h6 H" F单位时间Δ t \Delta{t}Δt内,新 增 的 人 数 ( 现 有 − 原 有 ) = 原 有 的 × λ 新增的人数(现有-原有)=原有的 \times \lambda新增的人数(现有−原有)=原有的×λ,即' M$ J& z4 X' `2 r' z
    3 p; Z4 T5 ]4 n5 R

    & u9 N) v3 }( Y- xi ( 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! T! I0 q" c, b1 L0 a
    一开始的感染人数为i 0 i_0i & n/ \! S4 D, S, ^+ H
    07 w6 P- C, V* m( K
    ​        . j4 }* \* e. s) o2 x

      U5 V6 |: h: D" ?& a% yi ( 0 ) = i 0 i(0)=i_0i(0)=i
    $ X/ P8 ^2 D- w- k0
    $ Q$ E" b4 N, r- u​          i6 u7 y4 w4 @- E8 a  J# E
    ( M. x& Z/ O$ \. w  W: t
    解微分方程可以得到' W. @9 K. r* E7 l% U
    i ( t ) = i 0 e λ t i(t)=i_0e^{\lambda t}i(t)=i
    . N. [; [" p6 E. F. D0 c( ?0 |0- v* e5 N. }: B4 g1 u8 L
    ​        / V7 G* G/ R- C
    e . X' ^# {" I$ e( Q# W' W
    λt2 ]8 C, E6 }, M" s; Z7 M+ {" O& l9 K
    ; e6 F5 |5 J$ e  U; E( {5 D
    所以可以可到当λ → ∞ \lambda \rightarrow \infinλ→∞时i ( t ) → ∞ i(t) \rightarrow \infini(t)→∞% p5 y) w/ c  t6 Q% A  N. {
    当然这是不可能的,因为我们考虑的因素太少了,首先一个是,若有效接触的是病人,则不能使病人数增加,所以必须区分已感染者(病人)和未感染者(健康人)看模型二来解决这个问题
    & V/ ]( D- I; d' b4 N
    1 a& M6 u$ h" a

      b% N6 c; B3 s模型二
    1 W/ L0 {( A& B# o; f9 }+ m$ d假设:( e7 Z2 G  X! @. f0 ^: C

    0 U& s6 p4 q0 t9 `0 `

    " j6 v) v3 I/ T3 e将人群分为两类:易感染者(Susceptible,健康人)和已感染者(Infective, 病人).0 ^& y# r5 c8 r5 s
    总人数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)=16 n1 J8 F7 M# `( h$ x7 m% Z
    每个病人每天有效接触人数为λ \lambdaλ(日接触率),且使接触的健康人致病.. ]8 Z& G1 r9 M! I+ x/ F0 t( W
    建模:
    , D; v6 @9 E8 ?0 @- v每天新增的总人数为原有的人数乘以每个人可以传染的健康的人数,再乘Δ t \Delta tΔt* I, S' f# ^' ]- t+ _

    4 X' d( i/ o) ?: J4 @

    5 O2 y: @3 c" t) f; d; RΔ t \Delta tΔt除过去,两遍N约分得到下面,
    2 P* b) Y0 |9 y7 r! s# H3 G
    ! b! _' ?- ~! N; C5 z/ ]
    0 m' y7 j! ?  Q! m6 Y
    MATLAB解一下这个微分方程1 i1 O. o# l6 F2 c" ]1 L
    7 o9 l/ |) g7 m
    0 F0 ?7 i0 ~# @5 O
    y=dsolve('Dy=n*y*(1-y)','t');
    $ N, ^, M- d. K3 V6 g" i  B% N% _, u6 i2 W  A7 G- H
    * X/ N: r0 n& b; {/ _% c- Z
    y =
    5 G& l& Y) G2 b! S5 \ -1/(exp(C1 - n*t) - 1)5 O, @" ~3 g& m3 G3 v% b3 r) R
                          0
    + [5 n) M8 c" F: H                      1
    / k) F) e' y; d' c8 y9 I) x1
    7 ?1 `$ t$ Y+ @1 i% L9 X' u$ ^2
    6 @) N  G& _, t* U0 t# y  ~9 c3+ Y6 i; H7 \1 C' P" X- C9 Q2 T/ N
    4
    & d8 J0 j0 E7 q/ E# q9 E: T( S5
    2 F& ^- S# N1 C6
    1 Y$ e/ x6 F1 f写规范点就是这个函数
    0 Q3 o$ b$ ]: V# f" c6 i
    0 X, u3 [# Z# u# ?1 j9 `& I
    , P; ~7 D/ c% Q& u3 c( z
    函数图像大致为% m8 S9 r* ]9 ~8 V5 r/ k' J

    2 x7 F" P# W: K$ J2 E: Z! U
    " S  C3 m# v8 N1 Z
    可以看出t = t m t=t_mt=t 7 _( ^" @& O( I8 g/ h) s4 N
    m- C% i7 }, O1 @: o# A: r. T4 v
    ​       
    . _: ~) a7 c' A 时这里图像的斜率有个最大值,其也就是传染的最快的时候,即传染病的高潮时刻,当然t m t_mt
    7 A. i+ }9 H2 g) r1 Bm5 g! z3 c" S9 ]0 Q1 f! V1 `% @
    ​       
    + V8 t- Q5 m" E* l$ [0 c 是可以求出来的. J1 x' g4 P1 T8 V" K9 l& s/ {
    8 q) q  n- P$ [5 n& x
    , T/ s+ |6 J. K1 }5 C7 Q
    再看原式,当t → ∞ t\rightarrow \infint→∞时i → 1 i\rightarrow 1i→1
    . I# F! N% v% ^$ t  q2 v* D病人的比例为1,当然这也是不可能的,因为我们还没有考虑有没有可能治愈,看模型三
    % d. D+ L9 q/ {  x$ Q5 a
    % a0 `$ R# @+ h- Q- V
    ( E( S9 C9 y- E# w
    模型三
      z- N: U6 G( s* o' \4 W$ V假设:
    1 g, _; `4 f2 S  m  _: \. k8 R4 V6 z9 }0 f1 n2 W& C
    2 B: y0 A( \- m0 O
    传染病无免疫性如伤风、痢疾等——病人治愈成为健康人,健康人可再次被感染。, S9 O/ j$ k0 h7 O$ l$ H7 j* g
    病人每天治愈的比例为μ \muμ (日治愈率),1 μ \frac{1}{\mu}
    1 P3 e! D8 f& D! e: B& Gμ: m+ s" |6 b# d+ C
    1
    * O' f0 `! x' m​        : o2 L% ?- v" o7 N' e
    为感染期,
    8 c3 S, ^4 P0 K  S" n0 }% V模型$ a% m; D; l7 B/ m) L
    这是减去了治愈人数之后的新增人数1 C; O& j6 R0 [

    3 j! s  @9 o' x, N
    - g, [5 @) k7 j9 \$ K# Y3 W3 r

    % a3 ]& e1 O8 o
      O1 {1 I# j* f
    σ \sigmaσ 为一个感染期内每个病人的有效接触人数,称为接触数
    3 [8 h, R  A1 t& v
    + K2 L' I' C$ I% R5 a$ p; g) r

    : c) D) L7 d0 j( \  ?2 F3 ?1 a可以画出上面的图形分析下
    & a8 `( E1 t8 D  [, x5 O! [' n6 X5 W/ C8 H

    0 N! g, b2 u: w' J0 [对上面的公式进行分析,可以得到,当i = 1 − 1 σ i=1-\frac{1}{\sigma}i=1− - k' {  f+ z" S4 i/ |9 g
    σ
    & Z$ g* F- h( i! N) F  @4 p1
    / ^: {9 S' E) v# _. [& N​        1 E5 h+ V$ c, L$ _- {; ]1 B+ q
    时,i ii对t的导数为0这也就到了i ii的最大值;当0 < i < 1 − 1 σ 0<i<1-\frac{1}{\sigma}0<i<1− 5 d5 o" g" F7 E4 M+ f7 d& Z
    σ" f/ q7 a4 G. N: G* E) T1 j
    1
    , ?6 D: T, E7 b8 J5 F* [​       
    , C3 C8 D% `2 \! O, L7 Z5 A 时,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−
    ( {1 F9 J, A. {1 T5 `- Bσ2 g* K2 w" ^3 Q  J3 N7 X
    1
    ) I7 D. B5 _) u) ]& h' e( w​       
    " Y, p' {8 I7 T- E; c0 D- Y" E ,d i / d t < 0 di/dt<0di/dt<0,i是单调递减的。! t1 o& {5 h/ `8 S$ n3 z  |

    + v& b; }1 k9 Y5 O, D, F

    & Z% X( s8 R' b) |1 F5 v& r8 b当然我们也可以画出i ii随t的函数图像7 ]; O9 s7 c4 I# j2 p
    $ ]7 `. ^' t$ R9 F% j+ G/ p
    2 @2 y& a3 v2 z/ j6 \% U* L
    先看红线,若初始条件i 0 > 1 − 1 σ i_0>1-\frac{1}{\sigma}i : r, v* ~5 L. j
    0
    : p' l9 L/ R: T& p% n7 w" \​       
    7 k! i' b  a$ F) D >1− 1 {/ w1 p  E, J' G% A* q8 D: O- B9 N4 u
    σ
    + W; L  p# z/ m0 Z2 A1
    ' T! K9 O8 w" A) }& |- ^- J, u; P​        0 v; q! u. {. a/ R$ B# {8 j" |+ Z7 P( _
    d i / d t < 0 di/dt<0di/dt<0,i就是单调递减的," r$ H  x( _# J, x9 B6 Z- \
    若若初始条件i 0 < 1 − 1 σ i_0<1-\frac{1}{\sigma}i
    6 @/ c0 C, _, Z! {  R9 H7 z' ^2 \0
    - v4 j% x% y0 F) C​       
    ) i8 B- c! q& C- L1 A( w" Q <1− 5 i( Z( b* }* T$ U. [& [' p
    σ: `" Z; e; E5 W" }
    1
    ; [- _$ w3 f. k' P( ~8 R' G* f" S  ^% o​       
    3 Y" b( s9 G9 e ,i就是递增的,可以看到i对t的导数图像有一个最大值,下面的黑线就有一个增加速率最快的一个值,按S形曲线增长: L0 d! n' V. [- Q  \+ u
    ; W5 H$ t7 N" ]* I: O5 n  M5 y

    # v1 @& S& E" \; J/ T) e- |σ = < 1 \sigma =<1σ=<1时d i / d t < 0 di/dt<0di/dt<0 i肯定是单调下降的,最终降到0! W: t( @/ p" k% h7 O! G

    1 P, m) H# k/ ]' K+ `9 V
    , g8 A4 `$ c  w$ }  u

    9 G, A/ }  v( I, j4 f: N5 g; n
    ; F" i' _% b4 Z
    综上:
    % ^+ q+ R) P" y% M想让患病者越来越少,σ \sigmaσ必须小于等于1,即感染期内有效接触使健康者感染的人数不超过原有的病人数.
    4 Z4 S) {. a. e/ x- o) |' E* ~0 k& D9 o% y4 Z
      I7 k9 m. J. k- |) I4 E) P6 g* K
    这里我们分析的是感染之后还能感染的情况,但有些病毒感染之后会在体内生成抗体,就不会再被感染了,下面我们分析这种情况。% S2 ?5 }4 d: c' z! H5 T1 Q
    5 P6 h- W0 d# o, O% g1 w
    ) V: \9 H) z& O( X/ _7 P9 j- p
    模型四 SIR模型
    ) K, U# e+ `) D1 ?SIR模型是常见的一种描述传染病传播的数学模型,其基本假设是将人群分为以下三类:
    - n2 i) |. h  Z; E2 z; E8 b3 |" X; q+ A2 B+ G, f9 N4 ]

    ) z& d- l6 K) P- d$ B$ u1 易感人群(Susceptible):指未得病者,但缺乏免疫能力,与感病者接触后容易受到感染。
    7 ?( p: U( P/ P% @
    * v! A- n6 H3 P, ^  C
    / c! T! ^4 l* t4 ]# G, r) f& l
    2 感染人群(Infective):指染上传染病的人,他可以传播给易感人群。
    . q; r% W3 y) b% ]2 T5 V( _
    5 e. u) B8 i8 i2 U# F4 F
    1 l5 l8 m% K4 q. I  W% |, t  E
    3 移除人群(Removed):被移出系统的人。因病愈(具有免疫力)或死亡的人。这部分人不再参与感染和被感染过程。5 h: K- i8 V) q) \6 I: R
    " N# ^& y1 h3 D& v! J
    6 n8 B. A, |- I9 i$ x7 C. C9 k
    假设:. a) c+ Q& N7 G6 I
    # [& ]8 p7 y4 l, B
    0 Q2 p" q3 I! I" Q3 r* F/ n
    传染病有免疫性如天花、麻疹等——病人治愈后移出感染系统,称移出者(Removed)., ~6 r/ w$ H: q. R9 L: d% E0 J( s+ Y
    总人数N不变,健康人、病人和移出者的比例分别为s ( t ) , i ( t ) , r ( t ) s(t), i(t), r(t)s(t),i(t),r(t).
      K7 E( \& O& l病人的日接触率为λ \lambdaλ , 日治愈率为μ \muμ, 接触数 σ = λ μ \sigma=\frac{\lambda}{\mu}σ= $ g% A# Z4 a: F' y
    μ
    2 g( [& Y8 k# Aλ
    : i  [" Y6 ~; v​       
    4 `1 ~+ b: `& j! f6 Z' r0 \4 M" Z
    / r3 F8 D) V# w建模:
    . ~2 a# ~) q& ~: |/ q- ws ( t ) + i ( t ) + r ( t ) = 1 s(t)+ i(t)+ r(t)=1s(t)+i(t)+r(t)=1
    , z1 {7 j( |* ]- |这个就是病人减去治愈的人,和上一个模型是一样的
    ( T! r5 q( H* {0 J1 Q3 c* A4 K9 a$ x" ?  P% j4 Y; m. [$ {. ^
    . P1 I1 F0 a9 s& t/ ^- Y4 ]
    因为有治愈后是有免疫性的,所以可能被感染的总人数要减少,减去移除者就是
    $ R+ ^, W% o2 U% R. q7 z7 q" K$ Q0 A
    # \% L1 S- x5 C: u) f! y. i  s

    & O! z" k0 i# t, d% P将上式化简为:
    : S, @5 }; c8 k0 B/ Y8 d. F) B
    0 G7 t3 q. K: q- p4 V* `
    ! `9 Q9 y% L' r& g# l2 R( H
    i 0 + s 0 ≈ 1 i_0+s_0\approx 1i ; |5 S0 X1 }6 R, K) T0 A9 D1 m
    0  Z3 Z$ }7 x1 \; g- a  n, ~
    ​          q" Z( Y7 s9 i* r2 m
    +s
    ! J- J( O0 K3 J# I6 a0" d) b+ J2 v/ Q% |# ]
    ​        ) r4 w9 ^2 x7 t1 e: p
    ≈1(通常r ( 0 ) = r 0 r(0)=r_0r(0)=r $ l# q% T/ N; N- R1 b6 f9 w
    0$ r' j# X  H  C+ ]% d. c2 Z& Q$ r$ D2 X
    ​       
    ( \1 j' p5 z- n6 w; A! o 很小)2 Y% t9 y5 v7 u7 l- n- [& H- m

    + ]6 S) {  x' p3 @+ w/ T
    * G* M# d7 f2 @! ?$ k+ f
    关于i(t) , s(t) 的非线性微分方程组,没有解析解,只能通过数值计算得到s(t), i(t), r(t)的曲线,下面来看下曲线的数值解的MATLAB程序4 W9 A6 K7 V- j. @
    : b4 H# o8 U4 {! i8 H5 }

    4 n; J0 f- }1 }# f, u$ l这里我们先设λ = 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
    % ^, e/ y, b3 C( t& J' Y) M% Y  h0
    % ]1 [" Y/ L5 c5 O9 I​        . e+ E4 U$ X  S3 \& @
    =0.01,s * Q% F  C* J- M. Z( T- J: d: z- `7 o
    0
    ( E/ g) f& {9 @- r" u" I​       
    % \2 Q- o# f! m7 B1 f% X+ O" x =0.99# k/ n7 {; x. [2 l9 \4 F$ t1 s+ i8 y
    也就是平均一个病人人传染一个正常人,治愈率为0.5;开始的病人比例为0.01,正常人为0.99,设没有天生带有病毒抗体的人,所以r 0 = 0 r_0=0r
    ! f& _9 O' l  a* d1 e2 O4 G) F0
    # O" B! @% G+ ?) U2 ]( a​        2 @2 S+ [/ \( ~
    =0,之后若果病人被治愈,则具有抗体了,有抗体的人为:r = 1 − i − s r=1-i-sr=1−i−s
    $ X1 X( ~2 e; K- a
    # |$ N/ j1 t. M

    % S! v5 ~% G. qts=0:40;& ~4 c9 W) L" c; D* d. N4 s% v
    x0=[0.01, 0.99];
    " z3 p: I! l1 f+ w2 l+ r[t,x]=ode45('ill',ts,x0);
    * ?, ~) U8 Y' E( ~* mr=1-x(:,1)-x(:,2);% G$ u* K, {- u
    plot(t,x(:,1),t,x(:,2),ts,r),grid
    9 {# q' E* f1 p$ L& j( N. Mlegend('i(t)','s(t)','r(t)')
    * Z; i1 u* |8 J" @" Q, G( r$ b; A5 a
    ' O3 d3 U' X5 t1 V

    / G  E  |5 ]0 {, k  nfunction y=ill( t,x), u5 r7 \$ ]4 C; D+ G. ]% y
    a=1;
    7 r% \" E8 `8 ]* nb=0.5;3 T* f. y4 j3 c/ K* }
    y=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];
    . d" z. J2 u# }4 [1
    ! E& ?" t9 ?3 F) f2
    ! h8 d' X! g" p: k* |30 S# c3 Y+ T/ L; x
    4
    2 o& e1 j) ]  N. d58 a, X  T; _- {  c
    6
    + [- p+ d0 q: r( l/ ?, q: `7* G. {0 U  s/ {' C$ \9 n: F
    8
    2 o! T% S/ \  Q' X$ v- T9
    ) [" w. \/ V& a: J( A$ R! m, D/ `10
    2 g- D& q8 @4 X7 L115 r8 W5 l; ^/ i( i' n

      B8 V5 N; c. y3 v

    2 ^4 t! `3 o% k0 l可以看出:s(t)单调减,r(t)单调增,都趋于稳定, i(t)先增后减趋于0.
    ( V8 c' r% F/ Q; a结果分析
    + Z6 r/ y* b- [% W先回顾一下参数
    8 Y9 G, _/ ~& s3 x( H- z4 a+ z( n接 触 率 λ ; 治 愈 率 μ ; 1 / μ   平 均 传 染 期 ( 病 人 治 愈 所 需 平 均 时 间 ) ; σ = λ / μ   接 触 数 ( 感 染 期 内 每 个 病 人 有 效 接 触 人 数 ) 接触率 \lambda;治愈率 \mu ; 1/ \mu~平均传染期 (病人治愈所需平均时间);\sigma =\lambda/\mu~接触数 (感染期内每个病人有效接触人数)接触率λ;治愈率μ;1/μ 平均传染期(病人治愈所需平均时间);σ=λ/μ 接触数(感染期内每个病人有效接触人数)1 a+ ?1 M) {, K  `/ Y& b6 I6 @8 o
    可以分析出:0 e1 Y# p  p6 ]0 s

    ; ?& g7 c6 [9 B* j! i9 _' r1 }# z! J

    7 m+ x* u+ U+ n4 E随着卫生健康思想水平高,接触率λ \lambdaλ变小* Y1 u) p7 j# `( Q" _
    随着医疗水平的提高,治愈率μ \muμ增大) L: \; j% D& Y" J. _" A
    接触数σ = λ / μ \sigma =\lambda/\muσ=λ/μ减小——有助于控制传播.
    % a  E/ }5 c7 S! s我们可以试试稍微减少一下λ \lambdaλ,增大μ \muμ,来看下效果4 x4 d% G3 R9 `8 ~5 ]" p

    7 c2 E) f0 n; ]4 F) L# o

    : f) i1 M5 q5 P3 Z. gts=0:40;. Y" V' G4 u  j7 P
    x0=[0.01, 0.99];3 @& A( s( B+ H2 }: O/ f9 r* Y7 c5 \
    [t,x]=ode45('ill',ts,x0);* W" ?3 v- E1 ^9 G/ |
    r=1-x(:,1)-x(:,2);) H# x2 U8 I8 C1 L; }, x9 g  i6 X/ I
    plot(t,x(:,1),t,x(:,2),ts,r),grid
    / ]2 V5 T/ _, a, }; F9 b* flegend('i(t)','s(t)','r(t)')  `  _( P4 n  U! J) f
    3 q9 P) A7 H2 S( x7 N. x' z7 T

    7 e1 `# x# N# i1 gfunction y=ill( t,x), Q0 \+ L; ]2 \, d" X. d9 m" c
    a=0.8;
    ; y; G7 g$ V3 J- Ib=0.6;; j/ L5 M6 ~6 g
    y=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];. o+ l, e, y0 F
    1
    / i0 s6 J9 e, Q: p2 @! a- s26 ?# F  y8 o) _( ]6 m; h+ U4 Q5 G9 L
    3) V# R. B& F3 u7 o% q/ A
    4
    4 a, E, k; v* b/ [' u' _  l3 I$ _5& L# a" v+ h. R4 B# _
    6
    7 i. G! d3 F4 D% v9 @6 T& M7
    0 p! C8 O5 y+ K/ p) L6 E4 s6 u80 V) c: ?+ b5 v: P3 {
    9# `$ T$ e5 v8 J
    10# ?+ a$ v7 k7 u& e
    11  U8 m3 e( j/ O% r; S, ~6 s
    - u4 V5 s! e# `! O; v
    ) B* g0 m4 Z. [, x
    综上我们可以得出结论:想要减少传染病的传播,我们就要在接触数σ \sigmaσ上下功夫。  K" c0 {$ I# z8 \
    # z9 E* z' k9 `0 X) G

    : {) v* a" i6 U) X3 Q: x实战建模
    . G" F3 r! G# H5 N* p" M2 b数据处理
    + h& @  Y  c% Z) V/ U/ ~2 m( {# c5 p2 S6 Y+ M$ F0 f; E
    ! n  ?. d5 \% v4 u9 a
    首先,我用python爬虫爬取了丁香医生官方数据,一共5534条数据 特征包括感染、死亡、治愈的总数,当日感染、死亡、治愈新增,疑似病例,时间,省份等14个特征
    8 e8 V; ?; f0 j; D8 U' G; N7 Y. J% P
    4 b0 J. U) ]- T& K. D0 H; H' U/ y

      G" L) W: ?. |3 T

    + t( `' F1 f; a' ?4 p4 v然后用python进行数据提取,提取了较为典型的湖北省的数据作为我的参考依据
    0 }2 ?- q. F/ H& x- L3 X
    , h; F7 s& K& j) k9 S" G

      A6 O9 B& ?1 c: b: _4 G: v" Q3 g# M+ W( e
    0 L9 M8 @) ~) q; y. m
    然后用python对数据进行清洗,提取出了患病总数,现存患者总数,死亡总数,治愈总数,时间,省份这几个特征2 T! k! y1 I2 M5 T
    8 W/ X' r  B8 @
    8 g/ q  k$ q  f' j* ^
    对日期格式进行修改,值保留月和日,并与死亡人数的位置交换
    * U6 t- t0 K! B) r! b7 |/ h( y1 _% Z/ G
    7 x$ U; s2 n2 p, H1 Q8 Q
    这里我用python对提取的四个特征分别进行了数据分析(主要包括计算最值,平均值等,),并把1.20日作为第一天,7.02日作为最后一天也就是第165天,做了可视化可视化处理。
    % Q, K( X8 \( \7 U9 ?' _0 u4 v0 R感染人数示意图
    7 F* j" j/ k: C. C/ x8 w2 M; z& R0 H4 o" [( X. H

    % }0 v4 Y2 n: F, c治愈人数示意图# u8 }8 k$ H# q8 F1 n  _
    ) B" Q( M/ q& p. i. X+ g- E
    9 F* S& d  T9 Q. y4 U/ X8 c
    6 ~8 c' s: w, P9 X; p0 T+ l! b; F/ n2 y

      X1 ^: @9 S+ ~2 X+ g现存患者数量图" `* X- Y, R  U

    . L5 p, f! O. M

    " r9 d& B/ Q( \! h, x* j0 S死亡人数示意图
    $ |5 S" D% ~# C/ [  U( G
    - P. j/ i* h! P7 q9 x$ M
    8 G8 o' T5 l# V% L% J& l3 E

      }) z  \" v7 l6 R

    9 P( Q: W8 U" W经过上面的图片与describe数据分析,我们发现有一天是异常的,患者多出了平时的十倍左右,经过查阅资料,这天因加强了检测标准,所以增多了很多。为了避免这个数据的影响我们选择将这一天删去(或者用平均数或中位数代替也可); l( y+ D( Y9 g% `5 h( d
    将上面清理过的数据存放到csv文件中
    2 n+ Q2 K/ p$ V" Z" l# K4 i1 E% {( J( e0 ?4 q+ _  L: o

    . n) n$ t: g" M模型建立
    ! H9 Z* {7 a2 a6 ]( s模型假设
    - y* g- i3 ^' ^9 X- D: k  w经过上面数据的分析,我们大体可以进行如下假设:( z! @, |8 G2 l% X' w1 s6 A& T
    1.由于不存在封闭情况,考虑开放体系。! G* a# W6 j1 G8 _
    2.目前数据以天为单位发布,因此不考虑连续变化情况,只考虑离散的方程。
    6 E+ Q# i, f4 S8 r3.新型冠状病毒的治愈人数和死亡人数相对较 小,因此只考虑 Susceptible(易感)和 Infected(感染) 两类人群。设易感人群总数为N: K4 G) f1 ~1 o  V0 o
    4.经专家鉴定新冠病毒患者治愈后至少六个月之内不会再被感染,所以设治愈后移出易感人群。
    0 Y( q' c( o3 ?& ~: F0 y5.设每个病人每天有效接触人数为 λ \lambdaλ(日接触率),且使接触的健康人致病.
    4 A; C  b: J3 [4 \0 f0 X2 W" M6.设病人每天治愈的比例为 μ \muμ(日治愈率)# M# e4 o6 i: @1 k
    7.时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t).3 }- ^9 m8 Y! |9 c( ^& U
    3 A' Z$ f# r9 g0 T

    # \  u+ A) D# `3 @$ l  Z模型一5 \2 s: {! H' W: z5 H2 C

    " }6 l: j: b+ _! i6 r& Z" H

    1 w# u3 _' |/ f( G" S4 ]  c1 H$ r分析可以得到移出者r(t)=治愈人数+死亡人数( Z4 d$ L4 z' Q( j& y
    通过python数据处理,我们算出了r(t)的值,并将其可视化7 H" F$ ]9 t  C, [# h& b

    : \, m+ ]  b4 U! A5 W' ^
    / I/ g- ]4 V2 {7 R) }4 a8 e2 ?3 [+ K

    4 e. H$ `9 b& w) c
    + U* l  P9 n2 D' r9 R/ V
    我用MATLAB对其进行了拟合,拟合图像为
    5 m6 R9 g$ C: [1 e2 R: Y/ \7 F9 e& U. t$ ~" R0 ?
    ' w$ N4 K& T; y
    & D, B4 l, z$ [5 O

    7 Z5 |7 |* S3 D1 ?% E- G1 E0 k
    " y; P" E+ M9 x. O4 s- C( I) a9 D

    0 z+ R# o3 a* ]4 Z8 U/ @( S分析可以得到患者 i(t)=患病总数-移出者6 N! P6 _7 p! q2 y
    可以通过csv文件的currentConfirmedCount 直接获得i(t)数据,当然也可以通过 i(t)=confirmedCountv - r(t)获得,对此我也做了可视化展示
    3 f, ?9 O* U# X* j+ R" z* W. V1 Z4 S+ C% l1 \
    ; N$ \' I% R/ z: m  }3 t8 }/ Y3 p
    通过MATLAB程序对其进行拟合,可以得到r(t)的函数图像大致为7 Z' }; U  ~* E* [6 W

      q' l" \+ ^1 U, |2 \

    ' ?9 K# I7 n3 V+ m4 A) i" T4 p
    4 m% N& y/ m, m3 Z. t( k
    , m7 B# N2 [$ i  G: B
    $ F: a: k2 x# j  R; ?( a  k( _

    1 m! h$ x9 H- R' F8 {8 o  s+ F2 R. m为了方便,利于公式推导,我们先设时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t). 所以有
    + A6 n. F& c$ L2 ?
    ' n8 Z# n  w. e" W. C# ^6 G! U# l

    9 t5 s! Q% Z( j  b% {' i6 b可以推导出每日新增病例的表达式; \- q( q1 `0 W# x
    ; @2 @: _$ p, W5 q

    . J3 l4 t- U: _* [
    / G3 {& t+ m4 [7 }

    9 D0 v% Z# ~& D1 p/ @! ?6 [% \% j& C

    9 C  t4 `+ z6 c2 Q/ B由以上两个公式可以推导出以下两个微分方程
    0 x+ n8 r2 ?( e0 w" e- z/ m# u! \* F6 c5 n4 D9 Q: @

    * s+ e# c+ n! M' N/ f( I+ P% }  K+ S, `1 b, r+ ~

    : \* N, t7 ^1 Z5 @3 q可以知道初值8 l' _( g6 g" A8 @1 S, K- M! a
    i ( 0 ) = i 0 . s ( 0 ) = s 0 i(0)=i_0.s(0)=s_0i(0)=i 1 a7 D9 h0 ?7 d# t* T
    01 M1 h. i! I8 P) T" U8 N, T
    ​        , D3 z" J0 Q" @5 ~
    .s(0)=s
    6 w0 X2 V8 X  w- b3 q) B; Y0* z( k2 Q3 Q+ u# G8 G! q  C
    ​        . N4 m. I. o# \) |

    9 \& c0 R- Y/ z因为一开始治愈的和死亡的肯定很少,所以r0可以看为0,于是就有:
    $ V: t' V! P; p+ j+ ui 0 + s 0 = 1 i_0+s_0=1i / y: l+ @/ z7 g  m# I
    0  f# h4 |3 N+ V/ x9 j. q
    ​        : O+ Y6 y& ^, \, k: u0 Y
    +s 4 x) O  h0 u- X7 Z
    0
    , f" j: t6 a+ E9 }' K4 F8 \​        6 ^* i+ t( o0 u5 U4 O4 f
    =1
    % n0 v* o& m/ l+ S) M: @5 y通过解以上微分方程我们可以根据经验假设λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)的值分别为1和0.5(也就是每个患者可能使1个正常人患病,患者可能有0.5的概率被治愈);由于一开始患者肯定比正常人少很多,所以我们设i0=0.01,s0=0.99。对其求解可以得到s(t), i(t), r(t),的变化图像
    ( Y+ z8 y$ X) Y+ p4 s) k7 a: U2 H; `" f3 f# \- u  a  ~4 |; r

    4 W: ]  G7 ]5 r% p# }! H: S* G2 M7 ~/ I6 H8 ?: D: u

    & Z& i5 {4 J8 t/ c; uMATLAB程序如下
    * ?% f3 i3 {/ u% D- u) a: g. M" gts=0:40;
    % I. m% U& {5 J, h1 R% g; }x0=[0.01, 0.99];$ R; f9 M0 W2 }% Q( Z4 A8 C
    [t,x]=ode45(‘ill’,ts,x0);) i: S) j' |; ?3 B' h" g
    r=1-x(:,1)-x(:,2);
    7 \. U3 @; S0 G6 Hplot(t,x(:,1),t,x(:,2),ts,r,ts,x(:,1)/x(:,2))* O- i# ~2 r" a0 X4 A! I
    legend(‘i(t)’,‘s(t)’,‘r(t)’)
    9 N+ _' L* j& J" `% c% h$ B
      B* w, ?9 T9 H' H3 f
    4 u! B0 f7 L8 c# ^6 m' M7 @
    function y=ill( t,x)2 v6 x% C- D0 g$ l
    a=1;& {" i/ J2 c4 r* u8 i
    b=0.5;* X3 b' B2 x5 g( R
    y=[ax(1)x(2)-bx(1);-ax(1)*x(2)];8 `, o" S6 S9 A$ K( v/ ^4 J/ e5 u
    / O$ K: G$ ~2 I" V" M7 h

    ) I4 f: S! E4 J% p& w9 f结果分析:患病人数肯定有个高潮,但之后高潮就会减弱,并逐步降低为0。随着医疗卫生条件的不断提升,患者的 λ \lambdaλ(日接触率)肯定降低,μ \muμ (日治愈率)肯定上升,所以我们可以把λ \lambdaλ调一点为0.8,μ \muμ调高一点为0.6,可以得到以下趋势图。所以应对传染病很关键的一点是我们要提高医疗卫生条件
    9 \; T4 n! w* n# u8 P! k9 B) q9 c. I
    ! f  c' V, s+ \. q* W
    3 h! P! M! c, p/ _
    模型二
    * V4 F) a' t. q6 R
    * `( s/ N9 ~; j0 f: W+ \: G' U/ r
    ( J7 ]0 ]# ^  g4 Z9 `7 R+ r1 c
    实际上,λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)都是随着时间变化的,这里我们设s(t), i(t), r(t) 为第t天健康人、病人、移除者(病愈与死亡之和)的数量, s(t)+ i(t)+r(t)=N..
    * w. A4 j$ ^% N" u(t), (t) ~第t天感染率, 移除率(治愈率与死亡率之和)
    0 v. R; B0 N4 y* J8 e有 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). M) i8 Z$ g, s  M
    因为s远大于i, r,s(t)视为常数,所以有
    5 b, m/ {; y; G& ~
    & @) R) n+ F  `& ?1 K( r0 S

    4 B. c+ _2 }- M- x( G& I0 r! |& N! m+ P, t& B4 [) V
    % a& k3 F7 _- N- W) c% w3 m
    取差分近似导数
    5 T2 L: `3 i- @+ I& k$ E+ {4 z$ X
    " |: P9 d2 S% y! g
    # Z; r% s1 S- Q! q0 `3 c9 z5 ]

    $ B: |$ g7 q6 X& r+ i( K, w  o0 J

    , W4 P3 x7 f5 T. _  b我们可以先用真实数据对(t)进行展示并进行拟合$ p/ {# ~3 g0 w( O

    2 R/ k6 j1 `# E  f) _1 z$ o

    ' h4 [, c: L: V- z2 V) A5 _* v9 }
    . I5 W) `% A$ L6 x. P- I8 _' V
    8 Q! b% Z/ o) P4 S4 q) C8 w1 t
    当然同样的方法对(t)进行拟合
    & s; s# {" r* ]+ N9 `- [% |5 f* Q
    : W  u* P: p6 f9 @3 s% Q! V

    . _  v$ L/ a. c3 m/ I做不出来了,好难,光这些东西就弄了四天,到了数学建模国赛得多难多累啊,哎,让我这个小白手足无措。毕竟还没有正规的培训,这个模型等期末考完试一定好好做做!!!8 @0 G% |2 |2 `0 ?6 v
    冲国奖8 V- ^2 |" W  c& X6 z
    冲国奖
    " T3 L& j; D/ L+ ~( X, w0 k冲国奖
    2 \4 ~5 Z' J. p$ j: g4 i2 D————————————————: h  F: V! g) M4 k
    版权声明:本文为CSDN博主「小白不白嘿嘿嘿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    9 e! d: z0 Z: Z) f1 E原文链接:https://blog.csdn.net/weixin_45755332/article/details/107094630
    + ^' [' l& ~0 E* w% u
      W0 a% _# M& t  F: v5 v1 z) ?: `* r
    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-1 08:02 , Processed in 0.426689 second(s), 51 queries .

    回顶部