過去幾年,即使在 Covid-19 疫苗在全球範圍內產生影響的情況下,預測建模的分析方法也取得了重大進展。梯度提升樹和深度神經網路已成為時間序列預測的最先進方法。 您可以回顧一下最近的專刊的國際預測雜誌,包括一個紙由 David Lander 和我介紹我們在 M5 不確定性競賽中獲勝的解決方案,其中我們專門使用梯度增強樹。 本註釋示範了一種簡單的方法來使用JMP Pro 中的 XGBoost 插件對美國疾病管制中心 (CDC) 的當前資料集進行基本時間序列預測,該資料集是圍繞 Covid-19 疫苗安全性爭議的中心。
在一系列三篇長博文中,道德懷疑論者(TES) 對自 2021 年初推出 Covid-19 疫苗以來癌症和其他死亡率大幅增加敲響了警鐘。 他使用了 CDC 的公開數據,他的主要圖表之一如下:

在反駁中,傑弗瑞莫里斯(JM) 重新分析了數據並得出結論認為,到 2022 年 3 月 12 日,該訊號似乎並不引人注目。 他的兩張圖表如下:

JM 寫道:
評估他的說法的關鍵當然是查看 2022 年的數據,因為它們變得更加成熟,我們整個夏天都有更完整的數據。 如果癌症死亡人數從2021 年春季最低點開始的增加持續到2022 年,那麼這將為他的假設提供更多支持,但如果從2022 年初開始的下降趨勢持續下去,那麼這將削弱固有的更高超額的說法2021 年初引入的某些因素引發的癌症死亡。
現在,我們可以在 JMP Pro 中分析 2022 年夏季的數據,以了解我們的情況。 資料以兩個 .csv 檔案形式提供,涵蓋2014-2019和2020-2022年。 後者被視為“臨時”,因為新數據不斷添加,而最後幾週的數字往往異常低,因為它們尚未完全製成表格。 後續分析是根據2022年11月22日下載的數據。
為了調查死亡率過高的問題,我們需要對一段時間內的基線死亡率進行適當的估計,可以從目前數據中減去該估計值來估計差異。 TES描述了一個相當複雜的工作流程為了實現這一目標,包括為期 6 週的平滑功能和“拉動效應”,以適應早期因 Covid-19 而不是癌症死亡的個人。 不幸的是,TES 似乎沒有提供任何程式碼來準確地重現他的結果,儘管他的方法中的步驟似乎是合理的。 JM 將基準估計為基本線性趨勢加上每週季節性平均值(分別為上左圖的黃線和藍線)。 他令人欽佩地提供R程式碼,我能夠成功運行並重現他的結果。 TES 和 JM 的基線都是基於 2014-2019 年數據對 2020-2022 年的有效預測,鑑於大流行於 2020 年 1 月左右開始,這是一個合理的時間劃分。
鑑於最近梯度提升樹在時間序列預測方面取得了巨大成功,一種有吸引力的再分析方法是使用XGBoost 根據2014-2019 年數據預測2020-2022 年死亡率,並將其用作評估2020-2022年期間超額死亡人數的基線。 使用 XGBoost 進行預測的關鍵是設計適當的基於時間的特徵,以實現未來的通用性。 根據數據和問題的結構,可以實現許多功能;看看我們的國際JF論文有關這方面的一些詳細資訊。 為了方便與 TES 和 JM 進行比較,我使用了一種簡單的方法,只有兩個數字特徵:一年中的第幾週和 156 週的滯後值。 更複雜的功能當然是可能的,儘管這兩個功能似乎做得相當不錯,並為 XGBoost 解決此類問題的能力提供了很好的初步說明。 結果在圖形產生器中顯示如下:

頂部面板以藍色顯示原始數據,以紅色顯示 XGBoost 預測。 簡單的 XGBoost 預測通過了「眼球」測試,儘管它們很可能透過更仔細的建模得到改進。 中間的面板包含擬合的殘差,2020 年以後的結果可以被視為每週超額癌症死亡人數的估計。 我們看到 2021 年中期之後大多數幾週的觀測數據都超出了預測。 底部面板顯示殘差的累積總和,最終數字 15,000 是 2022 年 10 月 1 日超額死亡總數的近似估計。 該分析的初步結論為 TES 聲稱從 2021 年中期開始癌症死亡人數過多提供了支持,表明疫苗可能發揮了因果作用。
估計超額死亡人數是一個複雜的議題,前面的分析旨在作為一個簡單的起點,其說明性多於確定性。 這疾病管制署和英國奧赫德有更深入的頁面,網路上有大量的分析和爭議。 例如,請參閱以下之間的分歧傑明和馬修·克勞福德一些令人驚訝的保險數據顯示了區域辛普森悖論,收回的紙Kostoff 等人的文章,以及挑釁性的文章諾曼芬頓及其同事和史蒂夫·基爾希來自英國的數據。 看看冬季會帶來哪些數據和爭論將會很有趣,值得慶幸的是,我們擁有像 JMP Pro 這樣的可靠工具,可以自己有效率、直接地分析數據。
在 JMP Pro 中重現 XGBoost 預測分析的步驟如下,您可以使用這些步驟立即或稍後在有更多資料可用時執行自己的進一步探索:
- 下載、開啟並連接兩個 CDC 表( 2014-2019和2020-2022年)。 將資料子集為「發生管轄區 ==」美國」。選擇最後五行,然後按一下「行」>「隱藏和排除」。 我排除了最後五行,並根據原始資料的初始圖形產生器顯示選擇 2022 年 10 月 1 日作為截止日期。 始終繪製您的數據!
- 選擇2020-2022 年的行,然後選擇“行”>“行選擇”>“列中的名稱選擇”,以建立一個名為Val20 的新變量,其值2014-2019 年(未選定)為0 ,2020-2022 年(選定)值為1。 透過右鍵點選列最左側面板中該變數旁的紅色直方圖,將該變數的分析類型變更為連續。 Val20 用作 XGBoost 中的驗證列,以在模型擬合期間支援 2020-2022 年。
- 數值變數 MMWR Week 已在表中,並且是我們的第一個功能。 要設計第二個功能,請選擇惡性腫瘤 (C00-C97) 列,這是主要的癌症反應。在表中,右鍵點選該變數 > 新公式列 > 行 > 滯後倍數。 選擇 156 作為開始值和結束值,然後按一下「確定」。 這將建立一個新列,它是 3 年滯後變數。 我們使用 3 年滯後,以便用 2014-2019 年的觀測值完全覆蓋 2020-2022 年的預測範圍,沒有任何洩漏。
- 安裝XGBoost 插件。點選加載項 > XGBoost > XGBoost。 將惡性腫瘤 (C00-C97) 指定為 Y 反應,將 MMWR 週和新的 3 年滯後特徵指定為 X,將 Val20 指定為驗證。 按一下“確定”,選取“自動調諧”,然後按一下“執行”。 結果應類似以下內容。

- 在 XGBoost 輸出視窗中,按一下模型 1 旁邊的紅色三角形,然後按一下儲存預測。 這會將所有行的預測儲存到 JMP 表中。 2020-2022 年的數據是預測,因為我們在訓練期間提供了這些數據。 請注意,右上圖也顯示,觀測值超過 2020-2022 年的預測,大多數點位於 45 度參考線上方即可證明這一點。
- 在表中,選擇惡性腫瘤 (C00-C97) 和新的預測列。 右鍵 > 新公式列 > 合併 > 差值。 這將建立一個新的殘差列。 選擇並右鍵點選該新列 > 新公式列 > 行 > 累積和。
- 在圖形產生器中,將「週結束日期」拖曳到 X 上,並將先前建立的變數拖曳到 Y 上,以建立先前顯示的顯示。
隨附包含所有資料(步驟 1-3)以及嵌入式 XGBoost 和圖形產生器腳本(步驟 4-7)的 JMP 表。 請隨時就此處的主題與我聯繫。