用數據告訴你,新型冠狀病毒傳染性有多強?

  • 新型肺炎疫情牽動著全國人民的心。截至 2020 年 1 月 27 日 11 時 54 分,全國新型肺炎病例已確診 2762 例,死亡 80 例,治癒 51 例。
  • 用數據告訴你,新型冠狀病毒傳染性有多強?

    用數據告訴你,新型冠狀病毒傳染性有多強?

    作為一名碼農,我們用數據說話,下面為大家分析目前的新型冠狀病毒真的嚴重嗎?

    • 本文只是一個學術的研究,能夠獲取的數據維度非常單一且數據量也少,並無任何實際的價值和參考意義,請不要對號入座,請不要隨便斷章取義,歪曲本文。
    • 本文的數據來自於 WHO,國家衛檢委,騰訊新聞和澎湃新聞美數課。全部人工抄錄,如有錯誤之處,敬請指出。
    • 本文寫於 1 月 26 日,當時獲取到的信息非常有限,得出的結論可能會被後續更多的數據被推翻。再次聲明,所以本文僅是一個學術的探討,僅僅是一個思路,並無實際的價值和參考意義。
    • 本人也是個菜雞程序員,可能會有數據錯誤,程序沒寫好,有 Bug 等,歡迎指正批評。一起探討學習。

    目的:本文探討的主要目的是,有沒有一種算法可以根據已有的數據對疫情進行預測和評估,可以方便在疫情出現的時候,根據預測的數據來判斷當前的疫情狀況。

    文章分為如下五個部分:

    • 猜想
    • 數據準備
    • 猜想驗證
    • 新型冠狀病毒確診數據的預測和驗證
    • 總結

    PS : 心急的朋友可以直接拖到末尾看結論。

    用數據告訴你,新型冠狀病毒傳染性有多強?

    圖片來自丁香園

    01猜想

    由於當前新型冠狀病毒的數據並不多(從 11 號-26 號),所以僅僅是新型冠狀病毒的數據來做研究是不夠的,必須還要一組參考驗證組。(當然是越多越好,但是精力有限,所以只找了一組)。

    首先明確一下判斷疫情的嚴重情況的指標,目前疫情一般會公告這四個數據:

    • 確診病例
    • 疑似的病例
    • 感染的地區
    • 死亡的人數

    由於我們把地區限定在了中國(雖然各個地區不一樣),所這個地區的指標就不用了,死亡人數在疫情的前中後期都不太一樣,這個也不用。

    疑似病例這個和各地的收診情況有關係,比如香港的疑似病例就非常多,確診很少,所以這個指標也不採用,剩下就以確診病例作為唯一的參考指標。

    猜想 1:假設病毒的傳播和地區,氣候以及病毒自身的特徵有非常大的關係。

    那麼只要找到一個和新型冠狀病毒這三個屬性非常相似的病毒,只要算法能夠對這種病毒的確診病例進行預估和判斷,那麼算法也可以對新型冠狀病毒進行預估和判斷。

    用數據告訴你,新型冠狀病毒傳染性有多強?

    2003 年 4 月 22 日 SRAS,圖源..不太清楚

    目前和新型冠狀病毒最像的應該就是 SARS:

    • 氣候和現在差不多,都是 1 月開始,但是 SARS 在 3 月才擴散。
    • 地區主要是是中國。
    • 病毒類型:都是冠狀病毒,都有發燒咳嗽等特徵。

    那麼基於上述的條件,採用了 SARS 作為參考組。

    猜想 2:可以給定一個 Δ。

    • 如果當前確診的病例-預測的確診病例的比率>Δ,那麼當前的疫情變異了,進一步擴大影響的範圍。
    • 如果當前確診的病例-預測的確診病例的比率
    • 如果-Δ

    02數據的準備

    • 確診病例的數據:
    • SARS 的數據來源於 www.who.int , 數據從 2003 年的 3 月 17 日-5 月 30 日 。
    • 新型冠狀病毒的數據來源於騰訊新聞和國家衛生健康委員會 http://www.nhc.gov.cn 數據從 2020 年的 1 月 15 日到 1 月 26 日。

    如果可以拿到 SARS 在 1 月份的數據就好了,可惜沒有一個比較完整的地方有記錄,基本上衛生部發布的好像是從四月份開始。於是只能採用四月份的數據了。

    評估的算法:採用了 LSTM(長短期記憶網絡),搭建的話 Keras。

    LSTM 已經是個老算法了,經常用於量化投資(簡單點來說就是炒股之類,預測股票的增長),非常擅長於時間序列的預測。

    最終調教後的算法模型是,根據過去三天的數據,可以預估最新一天的數據。

    用數據告訴你,新型冠狀病毒傳染性有多強?

    LSTM

    實驗的環境:數據量比較少,直接租了一臺 16 核 8G 的阿里雲的主機進行測試。

    03猜想驗證

    猜想驗證部分直接全部使用 WHO 的 SARS 的數據進行驗證。採用的字段是 Cumulative number of case(s),累計病例數,我這裡就當它是確診人數了。

    SARS 的數據分別有兩部分,一部分是中國大陸的,一部分是中國香港的。在 5 月份後基本已經趨於平緩,所以只取了前兩個月(約 60 天左右的數據)。

    用數據告訴你,新型冠狀病毒傳染性有多強?

    中國大陸確診人數變化曲線

    用數據告訴你,新型冠狀病毒傳染性有多強?

    中國香港確診人數變化曲線

    可以看到數據涵蓋了病毒爆發期,病毒平穩增長期,以及病毒被消滅期,比較合適用來驗證算法是否可以擬合整體的曲線。

    猜想 1:這裡採用前 50 天的數據做訓練樣本,訓練的結果用來預測 60 天的情況。

    預測和實際的對比如下:

    用數據告訴你,新型冠狀病毒傳染性有多強?

    中國大陸 SARS 確診人數變化曲線(預測和實際)

    用數據告訴你,新型冠狀病毒傳染性有多強?

    中國香港 SARS 確診人數變化曲線(預測和實際)

    從圖中我們可以看到,在使用了 90% 的數據量下,數據是擬合的比較好的,肉眼看上去香港的數據基本可以用算法完全預估。

    這裡給一下數據誤差的對比情況:

    • 誤差:|(實際值-預估值)/ 實際值 |
    • 中國大陸:誤差的平均值 0.057, 誤差的均方差 0.060。
    • 中國香港:誤差的平均值 0.053, 誤差的均方差 0.137。

    說人話就是,模型預測的數據和實際的數據最多差了 6%。效果是非常理想的。這裡我們可以證明第一個猜想,即 LSTM 可以用來擬合 SARS 確診人數的變化情況。

    猜想 2:實際上雖然猜想一得到了證實,但是依舊沒啥用,因為這裡的模型是使用了 90% 的數據,基本已經到了傳播的後期。

    那麼前期是否可以使用同一個模型進行驗證呢? 這裡只取中國大陸的數據進行試驗。

    用數據告訴你,新型冠狀病毒傳染性有多強?

    根據三個階段(這三個階段是肉眼判斷截取的,是否合理當時沒有考慮)截取對應的數據進行建模,建模後的預測效果如下:

    用數據告訴你,新型冠狀病毒傳染性有多強?

    前期的數據建模人數變化曲線(預測和實際)

    用數據告訴你,新型冠狀病毒傳染性有多強?

    中期的數據建模人數變化曲線(預測和實際)

    用數據告訴你,新型冠狀病毒傳染性有多強?

    後期的數據建模人數變化曲線(預測和實際)

    在前期的數據的預測中,到後面兩個階段實際的數據都比預測的數據比要大,說明在疫情開始了爆發。

    在中期的數據的預測中,其他兩個階段預測的數據基本都比實際的數據要大, 說明在疫情在前期的感染速度較低,後期的感染速度也變低 。

    根據上面兩個數據,是可以推測是存在一個 Δ 去判斷當前的疫情狀況的。但是 Δ 究竟是多少呢?

    這裡倒是可以根據好幾個因素去設置:

    • 斜率的改變
    • 誤差的改變
    • 轉折點的個數等

    這裡就偷懶了,可以明顯看到各個時期都有一個或者多個轉折點(消亡期不算)。

    直接取最接近轉折點的誤差率來計算:

    • 在爆發期裡面,最靠近轉折點的誤差值是 0.21。
    • 在控制期裡面,最靠近轉折點的誤差值是 0.14 。
    • 兩個取平均作為 Δ 的值,也就是 0.175 。

    04新型冠狀病毒確診數據的預測和驗證

    用數據告訴你,新型冠狀病毒傳染性有多強?

    新型冠狀病毒從 16 號至 26 號確診人數變化曲線

    分別取前 6 天的數據(到 20 號),取前面 9 天的數據(到 25 號)的數據代入模型進行預估:

    用數據告訴你,新型冠狀病毒傳染性有多強?

    到 20 號的數據模型確診人數變化曲線(預估和實際)

    用數據告訴你,新型冠狀病毒傳染性有多強?

    到 24 號的數據模型確診人數變化曲線(預估和實際)

    為什麼選 20 號呢,20 號主要是央視有采訪鍾南山大佬,而且第一次說明了人傳人的存在,以及 14 名醫護被感染。

    我覺得應該算是開始重視這個病毒的一個點,隨後各地開始上報疫情,發佈以及響應等。

    再往前的時間點就數據就比較缺失了,模型精準度已經失去了使用的價值,所以採取了 20 號的這個時間點作為分隔來建造模型。

    如果以到 20 號的模型來估算的話,第一次誤差偏離 0.17 的時間是 23 號,誤差為 0.19。23 號,廣東,浙江啟動了一級響應,確診的病人增多。

    但個人感覺應該是檢測的方法變強導致的,側面來看,模型的確檢測除了異常值,不過並不能夠說明病毒變強了。

    如果以到 24 號的模型來看,預估的 25 號的數據是 1877,實際的數據 1972,誤差率在 0.04,未到偏離值。

    所以根據這個模型推斷,當前疫情還在持續擴散中,但是並沒有進一步惡化,可能國家的高度重視和很多省份都開始參與其中有關係。

    依照當前的模型,明天的確診人數的預估值是 2770,加上 0.17 的誤差的話:

    • 如果實際的確診人數>3337,說明疫情加重。
    • 如果實際的確診人數<2367,說明疫情正在被控制。
    • 如果處於中間,那還是依舊在擴散發展中,但並未惡化。

    再次聲明:以上的觀點和結論都屬於依據當前的確診人數所作的推斷,毫無參考的意義和價值。如果數據剛好對了,不能說明什麼,如果數據錯了,證明這個模型真的不行。

    那麼,如果我們帶入 SARS 最嚴重的的時候,會怎麼樣?

    用數據告訴你,新型冠狀病毒傳染性有多強?

    還是按照誤差 0.17 來算,在 23 號,誤差達到了 0.18,也就是 3 天前,按照這個模型的數據推算,新型冠狀的病毒傳染性比 SARS 要強。 但很可能是和春運有關係,畢竟數據的時間不一致。

    再再次聲明:以上的觀點和結論都屬於依據當前的確診人數所作的推斷,毫無參考的意義和價值。如果數據剛好對了,不能說明什麼,如果數據錯了,證明這個模型真的不行。

    05總結

    寫這個的目的純粹是為了探討和研究,實際上,真的要寫一個這種疫情預測和評估的系統,需要非常多的參考的數值。

    比如醫護人員的數量,檢測手法準確率,時間,病毒的潛伏期等等,需要非常多的人力物力才可以編寫完成,像本文這種只靠單一維度的輸入去判斷和預估的模型和玩具沒什麼區別。

    但是在編寫的過程中也發現很多問題,例如政府之前的披露的數據真的非常少,疫情的相關數據還是多方尋找才找到一部分 。

    希望在這次的疫情中保留比較詳細的數據:

    • 例如支援的物品的統計,損耗和使用情況等
    • 例如病人的數量對物品的需求等
    • 例如疫情各個時期需要多少的物資統計等

    這些都可以作為系統的的輸入,藉助這些數據,打造一個強大完整的疫情監控和評估系統,甚至不是疫情,而是重大事件的監控和評估系統,待下次再出現疫情、災情,可以快速的調度全國的資源進行處理和援助。

    最後,祝大家春節快樂,多注意個人衛生,帶好口罩,不要放鬆警惕。


    分享到:


    相關文章: