疫情什么時(shí)候才能結(jié)束?菜鳥用Python進(jìn)行預(yù)測(cè)
什么時(shí)候能去武大看櫻花?什么時(shí)候才能再去重慶吃麻辣火鍋?什么時(shí)候才能再去海南沖浪?什么時(shí)候才能再去大理看風(fēng)花雪月?2020年的春節(jié)顯得格外漫長(zhǎng),一切的計(jì)劃似乎都被突如其來(lái)的新冠肺炎疫情給打斷了。
究竟什么時(shí)候生活才能恢復(fù)正常?本文將試圖用python對(duì)疫情的趨勢(shì)做個(gè)預(yù)測(cè),待疫情結(jié)束之時(shí),一起去武漢看櫻花,一起去春熙路看小姐姐可好。
1.準(zhǔn)備工作
編程環(huán)境:anaconda下Spyder。
數(shù)據(jù)來(lái)源:整理自國(guó)家衛(wèi)生健康委員會(huì)官網(wǎng)。
需要安裝的依賴庫(kù)有:scipy。scipy是一個(gè)用于數(shù)學(xué)、科學(xué)等領(lǐng)域的開源科學(xué)計(jì)算庫(kù),其建立在Numpy之上,可用于處理積分、優(yōu)化、常微分方程數(shù)值解的求解、信號(hào)處理等問(wèn)題。本文主要用于函數(shù)擬合。
2.算法流程
1).理論解釋
如何預(yù)測(cè)新冠肺炎的累計(jì)確診人數(shù),目前常用的方法有基于SIR的傳染病模型,以及基于Logistic方程的方法等。SIR模型實(shí)現(xiàn)起來(lái)相對(duì)較復(fù)雜,本文將基于一個(gè)更簡(jiǎn)單的模型——利用Logistic方程進(jìn)行預(yù)測(cè)。
Logistic方程可用于描述,物種增長(zhǎng)模型,當(dāng)一個(gè)物種遷入到一個(gè)新生態(tài)系統(tǒng)中后,若該物種在非理想生態(tài)系統(tǒng)(存在天敵,食物、空間等資源緊缺等)中存在生存阻力,則物種數(shù)量大致呈現(xiàn)S型增長(zhǎng)。開始產(chǎn)生一個(gè)緩慢的增長(zhǎng)期,慢慢的呈現(xiàn)指數(shù)型爆發(fā),后期隨著環(huán)境阻力的變化,逐漸趨于穩(wěn)定。
用函數(shù)可以表示為:
參數(shù)的含義如下:
:表示隨著時(shí)間的變化,環(huán)境中物種的數(shù)量。
:表示環(huán)境中物種能達(dá)到的極限值。
:表示環(huán)境開始時(shí)期,物種的數(shù)量。
:表示增長(zhǎng)速率,在圖形中展現(xiàn)的就是曲線的陡峭程度,越大,物種數(shù)量越快逼近N值。
:表示時(shí)間。
2).程序?qū)崿F(xiàn)
程序中,首先定義待擬合函數(shù),然后獲取“累計(jì)確診”人數(shù)數(shù)據(jù),并利用curve_fit()函數(shù)進(jìn)行參數(shù)擬合,得出需要擬合的參數(shù)。最后將擬合曲線和實(shí)際確診人數(shù)在同一圖中顯示,直觀觀測(cè)出模型效果。
通過(guò)將1月20日至2月8日的數(shù)據(jù)進(jìn)行Logistic方程擬合,在2月9-11日三天預(yù)測(cè)數(shù)據(jù)和實(shí)際數(shù)據(jù)較為吻合。但在2月12日,官方的數(shù)據(jù)突然激增,這讓我們的模型失效。
在重新調(diào)整訓(xùn)練數(shù)據(jù),我們選擇將1月20日至2月26日的數(shù)據(jù)作為訓(xùn)練數(shù)據(jù),2月27-28日數(shù)據(jù)作為對(duì)照數(shù)據(jù),可得到新的擬合曲線,預(yù)測(cè)值和實(shí)際值都相對(duì)較為吻合。
結(jié)論:
(1)利用Logistic方程進(jìn)行預(yù)測(cè)的數(shù)據(jù)統(tǒng)計(jì)口徑很關(guān)鍵,統(tǒng)計(jì)標(biāo)準(zhǔn)一致,可以讓整個(gè)擬合曲線更為平滑。
(2)通過(guò)預(yù)測(cè)曲線預(yù)計(jì)累計(jì)確診人數(shù)將在3月上旬達(dá)到最大值(預(yù)計(jì)為8萬(wàn)余人),之后疫情將逐漸趨于穩(wěn)定。
休息了那么久,在疫情即將結(jié)束之際,也希望大家新的一年里,不要被疫情耽誤,盡快進(jìn)入工作。山花爛漫之時(shí),一起去旅行。