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