QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3457|回复: 0
打印 上一主题 下一主题

用Python预测疫情发展

[复制链接]
字体大小: 正常 放大
浅夏110 实名认证       

542

主题

15

听众

1万

积分

  • TA的每日心情
    开心
    2020-11-14 17:15
  • 签到天数: 74 天

    [LV.6]常住居民II

    邮箱绑定达人

    群组2019美赛冲刺课程

    群组站长地区赛培训

    群组2019考研数学 桃子老师

    群组2018教师培训(呼伦贝

    群组2019考研数学 站长系列

    跳转到指定楼层
    1#
    发表于 2020-5-15 15:30 |只看该作者 |正序浏览
    |招呼Ta 关注Ta |邮箱已经成功绑定

    什么是传染病动力学?numpy和matplotlib用python实现传染病模型SI模型SIS模型SIR模型SEIR模型

    什么是传染病动力学?

    最近,在报道疫情的众多新闻中,相信大家也看到过一些来预测新型冠状病毒会导致感染肺炎的人数。你一定好奇,这个人数要怎么预测呢?预测人数又有什么用呢?

    事实上,从学科方向来说,这类研究属于传染病动力学,就是用数学模型去描述传染病在人群中传播的规律,从而预测患病人数,进而指导政府制定措施和政策去控制传染病的传播。4 L- W* K7 y  ~  u9 g* {. r
    这类研究最早可追溯到18世纪Daniel Bernoulli对天花的研究,而我们今天所要介绍的SIR模型是1927年Kermack与McKendrick在为了研究伦敦黑死病而提出的,是传染病动力学中最基础的模型。

    介绍了传染病模型的背景信息,不知道现在你对传染病模型更有兴趣,还是执着地对python更有兴趣呢?不论哪种,这篇文章会满足你所有的好奇心。

    numpy和matplotlib

    首先,安装一下这节课我们需要使用的两个python包,numpy和matplotlib。
    " \1 L% G1 ]( {4 j9 P  i% }numpy-是python进行科学和矩阵运算最常用的包。

    用numpy建立一维数组,存储和计算每天传染病人数的数据。


    / y: ]2 m' d/ d

    import numpy as np

    import matplotlib.pyplot as plt

    用matplotlib绘制传染病人数随天数变化的曲线,给出模型预测人数变化的直观认识。

    好啦,下面开始用python实现传染病模型吧。

    用python实现传染病模型

    为了让大家能够更好地理解,我们先不直接说SIR模型,我们从最简单的开始。

    SI模型首先想象这样一个场景,一个城市有  个人,假设没有人出生和死亡,忽然有一天有  个人感染了病毒成为了患者,如果每天每个患者能够有效传染   个人,那么第二天患病人数是多少呢?最简单的答案是:   ,也就是说每天都会新增   个患者。那这样以来,在无限远的将来会有无穷多的人被感染,显然这是不合理的,那错在哪里?仔细思考,你一定发现了,已经患病的人就不能再被传染了,所以我们有必要把人群分为两类,易感者(S-susceptiable)和感染者(I-infective)(你猜的没错,这就是SIR中S和I的含义,R的含义之后介绍再讲)。为了之后方便计算我们记易感者和感染者在人群中的比例为   ,那么    。

    我们重新考虑上面的问题,顺便来个示意图:

    Image Name这样的话,每天新增的患者数为    ,也就是总传染人数乘以易感者所占的人群比例。
    7 U. ?+ ?8 h+ f# K那么每天的感染者比例的增加量就是   。

    我们假设城市有一千万(N=10的7次方)人,每个患者每天接触感染每天0.8人(lamda=0.8),初始感染人数为45人(i0 = 45/N),我们来模拟70天(T=70)的情况。

    # population
    , v' Q! V3 i+ p( F, k) pN = 1e7
    6 s: W* H7 R+ _( s! j" i# simuation Time / Day; f) D/ y4 d5 C# p
    T = 700 U- v8 c; S7 j# E! m
    # susceptiable ratio. S9 z! j4 {; t4 h7 S
    s = np.zeros([T]), q( ~& F7 d1 y( _# C9 K% j6 b8 P
    # infective ratio
    8 [5 U4 w" c7 r- {& U& L; `i = np.zeros([T])
    - h, k4 N8 T% E# contact rate5 h$ H% r: X6 U  S" K6 u% ~( w8 ?$ i
    lamda = 0.8' v( k& L+ l' i5 m

    ( r* z' o9 e  g: A' V. v' i0 H' I2 |# initial infective people7 _- i5 O! F2 r2 P9 {
    i[0] = 45.0 / N
    - M. M. S8 ^) `- A  }! [; R1 y0 e3 @* o+ L! o* I* E
    for t in range(T-1):6 H% m* p) \( {' |( Q0 X$ v
        i[t + 1] = i[t] + i[t] * lamda * (1.0 - i[t])
    # F" [2 F' C! m. e# E% E
    5 r" w+ p; z% U3 E/ `
    " \0 t/ J3 \* H: @9 F
    * t1 y! I0 u5 F" S相信其他语句大家都明白,新知识是这两行:
    & x" @& ^3 B, t. x8 U0 C3 ~2 T9 I5 k. [9 ^" x7 {3 G

    # e% W' t! h. B3 ms = np.zeros([T])
    " ]/ y' b/ z# i6 g; \$ Bi = np.zeros([T])
    % _" B* {6 _& z! e6 c
    9 W% Z1 h4 x* p2 `/ I这两句话的意思是一样的,就是利用numpy(已被我们重新命名为np)的函数(zeros())来建立一个所有元素都是零的数组,而给的参数决定了这个数组的维度。比如:
    & I' |3 Z8 N1 R+ C& [/ m, V; Y* E- X2 z8 a+ G7 }6 W2 H1 q
    a = np.zeros([2,3])
    , |9 [  t+ J% b& K) U, fa
    1 c6 i9 N9 }& F9 ?0 I5 a) {
    # @9 N, {7 b% d1 C1 m+ _array([[0., 0., 0.],* x" b# z$ ?! d0 P' n9 i
           [0., 0., 0.]])6 S( S8 w+ W/ L1 M8 {! g7 _& T
    , c: D6 ?& ~) e- ~. m. \% _; q

    7 ^! e- w* l1 p" ^& X  q" darray([0., 0., 0., 0., 0.])5 W5 x( G; G: \. D

    ) V2 M7 K- I# i4 h: x
    4 B* n) |) r$ l3 |- R类似的还有产生元素全部是1的数组的函数np.ones():& C& s3 b$ ~) e7 P$ a

    1 h) r3 e2 S) n/ Y. b. x4 I% P: {0 ra = np.ones([5])" `* {" a8 @# e' v" ^$ h/ f; a
    a" f; D) X- h6 ]$ A( E; K6 Q

    - z0 Z: ]& V0 Warray([1., 1., 1., 1., 1.])- ?& |# I  Z7 W+ f+ {. u8 G/ n
    6 d/ a0 j' H- l) f8 A- E. u

      L( O) b# m5 @# n" B7 J& ea = np.ones([2,3])
    6 H3 V* a, F0 m4 H2 `! [a- u1 ^( S  y3 u5 _! P2 X! e( i

    - |7 G7 ]6 v2 n8 T5 A6 J" `+ V) [( H4 h  [! T3 D3 d
    array([[1., 1., 1.],2 U* C( i- ]$ V% F; A
           [1., 1., 1.]])  J' }% u, z! l" ^  W# v) {4 g
    3 q- l% o3 f( H# E# Y

    . ^+ W5 [4 x5 [* ~8 Xplt.plot(i)
    ; I' b9 d9 u: n3 ?3 w/ W
    : B- K; g/ X  d% C1 e
    ( W2 G, b# N/ \  W/ m' ?[<matplotlib.lines.Line2D at 0x7f0c2768d6d8>]% W% E+ g; ?- N0 I! I4 i
    : R5 Y# ^$ E) o2 G! P2 b% y

    / f: N# D8 }5 q
    7 k( t9 d( T) p7 D7 K+ }& U; D; G. C( l* g; h, A
    ) O, O* O* G( p6 Z& i
    实现SI模型的核心代码是第三个cell的第11,12行:
    0 j* p" L; c+ x6 k* R$ o5 }
    : ^6 F( a& E* ?for t in range(T-1):+ c) |4 Z1 d% }& h6 c( Q8 {+ ~1 i' d* N
        i[t + 1] = i[t] + i[t] * lamda * (1.0 - i[t])
    : k% {+ `2 a. ?; L9 s
    3 |; N. f$ v8 s0 B( h

    就是我们建立的数学模型,利用python的for循环语句累加迭代的方式把每天的增加量叠加到感染者比例上。

    运行代码完成计算,我们利用matplotlib的pyplot来画出感染者的随天数的变化曲线:


    ( N" I; t- d2 K( O( k& Z0 [fig, ax = plt.subplots(figsize=(8,4))4 }# s* `# Z& f! P
    ax.plot(i, c='r', lw=2)
    3 [# D# p% u7 [, R& q0 Q& i% l0 hax.set_xlabel('Day',fontsize=20)
      W2 g, \  m  {8 C$ Sax.set_ylabel('Infective Ratio', fontsize=20)* V8 `7 C) C- b' y! B& O
    ax.grid(1)# V2 v+ u! h& y6 x; Q6 e8 X
    plt.xticks(fontsize=20)
    5 Z, U6 f5 G0 w( i' Fplt.yticks(fontsize=20);4 B; X% G; B) d! M- u% [" c. y
    , q( B9 A- \; n

    ) _1 X) \) W/ T4 P9 p) s
    4 k6 d; K6 e2 p6 X( g9 G
    ( f: K& L3 O8 ~8 P6 f& d9 @- ]从这个结果看到,大约在25天左右,全部人群都会变成感染者,感染率  。
    3 \! F0 P& R( I& m1 O在程序中我们假设每天每个患者传染0.8个人,你可以改变lamda的值,观察全部人群感染的天数的变化。4 f$ w8 y% Y* Q. L4 R8 ~
    认真思考你会知道,lamda的现实意义就是该城市的卫生水平,衡量的是消毒,隔离这些措施执行得怎么样。

    回到传染病模型,按照SI模型计算的结果,我们全人类都会患病,这好可怕!原因是我们忽略了一个很重要的因素,那就是我们有奋斗在一线的医护人员,我们会被治愈!所以SI模型只适合研究具有高传染风险又不能被治愈的病(比如HIV)。

    但是对于其他病,我们是可以靠医疗和自身免疫系统康复的,那么紧接着的一个问题就是,被治愈后还会再被传染上嘛?根据这个问题的回答不同,我们有了两个不同的模型,SIR 和 SIS。现在可以揭晓,SIR的R的含义了,就是移出者(Removed),现实含义就是指被治愈后不会再被感染的人。而SIS表示治愈后仍然还是易感者。下面我们用python来分别实现这两个模型。

    SIS模型为了实现这个模型,我们需要引入新的一个参数,治愈率  。好啦,先上我们的新示意图:Image Name和SI模型做比较,区别就是计算感染者的增加数时要减去被治愈的人数。
    8 ]* v) i  }' r" \" C7 O) n所以这时候每天的增加的感染者为:   ,- ?4 d- U2 Z* h4 r
    增加的感染率为:   。
    . G, j. L: Q3 s) T; E' L8 Y, \模型完成啦,修改python代码:6 U( y  B# N' c- B. |2 W/ u" J( v
    # susceptiable ratio4 S+ x; w  ]0 ^7 z
    s = np.zeros([T])
    . |0 a% e. k* q0 u# infective ratio2 d1 j2 g( j" a. g
    i = np.zeros([T])
    7 Q+ x! J4 G+ [) h$ T- q3 [' T+ o; s. J( n& y
    # contact rate% B/ d' s0 l2 r& A$ B( o
    lamda = 1.0
    9 A1 O0 _6 ?  S$ P# recover rate
    - y$ \# \1 f- w1 E6 dgamma = 0.5 7 q: v# R3 i' t, T  z

    $ I1 P, x9 r: ]0 M% E1 d# initial infective people2 X2 w6 ?  c3 k/ b: a
    i[0] = 45.0 / N
    4 a) T6 {% J! E) r* y: ^
    ; Y* V- C$ @* Sfor t in range(T-1):( @" \9 I1 W1 _; ]# }1 q4 t" _! j
        i[t + 1] = i[t] + i[t] * lamda * (1.0 - i[t]) - gamma*i[t]
      x& M, D3 ~& \
    + o2 y8 E4 _1 W& c; ^. }; S( n, R. Y8 ?# R# y9 n% N: N
    6 y  T4 L7 i* r* F  V' q
    运行代码,我们画出曲线(代码和SI模型的画图完全一样):5 n+ E6 J# O1 O" g8 g3 P
    3 k( W% n7 @4 t! |; w! z, B
    fig, ax = plt.subplots(figsize=(8,4))" w8 G7 Z+ J' x2 T
    ax.plot(i, c='r', lw=2)
    8 E. {( H' g1 S+ `  w8 p0 X  max.set_xlabel('Day',fontsize=20)
    # W3 R  G" ?) @7 ]$ H9 Cax.set_ylabel('Infective Ratio', fontsize=20)
    ' f2 ?$ f7 [4 }. R. s8 b# qax.grid(1)
    # {# `+ _. J9 J- Z3 C2 xplt.xticks(fontsize=20)' G2 ]) r* I' ~' ~
    plt.yticks(fontsize=20);; a. j+ N$ ]% M5 m
    ) l/ G* j3 q, W7 m
    . H* j) i8 `; A9 X( P) T6 a& v, I

    : I% Y0 S. [+ w) F9 n( f
    8 A' z8 h; Q4 B% d- Y( w1 o

    行代码,我们画出曲线(代码和SI模型的画图完全一样); W6 O! z/ U( X
    可以看到,达到最大感染率的时间退后10天左右,最后感染和治愈达到动态平衡,人群中有始终有一半的人感染着。所以,SIS模型适合研究具有传染性和反复性的流行病,比如常见流感。同样的,感兴趣的话,改变lamda和gamma的值,观察曲线的变化。和lamda不同的是,gamma的现实意义就是对这种疾病的治疗水平。

    SIR模型

    加入了移出者,被治愈的病人不会再被传染,先上我们的新示意图:

    Image Name

    SIR 模型$ E/ |; y. `$ e
    注意到这里,人群被分成了三类,不再只有I和S,所以相比于之前的模型,我们需要找到新的约束关系。现在我们需要分别计算三种人每天的增加量了:


    3 L$ Q5 D% {: N
    • 易感者:每天都在被传染,所以一直在减少,减少量为被传染的人数:  
    • 感染者:增加了被感染的人,减少了治愈的人:  
    • 移出者:增加了治愈的人:  
      - l0 I9 {' H1 E4 i

    建模完成,修改python代码,并且假设人群普遍易感,新型疾病,初始没有移出者。


    % Y9 g( U% z, I: s' V7 R7 t% ?5 B3 w9 \# population0 i3 }. U: B/ T% i
    N = 1e7 + 10 + 5) k6 l8 y/ [, y) X4 K
    # simuation Time / Day
    : @7 e3 T  O' f7 t3 w2 }T = 1709 W" o% R( x7 w" U  U/ L$ K
    # susceptiable ratio
    ( l3 F, j5 \/ E$ j6 o' rs = np.zeros([T])
    5 {1 N* x$ K- B6 m- I* A# infective ratio2 i' w) u7 d" f, s, W
    i = np.zeros([T])
    4 e, ?- t8 K( T9 H, x8 U) y% R3 w# remove ratio0 t+ b8 ^9 u- g3 F3 x1 L
    r = np.zeros([T])6 F  M/ L! H% d5 N1 z) \2 _% `* o
    & a; k: y* |* C
    # contact rate
    ' H/ j. u  O% {/ T! _lamda = 0.2586! e9 e5 B8 [( `9 i$ E' `# N
    # recover rate
    0 {9 F6 w! P. egamma = 0.0821
    + }, d2 Z' q' ^2 ?0 Y- a, Q1 X1 t5 T8 q! |: L+ B2 O% d- x
    # initial infective people
    & G5 l8 h, |" \5 j! Ai[0] = 10.0 / N; [, e, J% j$ P/ h2 F
    s[0] = 1e7 / N8 H$ u& d- K/ w7 _0 W8 q
    for t in range(T-1):4 E" O/ ^( A8 G$ D" @4 q  [/ S
        i[t + 1] = i[t] + i[t] * lamda * s[t] - gamma*i[t]0 f7 G, W. {" z0 j. [, j
        s[t + 1] = s[t] - lamda * s[t] * i[t]) v7 y, C+ K6 s  D  D
        r[t + 1] = r[t] + gamma*i[t]
    8 k) p3 S! v% y: _, o. _3 T. J# N
    fig, ax = plt.subplots(figsize=(10,6))  P, P. H5 N* Z1 {
    ax.plot(s, c='b', lw=2, label='S')) i# U& F5 ?; h
    ax.plot(i, c='r', lw=2, label='I')% K5 X" F+ B3 J' F. m# @, {$ i  ^
    ax.plot(r, c='g', lw=2, label='R')- {$ a2 P! v9 M: A! g3 S" V; Q  Q% A
    ax.set_xlabel('Day',fontsize=20)( H1 i0 K3 A/ L# A) M  Q7 T& n
    ax.set_ylabel('Infective Ratio', fontsize=20)
    , {' ^8 k& i# Pax.grid(1)9 ~" X  ^5 o% i- V
    plt.xticks(fontsize=20)
    $ s3 q; N  I+ \: ]0 E5 K: {plt.yticks(fontsize=20)
    / r& z- H! i, |4 q: `plt.legend();2 Q" ^' u/ k4 N. r2 R& D2 F& b  t5 Z

    ) I1 ]% m7 ~' D8 E# r9 q
    ' Y& }! s; M  d0 c  t* ~) Y# S/ a/ ^9 J2 F; u
    1 g( N: k* z4 x" `2 J" o: S

    感染人数峰值发生在一个月左右,最大感染人数不到人群的20%, 但是最终人群的80%都会得此病(就是最终的移出者的比例)。SIR模型适合研究没有潜伏期的急性传染病,治疗后能够痊愈并具有抗病性。

    到这里,虽然不准确,我们也可以先用SIR模型来分析一下此次疫情,武汉新型冠状病毒的传染病动力学!

    模型有了,其实就是确定参数的问题。一开始就有人做了这个工作:

    Image Name于教授给的参数是参考了非典的,  ,初始易感人数为一千万, 初始感染10人,初始移出者5人,那么我们的城市总人数    , 带入我们的模型得到结果:

    重现于教授的模型
    6 S" @1 @$ V# Y( |+ S, ^高峰和尾声日期的推测基本相符。


    & O% O  }7 n0 o' _4 x! i# susceptiable ratio/ m4 n7 L3 r: A  p1 x# ^
    s = np.zeros([T])) H! T) T; L* L( ^
    # infective ratio* \; q4 b& C( x& u
    i = np.zeros([T])
    ( T1 B# {0 ]8 _8 q2 y# removed ratio
    7 q1 l- p0 F* N. zr = np.zeros([T])$ K" I7 L! ]* W6 ]  H
    % |- y! q1 s/ p8 f0 Y
    # birth ratio
    . _1 ]! `  E1 b, Zb = 20.0 / N
    1 h/ H9 k* h  o* H& V' R3 O( B& u# death ratio
    3 l' H" V  }3 Md = 10.0 / N+ p1 X( k5 ?; m+ `& Y

    3 H$ f, i, i* _1 l. a5 L1 i# contact rate
    % `. x5 d% y) S  A+ A  Ty = 1.5. L6 F+ r3 m9 h" |, |+ O
    # recover rate% p' A8 \/ ], `0 w8 Y6 k. }- b
    u = 0.8 # 1 / infective_period& @* _& a) _; u' U
    * c9 c0 n, I, @2 r9 B
    # sigma = y / u/ f# E$ ?+ o* e6 z. p. U" r1 G

    6 D9 z; ^' {! F2 \9 E/ `, R# initial infective people6 T' D* O0 b& `  ]9 S- c6 r
    i[0] = 45.0 / N3 e& |3 d6 o8 B* f
    s[0] = 1 - i[0]7 N: I4 L6 k* n: o" |, n
    for t in range(T-1):3 J& F' ^. C" s. E1 c- T$ A* {
        i[t+1] = i[t] + i[t] * y * s[t] - u*i[t] - d*i[t]9 Q& i: y& K  O% P% V. g2 v
        s[t+1] = s[t] - y * s[t] * i[t] + b - d*s[t]% e$ _' B6 i# g5 C
        r[t+1] = r[t] + u*i[t] - d*r[t]
    2 x) p! c! Y  Y9 D. T! b+ w
    7 @- L" o1 c5 P6 Splt.plot(i)% V: B+ q* c+ _; f: W- a, ~# w
    plt.plot(s)
    7 H# Y; v* ~- wplt.plot(r)
    8 A/ V: C& V( K3 V( v" kplt.plot(np.diff(i),ls='--')
    7 T3 j3 j' [6 v
    5 T, c# `! J( B6 f
    ( F7 ~/ F& J/ L; O  |[<matplotlib.lines.Line2D at 0x7f77796e8518>]1 ^# x/ u+ O/ v2 G

    2 [+ A$ y1 D2 j' ?5 \3 [
    5 ?% y5 [9 t$ I3 M8 z+ w  a4 i
    * @; P* A' P# J: j7 C% dSEIR模型

    但是,SIR模型和实际情况的出入会比较大,因为忽略了太多因素了,比如说潜伏期,比如说政策调控,药物,出生死亡等等。下面我们可以和前面一样,把潜伏期考虑进去,新增一个人群,叫潜伏者E(exposed):

    Image Name

    SEIR模型( {% Q- ]' f7 w9 }& a8 y4 S
    同样的我们需要计算各人群每天的增加量:

    S:每天减少:  
    / H2 R% v9 }/ U# c6 T4 M) [  qE:每天增加传染,减少发病:  
    , y4 d; [. q; [I:每天增加发病,减少治愈:  
    " o- w( v- h, i0 x4 R2 \! y! M/ uR:每天增加治愈:  4 u& D- [: S7 x
    建模完成,修改我们的python程序,这里的   可以理解为潜伏期的倒数。给的4天。新型冠状病毒给目前临床的潜伏期是3-14天。7 A# U3 |6 _+ h' p% S2 ~
    # population/ M" i9 Q/ D; d! k# }% }/ X' l$ {
    N = 1e7 + 10 + 5
    / p3 P4 u  b; H# simuation Time / Day* x* g( \+ w) t. M* u' v
    T = 170
    2 J# R8 H2 ?+ g) j# susceptiable ratio
    + [; D  n) v5 k* q- N1 D) Z* Ts = np.zeros([T]); c8 I- w6 q. \
    # exposed ratio' R- j9 R' a. v, O
    e = np.zeros([T]); X" [, }; ^2 E: c# N
    # infective ratio
    - B, N; C1 K$ q6 T  F$ Vi = np.zeros([T])
    ( z' p* G9 B! V& z- C# remove ratio9 q! |- M3 J1 i( e  P
    r = np.zeros([T])! F6 w7 i1 f) m; h0 w

    ; n2 |% @) G( a% {# contact rate9 f6 x6 _8 M( c+ R
    lamda = 0.5! N& A( E% G" a# V, b
    # recover rate5 _3 y' B+ [- E% U5 p
    gamma = 0.0821
    " }+ e- q) x( j3 V7 a9 F8 f# exposed period
    6 x/ Y4 w1 y: Q. R& Ksigma = 1 / 4
    2 Q: u6 ?0 U$ a9 Y" g( i5 n6 C. g& E$ G/ G
    # initial infective people
    0 W  E; g6 ?0 W- N* p/ Q0 Ci[0] = 10.0 / N
    $ K6 g! ?% C0 M9 G7 `, Ms[0] = 1e7 / N
    4 L+ n$ ]) y( Q" C8 ce[0] = 40.0 / N6 Z& u6 J. r5 K1 I* y
    for t in range(T-1):& z; _! @! Q8 i$ T+ D6 n$ F2 \  A: B
        s[t + 1] = s[t] - lamda * s[t] * i[t]
    0 V2 Z) s6 n9 W+ ~) z7 c+ n7 Y    e[t + 1] = e[t] + lamda * s[t] * i[t] - sigma * e[t]* I8 l& q  c5 w9 D
        i[t + 1] = i[t] + sigma * e[t] - gamma * i[t]. e& l' Q/ A. t. t- u% d
        r[t + 1] = r[t] + gamma * i[t]
    8 J: M) O0 C/ s3 O" z
    5 Q, p; e' p4 t" z; h
      i/ ~7 Y& b2 ?9 {- U7 e% Xfig, ax = plt.subplots(figsize=(10,6))) D. ?: X7 z: E3 u  p+ L$ @
    ax.plot(s, c='b', lw=2, label='S')
    5 m" B2 S8 W+ h% m6 _ax.plot(e, c='orange', lw=2, label='E')
    8 \6 P  ~/ r" p$ {# sax.plot(i, c='r', lw=2, label='I')
    $ s' d4 f. h. l% `ax.plot(r, c='g', lw=2, label='R')
    4 @0 ~( |, J! V- e! S8 D- F6 fax.set_xlabel('Day',fontsize=20)
    / M: S; Z1 U( E8 n0 }  `ax.set_ylabel('Infective Ratio', fontsize=20)
    1 \2 I" D0 Z: w! G# b2 gax.grid(1)# g+ m/ n2 s8 V0 `" A6 [" z6 V) Y$ @
    plt.xticks(fontsize=20)
    0 E7 B) E' v( e; T3 h& t4 Jplt.yticks(fontsize=20)
    3 T. l( f" J0 zplt.legend();
    + t* Q7 D7 w$ h- b  n% i+ ~0 R( K7 j. X: V
    $ b! k* E! a1 @7 \% @
    7 O- m# V  v) p

    6 `4 M+ U1 G/ k按照模型的结果,此次疫情可能真的要持续到 三四月份。这个接触率    真的非常影响表现,模型给的是个常数,但是由于政府措施的原因,这应该是个变化的值。
    3 v& E6 {& |: J+ A2 E4 q; \$ n还有治愈率   也是。没有完美的模型,但是随着考虑因素的增多,就会越来越接近实际情况,从而指导政府的疫情方针政策的制定。
    9 b1 ^1 o+ [7 g" _0 I. H  o, W
    * N  M: w- L7 Q
    5 j8 U4 Y* x9 v1 C" W* _$ R5 u3 R( u+ h4 Z
    & N# H$ V8 Q5 [4 I1 ?
    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-20 14:36 , Processed in 0.424909 second(s), 51 queries .

    回顶部