最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python模擬預(yù)測一下新型冠狀病毒肺炎的數(shù)據(jù)

 更新時間:2020年02月01日 10:29:45   作者:自由民  
這篇文章主要介紹了python模擬預(yù)測一下新型冠狀病毒肺炎的數(shù)據(jù) ,需要的朋友可以參考下

大家還好嗎?

背景就不用多說了吧?本來我是初四上班的,現(xiàn)在延長到2月10日了。這是我工作以來時間最長的一個假期了??上囊踩ゲ涣?。待在家里,沒啥事,就用python模擬預(yù)測一下新冠病毒肺炎的數(shù)據(jù)吧。要聲明的是本文純屬個人自娛自樂,不代表真實(shí)情況。

采用SIR模型,S代表易感者,I表示感染者,R表示恢復(fù)者。染病人群為傳染源,通過一定幾率把傳染病傳給易感人群,ta自己也有一定的幾率被治愈并免疫,或死亡。易感人群一旦感染即成為新的傳染源。

模型假設(shè):

①不考慮人口出生、死亡、流動等情況,即人口數(shù)量保持常數(shù)。

②一個病人一旦與易感者接觸就必然具有一定的傳染力。假設(shè) t 時刻單位時間內(nèi),一個病人能傳染的易感者數(shù)目與此環(huán)境內(nèi)易感者總數(shù)s(t)成正比,比例系數(shù)為β,從而在t時刻單位時間內(nèi)被所有病人傳染的人數(shù)為βs(t)i(t)。

③ t 時刻,單位時間內(nèi)從染病者中移出的人數(shù)與病人數(shù)量成正比,比例系數(shù)為γ,單位時間內(nèi)移出者的數(shù)量為γi(t)。
模型為



其中,β為感染系數(shù),代表易感人群與傳染源接觸被感染的概率。γ為隔離(恢復(fù))系數(shù),我們對其倒數(shù)1/γ更感興趣,代表了平均感染時間(average infectious period)。S(0)為初始易感人數(shù),I(0)為初始感染人數(shù)。

按照[1]里面的代碼模型的感染人數(shù)是這樣的


現(xiàn)在的問題就是利用現(xiàn)有的數(shù)據(jù)找到新冠肺炎的β值,γ值等數(shù)據(jù)了。先把數(shù)據(jù)拔下來吧。從[3]上扒數(shù)據(jù),由于數(shù)據(jù)不多,就手工完成吧。保存到csv文件里。

然后把數(shù)據(jù)作圖


還有一個指標(biāo)是再生數(shù)R0=β/γ,大于1時人群中大部分才被感染[4]。世衛(wèi)組織1月23日的估計(jì)是R0在1.4到2.5之間[5],最新的根據(jù)前425例發(fā)病數(shù)據(jù)的估計(jì)值為2.2[6]。

文章[7]中的按一般病毒性肺炎恢復(fù)期25天計(jì)算得到的γ值為0.04。

關(guān)于β值和初始易感人群,[7]的作者采用的方法是先估計(jì)一個區(qū)間,然后用最小二乘法找到最佳參數(shù),β≈3.57*10^-5。S[0]的范圍為5000-30000人。[7]文章里有matlab代碼,我用python改寫一下,由于對最小二乘法法的實(shí)現(xiàn)比較陌生,嘗試了半天,最后我決定用最笨的辦法——窮舉法。就是用兩個嵌套循環(huán)將范圍內(nèi)所有β值和S0值都試一遍,計(jì)算每次嘗試結(jié)果與實(shí)際數(shù)據(jù)之間差值的平方和,平方和最小的一組β值和S0值用來做預(yù)測。代碼如下:

γ值設(shè)定為0.04,即一般病程25天

用最小二乘法估計(jì)β值和初始易感人數(shù)

gamma = 0.04
S0 = [i for i in range(20000, 40000, 1000)]
beta = [f for f in np.arange(1e-7, 1e-4, 1e-7)]
# 定義偏差函數(shù)
def error(res):
 err = (data["感染者"] - res)**2
 errsum = sum(err)
 return errsum

# 窮舉法,找出與實(shí)際數(shù)據(jù)差的平方和最小的S0和beta值
minSum = 1e10
minS0 = 0.0
minBeta = 0.0
bestRes = None

for S in S0:
 for b in beta:
  # 模型的差分方程
  def diff_eqs_2(INP, t):
   Y = np.zeros((3))
   V = INP
   Y[0] = -b * V[0] * V[1]
   Y[1] = b * V[0] * V[1] - gamma * V[1]
   Y[2] = gamma * V[1]
   return Y

  # 數(shù)值解模型方程
  INPUT = [S, I0, 0.0]
  RES = spi.odeint(diff_eqs_2, INPUT, t_range)
  errsum = error(RES[:21, 1])
  if errsum < minSum:
   minSum = errsum
   minS0 = S
   minBeta = b
   bestRes = RES
   print("S0=%d beta=%f minErr=%f" % (S, b, errsum))
print("S0 = %d β = %f" % (minS0, minBeta))

結(jié)果 S0 = 39000, β = 8e-6

上述程序耗時較長,只在探索時執(zhí)行,完了就注釋掉,用最優(yōu)參數(shù)進(jìn)行預(yù)測。



預(yù)測最大感染人數(shù):23769 時間是在1月10日的33天后,也就是2月12日。

本文代碼:https://github.com/zwdnet/2019-nCov-SIRmodel

與[7]作者討論,我的算法是將S0與β作為獨(dú)立的兩個變量用兩個循環(huán)嵌套分別遍歷,他的做法是用每個S0的值代入微分方程算出相應(yīng)的β值。他的算法應(yīng)該更好一些,我正在嘗試。另外在微信公眾號上看到一篇更系統(tǒng)的關(guān)于此次疫情的數(shù)學(xué)模型的文章:https://mp.weixin.qq.com/s/rgaJtA4jioLOCHs_oCauDg

再次聲明:本文只是我個人在家無聊的游戲作品,不是正兒八經(jīng)的預(yù)測。我也不是流行病學(xué)專業(yè)人士。祝疫情早日結(jié)束!武漢加油!中國加油!

總結(jié)

以上所述是小編給大家介紹的python模擬預(yù)測一下新型冠狀病毒肺炎的數(shù)據(jù),希望對大家有所幫助!

相關(guān)文章

  • Python中的re模塊之正則表達(dá)式模塊常用方法

    Python中的re模塊之正則表達(dá)式模塊常用方法

    re模塊是Python中使用正則表達(dá)式的最基礎(chǔ)的模塊,re模塊的這些功能覆蓋了正則表達(dá)式的常見用法,使用re模塊可以簡化字符串的模式匹配、信息提取、過濾替換、切分等操作,本文給大家介紹正則表達(dá)式模塊常用方法,感興趣的朋友跟隨小編一起看看吧
    2023-08-08
  • 解決Python3中的中文字符編碼的問題

    解決Python3中的中文字符編碼的問題

    Unicode是一32位編碼格式,不適合用來傳輸和存儲,所以必須轉(zhuǎn)換成utf-8,gbk等等。這篇文章主要介紹了Python3中的解決中文字符編碼的問題,需要的朋友可以參考下
    2018-07-07
  • python?Helium自動化庫的功能特性探索

    python?Helium自動化庫的功能特性探索

    這篇文章主要為大家介紹了python?Helium自動化庫的功能特性探索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-02-02
  • python中合并兩個文本文件并按照姓名首字母排序的例子

    python中合并兩個文本文件并按照姓名首字母排序的例子

    這篇文章主要介紹了python中合并兩個文本文件并按照姓名首字母排序的例子,需要的朋友可以參考下
    2014-04-04
  • 詳解Python的hasattr() getattr() setattr() 函數(shù)使用方法

    詳解Python的hasattr() getattr() setattr() 函數(shù)使用方法

    這篇文章主要介紹了詳解Python的hasattr() getattr() setattr() 函數(shù)使用方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-07-07
  • Pytorch 抽取vgg各層并進(jìn)行定制化處理的方法

    Pytorch 抽取vgg各層并進(jìn)行定制化處理的方法

    今天小編就為大家分享一篇Pytorch 抽取vgg各層并進(jìn)行定制化處理的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • 使用python-opencv讀取視頻,計(jì)算視頻總幀數(shù)及FPS的實(shí)現(xiàn)

    使用python-opencv讀取視頻,計(jì)算視頻總幀數(shù)及FPS的實(shí)現(xiàn)

    今天小編就為大家分享一篇使用python-opencv讀取視頻,計(jì)算視頻總幀數(shù)及FPS的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • python中將兩組數(shù)據(jù)放在一起按照某一固定順序shuffle的實(shí)例

    python中將兩組數(shù)據(jù)放在一起按照某一固定順序shuffle的實(shí)例

    今天小編就為大家分享一篇python中將兩組數(shù)據(jù)放在一起按照某一固定順序shuffle的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Python實(shí)現(xiàn)基于SVM的分類器的方法

    Python實(shí)現(xiàn)基于SVM的分類器的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)基于SVM的分類器的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Python 中 Meta Classes詳解

    Python 中 Meta Classes詳解

    首先,在認(rèn)識metaclass之前,你需要認(rèn)識下python中的class。python中class的奇怪特性借鑒了smalltalk語言。大多數(shù)語言中,classes僅僅是用于描述怎樣創(chuàng)建一個對象的代碼端。在某種程度上說,python中的class也是這樣的。
    2016-02-02

最新評論

奉贤区| 安塞县| 宝应县| 九龙坡区| 阳曲县| 巴楚县| 赣榆县| 普兰县| 客服| 林口县| 中山市| 正安县| 罗甸县| 天柱县| 项城市| 苏州市| 汪清县| 探索| 西乡县| 石楼县| 庆阳市| 台东县| 屏东县| 辉南县| 都兰县| 瑞昌市| 桃园县| 南川市| 襄汾县| 镇远县| 崇义县| 温宿县| 瑞安市| 泰兴市| 南乐县| 西安市| 浠水县| 宝应县| 定陶县| 吉木萨尔县| 武川县|