「K値による予測を使うべきでない理由」へのコメント

##K値による予測を使うべきでない理由
先日、東京海洋大学准教授　勝川俊雄先生が
[K値による予測を使うべきでない理由](http://katukawa.com/?p=6228)
と題して御自身の公式サイトに投稿されました。

内容の要約は以下の通りです。

- K値による COVID-19 感染者数予測は、実際にはゴンペルツ曲線である。
- 世界各国の感染者推移をみるとゴンペルツ曲線に近い挙動を示すこともあるが、当てはまらないことも多い。
- 過去のデータから導いたゴンペルツ曲線が現在始まりつつある第二波にも当てはまるとは限らない。
- 仮に第二波がゴンペルツ曲線に従うとしても、流行初期のノイズの多いデータからピークを推測することはできない。（わずかなパラメータの差は、初期の傾きは重なってもピーク値に大きな違いを生じさせる。）
- ゴンペルツの減衰係数は人間社会の行動変容の影響を受けて変動するはずである。しかしメディアに「何もしなくても、勝手に新規感染者が減少する」という根拠のない楽観論が広がっている。

・・・勝川先生の御指摘は正しいと思います。

私は Qiita を通じて Gompertz 曲線を啓蒙しておりますので本稿でコメントさせて頂きます。
##Gompertz 曲線のおさらい
ゴンペルツ曲線の式は

```math
\ y=ab^{c^x}
```
と表せます。（二重指数関数）

```math
\ y=G(t)　a=G_{max}　b=e^{-\frac{A_0}{k}}　c=e^{-k}　x=t
```
をそれぞれ代入して両辺を対数化すると

```math
\ln{G(t)}=\ln{G_{max}}-\frac{A_0}{k}e^{-kt}
```
となります。*G<sub>max</sub>* は最大値、*A*<sub>0</sub> は観測開始時の対数グラフの傾き、*k* は減衰係数、*t* は時間を表します。
対数化された Gompertz 曲線では傾き *A*<sub>0</sub> が時間の経過とともに *e<sup>-kt</sup>* 倍に減衰します。
##K値
K値は大阪大学教授　中野貴志先生が提唱された指標で、直近1週間の感染者数を累計感染者数で割ったものです。
[K値とは何か？](http://www.rcnp.osaka-u.ac.jp/%7Enakano/What-is-K-value.pdf)
上記のページに K値の発見に至る経緯が示されています。
累計感染者数が指数関数 *N*(*d*) = *N*<sub>0</sub>*e*<sup>*Ad*</sup> の時、対数化したグラフは上向きの直線になるはずです。中国の累計感染者数をみると傾きが徐々に緩やかになっており指数係数が変化していることがわかります。中野先生は適当な間隔の2点間の数の比を取って推移をみることから K値を発見されました。Benjamin Gompertz が200年前に、「死亡による人口減少を対数表示したら傾きが徐々に急峻になった」ことから Gompertz 曲線を発見したのと似ています。
K値理論では *A*(*d*+1) = *kA*(*d*) に従い、日々一定の割合で指数係数 *A* が 0（感染収束）に近づくと仮定されました。これは前述の「対数化された Gompertz 曲線では傾き *A*<sub>0</sub> が時間の経過とともに *e<sup>-kt</sup>* 倍に減衰」と同義です。
東京工業大学教授　秋山泰先生は指数係数が一定減衰仮定を満たす時 [K値の時間関数 K(t) が 1-（ゴンペルツ曲線）で表せる](http://www.bi.cs.titech.ac.jp/COVID-19/The_K_indicator_epidemic_model_follows_the_Gompertz_curve_version1.1.pdf) ことを証明されました。

*G*(*t*) をゴンペルツ関数として

```math
\ G(t)=ab^{e^{-kt}}
```
と表せる時

```math
\ K(t)=1-b^{e^{-kt}}
```
が成り立ちます。（0 < *b* < 1)
ゴンペルツ曲線は最大値と減衰係数 *k* が決まれば曲線の形状が1つに決まります。（*x* 軸方向の平行移動は生じますが）※そのため上式 *K*(*t*) は曲線の形状は正しいですが、*x* 軸方向に若干のずれ（平行移動）が生じています。0 ~ 1の範囲で *b* がどのような値になっても曲線の形状は一定です。
*b* を *e* に置き換えて以下のように一般化することも可能です。（この場合 *e* > 1 なので指数の係数にマイナス "–" をつけます。*K*(0) = 1-1/*e* を通る位置に平行移動しています。）

```math
\ K(t)=1-e^{-e^{-kt}}
```
累計発生数の対数グラフの傾きが増大する場合は

```math
\ K(t)=1-e^{-e^{kt}}
```
となり *K*(*t*) は上向きの曲線になります。（下図赤線参照）
興味深いことに**ゴンペルツ曲線の減衰係数 *k* は *y* 軸切片における *K*(*t*) の傾き *K’*(0)を *-e* 倍したものに等しくなります。**
以下で *K*(*t*) を微分して *K’*(0) を求めます。

```math
\begin{align}
\ K(t)&=1-e^{-e^{-kt}}\\
\ U=-e^{-kt}&,　V=-kt　とすると\\
\ K(t)&=1-e^U\\
\ U&=-e^V\\
\frac{dK}{dt}&=\frac{dK}{dU}\frac{dU}{dV}\frac{dV}{dt}\\
\frac{dK}{dU}&=-e^U\\
\frac{dU}{dV}&=-e^V\\
\frac{dV}{dt}&=-k\\
\frac{dK}{dt}&=-e^U(-e^V)(-k)\\
\ &=-ke^Ue^V\\
\ &=-ke^{-e^{-kt}}e^{-kt}\\
\ K'(0)&=-\frac{k}{e}\\
\therefore k&=-eK'(0)
\end{align}\\
```
下図において、*K*(0) = 1-1/*e* となり、変曲点（最も傾きが急峻な位置）となります。*K'*(0) の傾きが急峻な時は減衰や増大の度合いも急峻になります。
![k_value.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193431/cd460ba1-26fd-7831-8ee7-1624d1bc7553.jpeg)

累計感染者数が指数関数に従う場合は *K*(*t*) は**傾き 0 の定数**となります。
##Gompertz 曲線は未来予測に使えるか？
[ゴンペルツ曲線とは何か？（6）](https://qiita.com/BMJr/items/60858ef7148732b04160)で 2020年4月15日〜5月27日までの米国のデータから

```math
\ F(t) = 2314490 \times 0.2751^{e^{-0.0340t}}
```
という式を導き *G<sub>max</sub>* = 231万4490人 と推測しました。
しかし 2020.7.19 の時点で米国の累計感染者数は 371万1835人で予測を大きく上回っています。[ジョンズ・ホプキンス大学のサイト](https://gisanddata.maps.arcgis.com/apps/opsdashboard/index.html#/bda7594740fd40299423467b48e9ecf6) で対数グラフをみると2段階のゴンペルツ曲線に乗ったあとで傾きが更に増大しているようです。この傾向は日本にも当てはまります。これは指数係数の一定減衰仮定が当てはまらないことを意味します。勝川先生が指摘されるように人間社会の行動変容の影響で減衰の程度が変化するのでしょう。
![COVID_USA_Japan.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193431/3dfd534c-4949-8a62-c8a8-fce5be596d54.jpeg)
##K値の有用性
中野貴志先生が Benjamin Gompertz 級のセレンディピティで発見された K値は、そのまま未来予測に使うには若干問題があるかもしれませんが非常に有用であると思います。
以下は米国のある時期における累計感染者数です。

| day             |累計感染者数         |
|:-----------------:|:-----------------:|
| 2020年3月23日 |      43900 |
| 2020年3月30日  |     162700|
| 2020年4月6日 |   367200|

2020年3月30日の K値は 0.73
2020年4月6日の K値は 0.56
一見、著しい増加に見えますが K値の傾きが負であることから減衰局面にあることがわかります。

| day             |累計感染者数         |
|:-----------------:|:-----------------:|
| 2020年6月13日 |      2075000 |
| 2020年6月20日  |     2255000|
| 2020年6月27日 |   2510000|

2020年6月20日の K値は 0.08
2020年6月27日の K値は 0.10
K値の傾きが正であることから指数関数を上回る増大局面（doubling time の短縮！）と言えます。大勢の人がマスクをせずにデモに参加していた時期と重なるのかもしれません。

Gompertz 曲線では等しい時間間隔の累計感染者数を対数化した値を *A*, *B*, *C* とすると

```math
\ln{G_{max}}=\frac{AC-B^2}{A-2B+C}
```
の関係が成り立ちます。[※ゴンペルツ曲線とは何か？（3）](https://qiita.com/BMJr/items/4e2782e8f1d3c1db6801)
2020年3月23日〜4月6日のデータから計算すると *G<sub>max</sub>* = 139万6598 となります。この時点の減衰係数が維持できていれば、これくらいの累計感染者数で済んだことになります。2020年6月13日〜6月27日のデータでは *G<sub>min</sub>* = 155万4163 を**最小値**として**上方に拡散**する結果になります。

このように K値を使えば直近2週間の累計感染者数から簡単な計算で現在のトレンドを知ることができます。更に *K*(*t*) の傾きを求めるだけでゴンペルツの減衰係数を導くことができます。（*K*(*t*) = 1-1/*e* の時の傾きなら *-e* 倍、*K*(*t*) = 0.5 の時の傾きなら -2.88倍する）また 0 < *K*(*t*) < 1 の範囲に必ず収まることもデータの扱いを容易にします。
##おわりに
K値やゴンペルツ曲線を未来予測に使うには「現在の行動変容の強度が将来も不変である」という条件が必要です。
Gompertz という「神の見えざる手」によって「何もしなくても勝手に新規感染者が減少する」と考えるのは、勝川先生がおっしゃるように「根拠のない楽観論」だと思います。
K値はむしろ、**現在のトレンドを解析して未来の行動変容を促す**のに使えるのではないでしょうか。
発展途上の感染症数理モデルですが多くの人が知恵を絞って、より洗練されたものになればよいと思います。幸い日本は「~~高校で微分方程式を習う~~※」という欧米にはないアドバンテージ（Factor Xの1つ？）があり、この分野で世界をリードできるかもしれません:smiley:
※現在は、高校で微分方程式を習わないそうです・・・。
###補足：日本の第2波にゴンペルツ曲線と SIR モデルを当てはめる（2021.2.11）
日本の第2波に二重指数関数（ゴンペルツ曲線）を当てはめました。
[参考：ゴンペルツ曲線とは何か？（10）](https://qiita.com/BMJr/items/5a3fa10d72d107498604)
行動変容の指標として同時期の渋谷スクランブル交差点の人出[^1]も示します。
![japan2ndShibuyaStreet.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193431/639b34e8-e981-a298-2e8c-9d73c7ad0531.jpeg)

```math
\ y=4349e^{-0.0606t-e^{-0.0606t}}\\
```
にて第2波の始まりから終息まで fit しています。ゴンペルツの減衰係数は 0.0606 と1つの値になります。経過中、渋谷スクランブル交差点の人出に変化がなかったことから行動変容の強度は一定であったと思われます。
指数関数（SIRモデル）を当てはめると下図のようになります。
![japan2ndSIR.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193431/6af5c73d-a07b-205a-0c1c-aa09e1cb1f47.jpeg)
全経過を6つのタイムゾーンに区切って6つの指数係数を使います。時間の経過と共に指数係数が漸減していることがわかります。実効再生産数は指数係数の一次関数であり、平均罹病期間を14日とすると **実効再生産数 = 14 × 指数係数 + 1** で表せます。

|タイムゾーン|　指数係数　|実効再生産数|
|:--------|:-------:|:---------:|
|① 7/3~7/20|0.0837 |2.172|
|② 7/21~7/29|0.0553|1.775|
|③ 7/30~8/4|0.0125 |1.175|
|④ 8/5~8/15|-0.0164|0.771|
|⑤ 8/16~8/26|-0.0379|0.470|
|⑥ 8/27~|-0.0489|0.315|
山の始まりの時点から実効再生産数は減り続けています。
指数関数（SIRモデル）で当てはめることによってタイムゾーン毎の実効再生産数の変化がわかります。

[稲葉 寿：感染症数理モデルとCOVID-19 | 日本医師会 COVID-19有識者会議](https://www.covid19-jma-medical-expert-meeting.jp/topic/3925)
[COVID-19 数理モデル 〜 SIR と Gompertz と K値の関係〜](https://qiita.com/BMJr/items/83c122fa6623d80d4509)
[Excel VBA で SIR モデルを実装する。](https://qiita.com/BMJr/items/fd343ed56d50ef63e552)
[COVID-19 に SIR モデルを当てはめる際の注意点](https://qiita.com/BMJr/items/d4bb22286bf2a6c53acd)
[ゴンペルツ曲線とは何か？（1）](https://qiita.com/BMJr/items/24fca066926d471c651e)
[ゴンペルツ曲線とは何か？（2）](https://qiita.com/BMJr/items/1f9135edfb5e68b4f7da)
[ゴンペルツ曲線とは何か？（3）](https://qiita.com/BMJr/items/4e2782e8f1d3c1db6801)
[ゴンペルツ曲線とは何か？（4）](https://qiita.com/BMJr/items/f1665fcf61fc1e182311)
[ゴンペルツ曲線とは何か？（5）](https://qiita.com/BMJr/items/6e48af3017941589bd74)
[ゴンペルツ曲線とは何か？（6）](https://qiita.com/BMJr/items/60858ef7148732b04160)
[ゴンペルツ曲線とは何か？（7）](https://qiita.com/BMJr/items/854d7ea041ac426c3e79)
[ゴンペルツ曲線とは何か？（8）](https://qiita.com/BMJr/items/acad4ec612086d20ac79)
[ゴンペルツ曲線とは何か？（9）](https://qiita.com/BMJr/items/775ae42bb5e0cc6dc461)
[ゴンペルツ曲線とは何か？（10）](https://qiita.com/BMJr/items/5a3fa10d72d107498604)
[ゴンペルツ曲線とは何か？（11）](https://qiita.com/BMJr/items/2055c27c0cb5596816df)
[ゴンペルツ曲線とは何か？（12）](https://qiita.com/BMJr/items/0cf2f2d2801ef52cda60)
[ゴンペルツ曲線とは何か？（13）](https://qiita.com/BMJr/items/608222a2e39cb01f2f52)
[ゴンペルツ曲線とは何か？（14）](https://qiita.com/BMJr/items/4757e087752500913f1b)

[^1]: [新型コロナウイルス 街の人出は？ 全国18地点グラフ | NHK特設サイト](https://www3.nhk.or.jp/news/special/coronavirus/outflow-data/)