いろいろなことを考察する

西浦氏が github で示している「42万死亡推計」のパラメータの誤り

本エントリには、改訂版があります。
https://sarkov28.hatenablog.com/entry/2024/03/16/092400
通常は改訂版の方をご参照下さい。
改訂版でも「西浦氏が github などで示していた「42万死亡推計」のパラメータには約2%の誤りがある」という主たる論旨に変更はありません。

----------------------------------------------------------------

このエントリは、私が twitter で行ったこちら https://twitter.com/sarkov28/status/1413048029720973312 の連ツイを補うものです。
twitter では長くなるため書かなかった(=こちらだけにある)論点もありますが、重複も多いです。
逆に、twitter のみに書いた論点はないはずです。

私は、手元で42万人死亡推計の数値計算を行っています。
この結果が、西浦氏の数字に一致するようになりました。

一致するようになったのは、西浦氏が示していた計算方法を小さく修正したからです。
この小さな修正は、無理のないものだと考えています。(=「計算結果を合わせるために、無理やり修正した」という側面はないと考えています。)
逆に言うと、西浦氏が示していた計算方法、あるいは計算パラメータは、細部において不正確だったことなります。

以下に私の検討を示します。
なお、難しい数学は出てきません。
四則演算( +-×÷)を行っているだけです。


(1)経緯

西浦氏が、Newsweek 2020-06-09 号(2020-06-02 発売。ネット記事 は 2020-06-11 公開)や こちらの github 資料 で示しているパラメータなどを用いると、西浦氏が 2020-04-15 に発表した「42万人死亡推計」の計算などを手元で行うことができるはずです。

上掲資料によると、西浦氏が使っているのは 世代を3つに分けた SIR モデル です。
この SIR モデルの微分方程式を数値解法で計算することになります。

私は、
「R 言語と deSolve ライブラリを用いた方法」と、
「Julia 言語と DifferentialEquations.jl パッケージを用いた方法」
で計算していましたが、西浦氏の計算結果「42万人」と、手元の結果とに、微妙な差がありました。

計算の差異について こちら を書いたころは、「R 言語と deSolve ライブラリ」を用いていました。 最近は、主に「Julia 言語と DifferentialEquations.jl パッケージ」を使うようになっていて、こちら に事情を書きました。

2つの方法における結果は、かなり一致していました。
この一致は、私の計算がおかしくないことを示唆します。
また、Julia言語と、数値演算のパッケージ DifferentialEquations.jl は、NASA も使っている https://twitter.com/genkuroki/status/1371088742954397699 とのことです。
なぜ西浦氏の数字に一致しないのか、不思議に思っていました。

(2)別冊 Newton に記載された数値

西浦氏の計算結果については、2020-04-15 以降の報道では、「42万人」と示されていました。
ところが、2021-05 発刊の別冊 Newton に、「41.8万人」との記述がありました。
この twitter 連ツイ に書きましたが、この別冊 Newton の主題は、SIR モデルや、理論疫学ではありません。)

以前の数字は、有効数字が2桁(=「42」の2桁)ですが、別冊 Newton の値は、有効数字が3桁(=4.18)です。 この数字と私の結果を比較すると、

計算者 死亡者数(人)
西浦氏 41.8 万人
42.67 万人

であり、差異が、(42.67 / 41.8) - 1.0 = 2.08(%) ありました。
約2%の差というのは、使い物にならないとまでは思いませんが、少し気になる大きさです。

上掲の 2021-05 発刊の別冊 Newton の記事には、以下のような記述がありました。

別冊 Newton の重症者数などの記述:

最終的な重症患者は、
世代(15-64) で 20万1301 人、
世代(65-) で 65万2066 人で、
合計 85万3367 人となる。
重症者の致死率を約 49% と見積もると、
死者は 41万8000 人となる。

ここにおいて、最初の3つの人数は、有効数字が6桁あります。
「49%」は2桁です。
死者数は有効3桁にも見えますが、もっと多いのかも知れません。

(3)世代(0-14) は死亡者数の計算から除外

上記の別冊 Newton の数値には、注意しておくべき事項があります。

この計算は、3世代を対象として行われており、一番年下の世代として、世代(0-14) があります。
ところが(2)で示した記述には、世代(0-14) に関する情報がありません。

2020-03-02 の第05回専門家会議において、西浦氏は、世代(0-14) の重症化率を、ゼロではない値として示しています。(5/7 ページ以降、表1、4、7 など。表6でも、こう なっています。)

重症者がゼロでないのなら、世代(0-14)の重症者数が別冊 Newton に示されていないのは不自然です。

ところが 上掲の github 資料 には、世代(0-14)のIFR(感染者死亡率)が、0 であるとされています。

世代 IFR(感染者死亡率)
c ( 0-14) 0
a (15-64) 0.0015
e (65- ) 0.0100

この github 資料の数値は、専門家会議の 2020-03-19 から 42万人死亡推計の 2020-04-15 まで、変更ありません。(根拠は、西浦氏の共著書「西浦博の挑戦」第3章 9「8割と42万人」の節「「42万人」という被害想定」の中の「すでに3月19日の専門家会議の資料に入っていたわけです」との記述。)

まとめると、世代(0-14)については、

  • (3-1) 2020-03-02 の第05回専門家会議資料では、重症化率は 0 ではない。
  • (3-2) 2020-03-19 時点では、死亡率が 0 だとされている。

ことになります。

もちろん世代(0-14)における「重症者が 0 ではない」と「死亡率が 0」とが、直ちに矛盾する訳ではありません。
例えば「世代(0-14)の重症者死亡率が0」ならば、辻褄は合います。

ところが西浦氏からは、「重症者数に、重症者死亡率の49%を掛け算して、死亡者数を計算した」の旨が繰り返し説明されていて、

  • (3-3) 重症者死亡率は、全世代で共通である。

かのように読めるのです。

(3-1)(3-2)(3-3)の全てを満たすことは出来ません。
これでは計算が行き詰ってしまいます。

私は、以上の事情を総合的に考えた結果、この付近の計算において、西浦氏は明示していないルールを導入しているのだろう、と解釈することにしました。
西浦氏は「世代(0-14)については重症者はいるが、死亡者数の計算からは除外した」のではないでしょうか。

これは死亡者数の計算の方法に関する重要事項ですので、このように推測で判断することではなく、西浦氏からわかりやすく説明されるべきところだと思います。
しかし、すくなくともわかりやすく説明されてはいないと思います。
私はこの点に、不満があります。

以降では、この解釈「世代(0-14) は死亡者数の計算から除外」で計算します。

(4)別冊 Newton の数値を用いた感染者重症化率の計算

さて、(1)で説明した数値解法によって、感染者数(=感染者になったことのある人の数)が計算できます。
そして(2)で述べたように、別冊 Newton には重症者数(=重症者になったことのある人の数)の詳しい数値がありました。
これらを用いると、世代別の感染者重症化率が計算できます。

以下の手順になります。
別冊 Newton の重症者数は、R0=2.5 の場合の数値なので、以下は、R0=2.5 で考えます。

(4a)
数値計算から感染者数、別冊 Newton から重症者数が得られます。

世代 感染者数(人) 重症者数(人)
(15-64) 6.71003E+07 20万1301
(65-) 3.26033E+07 65万2066

(4b)
感染者重症化率(%)は、(重症者数)/(感染者数)×100 で計算できます。

表1 今回改めて計算した感染者重症化率

世代 感染者数(人) 重症者数(人) 感染者重症化率(%)
(15-64) 6.71003E+07 20万1301 0.300000
(65-) 3.26033E+07 65万2066 2.00000


重症者数の有効数字が6桁なので、感染者重症化率も6桁で書いています。
ご覧のように、「妙にキリのいい数字」となっています。

私はこれは、この計算の正しさを示唆していると考えます。
つまり西浦氏は、何らかの理由で感染者重症化率を

世代 感染者重症化率(%)
(15-64) 0.3
(65-) 2.0

としたのではないか、今回の計算は、その数値を6桁の精度で再現したのではないか、という推察です。
また同時に、上の計算で使った感染者数(=私の数値計算の結果)は正しいのではないかという推察にもなります。

(5)別冊 Newton の数値を用いた重症者死亡率の再計算

上の(1)に述べたように、私の「42万死亡推計」の死亡者数は、西浦氏と一致していませんでした。
なので、(4)で計算した感染者重症化率を使って、この死亡者数を計算することにしました。

そのためには、重症者死亡率が必要になります。
重症者死亡率は約49(%)だというのが、2020-04-15 の報道以降での説明です。

これは有効数字が2桁しかなく、いかにも心細いです。
なので私は、重症者死亡率も再計算することにしました。

別冊 Newton には、この為に使えそうな数字があります。(2)に示したものの一部を再掲します。

別冊 Newton の記述:

重症患者は 85万3367 人、
死者は 41万8000 人。

この2つの数字から重症者死亡率を再計算しました。

(重症者死亡率)
= (死者数) / (重症患者数) × 100
= 418000 / 853367 × 100
= 48.9824(%)

有効数字は6桁としました。
2桁とすれば、これまで知られていた「49%」に一致します。

(6)「42万人」の再計算

以上の準備により、目的の数字を再計算できます。

用意したパラメータを再掲すると、以下になります。

表2 今回の「42万人」再計算で使用するパラメータ

パラメータ名
感染者重症化率 世代(15-64) 0.3(%)
感染者重症化率 世代(65-) 2.0(%)
重症者死亡率 48.9824(%)


まず、結果が一致しない、従来の計算を示します。
西浦氏が github 資料 で示していた計算は、事実上、以下になります。

表3 github 資料で西浦氏が示すパラメータを用いた計算と、別冊 Newton の数値との比較(不一致)

世代 感染者数(人) 感染者死亡率(%) 死亡者数(人)
(15-64) 6.71003E+07 0.15 100650
(65-) 3.26033E+07 1.00 326033
合計 426680
別冊Newton の数値 418000

ただし、
(感染者数) は、数値計算から
(感染者死亡率) は、github 資料から
(死亡者数) = (感染者数) × (感染者死亡率) / 100

次に、表2 のパラメータを用いた、今回の再計算を示します。

表4 今回再計算したパラメータを用いた計算と、別冊 Newton の数値との比較(一致)

世代 感染者数(人) 感染者重症化率(%) 重症者数(人) 重症者死亡率(%) 死亡者数(人)
(15-64) 6.71003E+07 0.30 20万1301 48.9824 98602
(65-) 3.26033E+07 2.00 65万2066 48.9824 319398
合計 418000
別冊Newton の数値 418000

ただし、
(感染者数) は、数値計算から、
(感染者重症化率) は、上記(4)から、
(重症者数) = (感染者数) × (感染者重症化率) / 100、
(重症者死亡率) は、上記(5)から、
(死亡者数) = (重症者数) × (重症者死亡率) / 100
です。

合計の死者数は、別冊 Newton の値と、6桁までぴったり一致しました。

つまり私の計算と、西浦氏の計算とは、6桁の精度でぴったりです。

なお(2)の末尾で、「41万8000人」という値の有効桁数の疑問を述べましたが、これを見ると、6桁だったのだと思われます。

(7)ここで行った修正は、西浦氏に由来する数値から得たもの

上に示した計算を、表だけ再掲します。

表3 github 資料で西浦氏が示すパラメータを用いた計算と、別冊 Newton の数値との比較(不一致)

世代 感染者数(人) 感染者死亡率(%) 死亡者数(人)
(15-64) 6.71003E+07 0.15 100650
(65-) 3.26033E+07 1.00 326033
合計 426680
別冊Newton の数値 418000

表4 今回再計算したパラメータを用いた計算と、別冊 Newton の数値との比較(一致)

世代 感染者数(人) 感染者重症化率(%) 重症者数(人) 重症者死亡率(%) 死亡者数(人)
(15-64) 6.71003E+07 0.30 20万1301 48.9824 98602
(65-) 3.26033E+07 2.00 65万2066 48.9824 319398
合計 418000
別冊Newton の数値 418000

この2つの表における、合計の 426680 と 418000 の不一致が問題でした。

私の考察が正しければ、問題の源泉は、表3 github 資料の(感染者死亡率)です。
ここに丸め誤差がある。
以下は、私の考察が正しいと仮定して書きます。

先ほど(5)で計算した(重症者死亡率)は、48.9824(%)でした。これを使うと、
(感染者重症化率) × (重症者死亡率) = (感染者死亡率)
なので、以下の関係があります。

表5 一致したパラメータと不一致のパラメータの比較

世代 (一致)
感染者重症化率(%)
(一致)
重症者死亡率(%)
(一致)
感染者死亡率(%)
(不一致)
感染者死亡率(%)
(15-64) 0.30 48.9824 0.146947 0.15
(65-) 2.00 48.9824 0.979648 1

(一致)のパラメータは、今回再計算したものです。
(不一致)のパラメータは、西浦氏が github で示しているものです。
(一致)と(不一致)で、感染者死亡率が、世代(15-64)でも、世代(65-)でも、2%ほど異なっています。

西浦氏は、github 資料で精度の低いパラメータを示していたことになります。
42万や、41.8万を正しく算出するには、もっと高精度な数値が必要だったのです。

特に、世代(65-)の数値「1%」は、有効数字が1桁しかありません。
これは2桁ですらない。2桁ならば「0.98」になるはずです。

github 資料 の人口は、有効数字8桁で書かれていました。
だから、他のパラメータも、それなりの有効数字で書かれていると思ってしまいます。
そう思い込んではいけなかったのです。
実際には、有効数字1桁の数字があったのですから。

感染者死亡率をもう少し高精度に 0.146947(%)と、0.979648(%)(github 資料は、%表示ではないので、正確には、0.00146947 と 0.00979648)とでも書いてあれば、問題ありませんでした。

私は、不満です。
この論点で、かなり時間を使いましたので。

私の推論が正しければ、西浦氏は、github で情報を開示する際、開示する情報で「42万」がきちんと計算できるのかを「一度も確認していない」ことになります。
確認すれば、結果が違うことはすぐ分かります。
まさか、結果が一致していないのを知った上で公開したのではないでしょう。

この確認の欠落も、私は不満です。
国民の生活を大きく左右する政策に関する情報開示の姿勢として、あってはならないことだと考えます。



西浦氏は、実効再生産数の計算に関して、動画配信で説明しました。

このためかも知れませんが、「西浦氏は全ての情報開示に積極的である」と認識している人がいらっしゃるようです。
私は、そのご認識には異論があります。

たとえば重症者数に関しても、上記の情報が全てではありません。

継時で最大の重症者を計算するには、重症者に関する微分方程式(or 積分方程式)のパラメータが必要ですが、私はこれを見たことはありません。

他にも私が西浦氏に関して疑問に思っていることは多数あり、その一部をここ https://twitter.com/sarkov28/status/1376469711395774465 にぶら下げてあります。



強調しておきますが、上記の考察には私の裁量による修正が含まれています。

私の裁量による修正は
github 資料に示されているパラメータは、感染者数の計算には使うが、死者数の計算には使わない。
死者数の計算は、別冊 Newton 記事の数値から、感染者重症化率と、重症者死亡率を計算し、これらを用いて行う。」
です。

逆にいうと、これだけです。
使った数値は変わりましたが、全て西浦氏が関与している資料から得た値です。

冒頭に「この小さな修正は、無理のないものだと考えています」と書いたのは、この意味です。

この修正が論理的に必然だとする根拠はありません。
しかし、

  • 感染者重症化率がキリのいい数字になった(6桁の精度)(=本エントリ(4))
  • 死亡者数が別冊 Newton の数値に一致した(6桁の精度)(=本エントリ(6))

を考慮すると、現時点では、これが真相だと私は考えています。

(99)修正履歴

  • 2021-07-08
    公開。
  • 2021-07-12
    (3)に(3-1)(3-2)(3-3) を導入し、関連を修正しました。
  • 2024-03-06
    • 修正履歴の体裁を変更し、末尾に記述するようにしました。
    • ブログタイトルを変更しました。
      変更前「手元の42万人死亡推計の数値計算が、西浦氏の数字に一致するようになった事情」
      変更後「西浦氏が github で示している「42万死亡推計」のパラメータには誤りがある」
    • (7)の節タイトルを変更しました。
      変更前「私が修正したのはどこなのか」
      変更後「ここで行った修正は、西浦氏に由来する数値から得たもの」
    • 本文のタイプミスや、細かな表現を修正しました。
  • 2024-03-18
    冒頭に「本エントリには、改訂版がある」旨を加筆。