過去数年間、Covid-19 ワクチンの世界的な影響の中でも、予測モデリングの分析手法が大幅に進歩しました。勾配ブースティング ツリーとディープ ニューラル ネットワークは、時系列予測の最先端の方法として登場しました。 最近のことを振り返ることができます特別な問題の国際予測ジャーナル、含む紙David Lander と私による M5 Uncertainty コンペティションの優勝ソリューションについて。 このノートでは、 JMP Pro の XGBoost アドインCovid-19ワクチンの安全性をめぐる論争の中心にある米国疾病管理センター(CDC)からの現在のデータセットに関する基本的な時系列予測について。
3 つの長いブログ投稿のシリーズで、倫理的懐疑論者(TES) は、2021 年初頭に Covid-19 ワクチンが展開されて以来、過剰ながんやその他の死亡率が大幅に増加していることについて警鐘を鳴らしています。 彼は CDC から公開されているデータを使用しており、主なグラフの 1 つが次のとおりです。

反論では、ジェフリー・モリス(JM) はデータを再分析し、そのシグナルは 2022 年 3 月 12 日まで説得力がないと結論付けています。 彼の 2 つのグラフは次のとおりです。

JM は次のように書いています。
彼の主張を評価するための鍵は、もちろん、2022 年のデータがより成熟し、夏までにより完全なデータが得られるのを確認することです。 2021 年春のどん底からのがんによる死亡の増加が 2022 年を通して続く場合、これは彼の仮説をより支持するものとなるが、2022 年初頭に始まったと思われる減少が続く場合、これは本質的により高い過剰の主張を弱めるだろう. 2021年初頭に導入された何らかの要因によって引き起こされたがんによる死亡。
現在、2022 年夏のデータを JMP Pro で分析して、現在の状況を確認しています。 データは、以下をカバーする 2 つの .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 との比較を容易にするために、2 つの数値特徴のみを使用する単純なアプローチを使用します: 年の週と 156 週のラグ値です。 より洗練された機能は確かに可能ですが、これらの 2 つはかなり良い仕事をしているように見え、このような問題に対する XGBoost の能力の最初の良い例を提供します. 結果はグラフ ビルダーで以下に表示されます。

上部のパネルには、生データが青で、XGBoost 予測が赤で表示されます。 単純な XGBoost 予測は「目玉」テストに合格しますが、より慎重なモデリングによって改善される可能性が非常に高くなります。 中央のパネルには適合からの残差があり、2020 年以降の結果は、各週のがんによる過剰死亡の推定値と見なすことができます。 観測されたデータは、2021 年半ば以降のほとんどの週で予測を上回っています。 下のパネルには残差の累積合計があり、最終的な 15,000 という数字は、2022 年 10 月 1 日の合計超過死亡数のおおよその推定値です。 この分析から得られた最初の結論は、2021 年半ば以降の過剰な過剰ながんによる死亡という TES の主張を支持するものであり、ワクチンが因果関係を果たしている可能性があることを示唆しています。
超過死亡数の推定は複雑なトピックであり、前述の分析は、決定的なものというよりも説明的な単純な出発点になるように設計されています. のCDCとイギリスOHIDより深いページがあり、オンラインには多数の分析と論争があります。 たとえば、 JMとマシュー・クロフォード地域のシンプソンのパラドックスを示すいくつかの驚くべき保険データについて、撤回された紙コストフらによる、および挑発的な記事によるノーマン・フェントンと同僚とスティーブ・カーシュ英国からのデータについて。 冬季にどのようなデータや議論がもたらされるのか興味深いところですが、JMP Pro のような信頼できるツールを使用して効率的かつ直接的にデータを分析することができます。
JMP Pro で XGBoost 予測分析を再現する手順は次のとおりです。これを使用して、今すぐ、または後でより多くのデータが利用可能になったときに、独自のさらなる探索を実行できます。
- 2 つの CDC テーブルをダウンロードして開き、連結します ( 2014-2019と2020-2022 )。 データを発生地域 == 「米国」にサブセット化します。最後の 5 行を選択し、[行] > [非表示にして除外] をクリックします。 最後の 5 行を除外し、生データの最初のグラフ ビルダー表示に基づいて、2022 年 10 月 1 日をカットオフ日として選択しました。 常にデータをプロットしてください!
- 2020 年から 2022 年の行を選択し、[行] > [行の選択] > [列の名前の選択] を選択して、2014 年から 2019 年 (選択されていない) の場合は 0、2020 年から 2022 年 (選択されている場合) の場合は 1 の値を持つ、Val20 という名前の新しい変数を作成します。 [列] の左端のパネルで、横にある赤いヒストグラムを右クリックして、この変数の [分析タイプ] を [連続] に変更します。 Val20 は、XGBoost の検証列として使用され、モデル フィッティング中に 2020 年から 2022 年まで保持されます。
- 数値変数 MMWR Week は既にテーブルにあり、最初の機能です。 2 番目の機能を設計するには、がんの原発反応である [悪性新生物 (C00-C97)] 列を選択します。テーブルで、この変数を右クリックし、[新しい数式列] > [行] > [ラグ倍数] を選択します。 開始値と終了値の両方として 156 を選択し、[OK] をクリックします。 これにより、3 年のラグ変数である新しい列が作成されます。 2020 年から 2022 年の予測範囲を 2014 年から 2019 年の観測値で漏れなく完全にカバーするために、3 年のラグを使用します。
- インストールXGBoost アドイン.[アドイン] > [XGBoost] > [XGBoost] をクリックします。 悪性新生物 (C00-C97) を Y 反応、MMWR 週と新しい 3 年ラグ機能を X、Val20 を検証として指定します。 [OK] をクリックし、[自動調整] にチェックを入れてから [実行] をクリックします。 結果は次のようになります。

- XGBoost 出力ウィンドウで、モデル 1 の横にある赤い三角形をクリックし、[予測を保存] をクリックします。 これにより、すべての行の予測が JMP テーブルに保存されます。 2020 年から 2022 年のものは、トレーニング中にそのデータを提供したための予測です。 右上のプロットは、観測値が 2020 ~ 2022 年の予測を上回っていることも示していることに注意してください。これは、45 度の基準線の上にあるポイントの大部分によって証明されています。
- 表で、悪性新生物 (C00-C97) と新しい予測列の両方を選択します。 右クリック > 新しい数式列 > 結合 > 差。 これにより、残差の新しい列が作成されます。 この新しい列を選択して右クリックし、[新しい数式列] > [行] > [累積合計] を選択します。
- グラフ ビルダーで、Week Ending Date を X にドラッグし、以前に作成した変数を Y にドラッグして、前に示した表示を作成します。
すべてのデータ (手順 1 ~ 3) と、埋め込まれた XGBoost および Graph Builder スクリプト (手順 4 ~ 7) を含む JMP テーブルが添付されています。 こちらのトピックについてお気軽にお問い合わせください。