過去幾年,即使在 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 年初引入的某些因素引發的癌症死亡。
我們現在有了 2022 年夏季的數據,可以在 JMP Pro 中進行分析,看看我們的立場。 數據在兩個 .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 進行預測的關鍵是設計適當的基於時間的特徵,以實現對未來的普遍性。 根據數據和問題的結構,許多特徵是可能的;看看我們的IJF紙有關這方面的一些細節。 為了便於與 TES 和 JM 進行比較,我使用了一種只有兩個數字特徵的簡單方法:一年中的第幾周和 156 週的滯後值。 更複雜的功能當然是可能的,儘管這兩個功能似乎做得相當不錯,並且初步說明了 XGBoost 解決此類問題的能力。 結果顯示在圖形生成器中:

頂部面板以藍色顯示原始數據,以紅色顯示 XGBoost 預測。 簡單的 XGBoost 預測通過了“眼球”測試,儘管它們很可能通過更仔細的建模得到改進。 中間面板具有擬合的殘差,2020 年以後的結果可以被視為每週超額癌症死亡的估計值。 我們看到觀察到的數據超過了 2021 年中期過去的大多數週的預測。 底部面板具有殘差的累積總和,最終數字 15,000 是對 2022 年 10 月 1 日超額死亡總數的近似估計。 該分析的初步結論支持 TES 的說法,即從 2021 年中期開始,癌症死亡人數過多,這表明疫苗可能起到了因果作用。
估計超額死亡人數是一個複雜的話題,前面的分析旨在作為一個直接的起點,比起決定性的來說更具有說明性。 這CDC和英國OHID有更深入的頁面,網上有無數的分析和爭論。 例如,請參閱之間的分歧JM和馬修·克勞福德一些令人驚訝的保險數據顯示出區域性的辛普森悖論,收回的紙由 Kostoff 等人撰寫,以及由諾曼·芬頓及其同事和史蒂夫基爾希來自英國的數據。 看看冬季月份帶來的數據和辯論會很有趣,幸運的是,我們有一個可靠的工具,如 JMP Pro,可以自己高效、直接地分析數據。
在 JMP Pro 中重現 XGBoost 預測分析的步驟如下,您現在可以使用它來執行自己的進一步探索,也可以在以後有更多數據可用時使用它:
- 下載、打開並連接兩個 CDC 表 ( 2014-2019和2020-2022 ). 將數據子集到 Jurisdiction of Occurrence == “United States”。選擇最後五行,然後單擊行 > 隱藏和排除。 我排除了最後五行,並根據原始數據的初始 Graph Builder 顯示選擇 2022 年 10 月 1 日作為截止日期。 始終繪製您的數據!
- 選擇 2020-2022 年的行,然後選擇“行”>“行選擇”>“列中的名稱選擇”以創建一個名為 Val20 的新變量,該變量的值 0 表示 2014-2019 年(未選中),1 表示 2020-2022 年(選中)。 通過右鍵單擊列最左側面板中它旁邊的紅色直方圖,將此變量的分析類型更改為連續。 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 指定為驗證。 點擊 OK,勾選 Autotune,然後 Go。 結果應類似於以下內容。

- 在 XGBoost 輸出窗口中,點擊模型 1 旁邊的紅色三角形,然後點擊保存預測。 這會將所有行的預測保存到 JMP 表中。 2020-2022 年是預測,因為我們在訓練期間保留了該數據。 請注意,右上方的圖表還顯示,2020-2022 年的觀測值超過了預測值,大多數點位於 45 度參考線上方就證明了這一點。
- 在表中,選擇惡性腫瘤 (C00-C97) 和新的預測列。 右鍵單擊 > 新建公式列 > 合併 > 差異。 這將創建一個新的殘差列。 選擇並右鍵單擊此新列 > 新建公式列 > 行 > 累積總和。
- 在 Graph Builder 中,將 Week Ending Date 拖到 X 上,將之前創建的變量拖到 Y 上,以創建之前顯示的顯示。
附上包含所有數據(步驟 1-3)和嵌入式 XGBoost 和 Graph Builder 腳本(步驟 4-7)的 JMP 表。 請隨時就此處的主題與我聯繫。