SIRモデルとロジスティック方程式の類似点 どれだけ似ていて何が違うのか
日本では新規感染者数も収まりつつある新型コロナウイルス感染症(COVID-19)。累積感染者数のグラフはいよいよS字曲線になってきた。
前の記事でも触れたが、ウイルスという生物的なふるまいをする物体の増殖曲線でS字といえば、大学レベルの生物学を学んだことがあれば真っ先に思い出すのが「ロジスティック方程式」(ロジスティック曲線)だ。
……ロジスティック方程式
( , )
はある時点における個体数だ。ロジスティック方程式は分かりやすい特徴を持っている。第一に、環境収容力()と呼ばれる定数で個体数の上限が決まること。第二に、増殖速度が緩やかになり始める変曲点がであること。つまり理論的には、変曲点が分かれば環境収容力が大体どの辺なのか推測できる。
しかし、実際の生物の増殖曲線がロジスティック方程式に従うのは限定的といわれている。理由はいろいろあるが、ざっくり言えば、現実に増殖速度に影響を及ぼす要因はもっと複雑だからだ。
そして、ウイルス由来のものを含めた感染症の増殖曲線については、ロジスティック方程式ではなくSIRモデルといわれる感染症数理モデルをベースとするのが一般的だ。
SIRモデルはロジスティック方程式のように1つの微分方程式では表さず、3つの式で表される。
(, , , )
は感受性人口(感染症にかかりうる個体数)、は感染者数(感染症にかかっていて、他人に感染させうる個体数)、は回復数(感染から回復、あるいは隔離され、もう感染しない個体数)を表す。ロジスティック方程式のと同じように、どれもある時点における個体数だ。注目している全人口の各人がいずれかに属するので、全て足し合わせるとになるのはすぐ分かる。
ロジスティック方程式もSIRモデルも微分方程式という形を取っており、個体数と増殖速度の関係式ともいえる。つまり、個体数と時間の関係式ではないため、S字曲線自体を表す式にはなっていない。
ロジスティック方程式ではこれを解き、個体数と時間の関係式に直すことでS字曲線を表す関数を得られるのだが、SIRモデルでそれができるかというと自明ではない。少し調べた感じだと、SIRモデルは厳密には解けず、近似的に描かれることが一般的なようだった。
しかし、SIRモデルの近似解による曲線を見ると、やはりどうもロジスティック曲線と似ているように見える。この2つのモデルはどこまで似ていて、どこが違うのだろうか。私はこれが気になった。
この記事では、私が調べた限りでの、SIRモデルとロジスティック方程式の類似点や違いを、数式をベースに紹介したい。これを調べ始めたのは4月下旬のことで、GWの時間のほとんどを数式やグラフの比較に費やしてしまった。正直今も考えている最中ではあるのだが、キリがないので一つの結論が見えたところで記事としてまとめることにした。
ただ、調べたと言っても文献にはほとんど当たっていない。あくまで、ずっと自分で式とグラフをいじくり回していただけだ。もしかしたらこの内容は感染症の教科書には載っていることなのかもしれない(少なくとも車輪の再発明ではあるだろう)が、自分の一連の思考をまとめるという意味の記事だと思ってほしい。
レベル感としては学部の数理生物学のレポート1本分くらいだろうか。一応、説明や式変形はできるだけ丁寧に行うつもりだ。理系の高校生くらいなら分かってくれると思う。
長い記事になるので、端的な結論だけまず述べる。
「SIRモデルのある係数を0と置いたとき、
SIRモデルはロジスティック方程式と一致する」
分かる人はもう分かったかもしれない。分からない人はもやもやしながら記事を読み進んですっきりしてほしい。
では、まず解説の順番を鳥瞰しよう。
1. ロジスティック方程式の解法を知る
1-1. 微分方程式からロジスティック方程式の特徴を得る
1-2. 式を正規化する
1-3. 微分方程式を解き、解(関数)を得る
2. SIRモデルにロジスティック方程式の手法がどこまで使えるのか検討する
2-0. 表計算ソフトで近似曲線を書いてみる
2-1. 微分方程式を整理してSとIの関係式を得る
2-2. 変数変換と正規化でロジスティック方程式と比べやすくする
2-3. SIRモデルは本当に解けないのか?
2-4. 微分方程式の形でロジスティック方程式と比較してみて分かること
ロジスティック方程式の解法や特徴の調べ方を知り、それらの手法をSIRモデルに適用できるのかどうか検討していく。このような順番で説明していこう。ロジスティック方程式を熟知している人は前半は読み飛ばして構わないが、ちょっと不安、もしくはよく知らないという人は目を通しておいた方が全体を通して分かりやすくなると思う。
1. ロジスティック方程式の解法を知る
1-1. 微分方程式からロジスティック方程式の特徴を得る
まず、ロジスティック方程式を初めより少し簡単な形で表す。
ただし、
( , )
いきなりこの式を理解せよと言われても面食らうので、少し整理してみよう。
は個体数で、時間の関数だ。左辺はの1階導関数、つまり増殖曲線の傾き、つまり個体数の増殖速度を表している(進んだ距離を時間で割ると速度になるのと同じ考え方)。
右辺は個体数にある係数を掛けている。つまり、個体数の増殖速度は、その時点の個体数にを掛けたものという意味だ。
は本来正負を問わない実数でよいが、ここでは想像を簡単にするために正の実数としておく。
さて、この式の形は微分方程式と呼ばれる。元の関数とそれを微分したものの関係式をうまく解けば、元の関数の形を得られる。例えば、元の関数 とそれを微分したものが等しいなら、元の関数がという指数関数になることは、高校の微分積分を知っていればすぐに分かるだろう。
もしこのが定数なら、この微分方程式は単純な指数関数になる。しかしそうは問屋が卸さない。
ロジスティック方程式では、「個体数の増加に比例して、増殖率が減る」という考え方を導入する。つまり、横軸に個体数、縦軸に増殖率を取ったグラフを描いたとき、直線で増殖率が減っていき、個体数の上限であるKで増殖率がゼロになるような線を描く方程式が必要だ。
増殖率の初期値をとし、増殖率をとすると、この直線は
となる。(を、をと読み換えれば、親しみのある式の形だと分かるはずだ)
これを整理すると、
となるので、先程の式に代入すると、最初に提示した
が得られる。
つまり、の具体的なが分からなくても、この微分方程式を解釈するだけでで増殖速度はゼロになる(厳密には極限を取るとだが)ことは見えてくる。
初めは指数関数的に個体数が増え、最終的にはKに漸近するのだから、どこかに変曲点があるはずだ。どこにあるのだろうか。
関数の具体的な形が分かっていれば、2階導関数まで求めて増減表を書いてみてもいいが(学生時代にこの方法で求めた記憶がある)、今の説明ではまだ具体的な関数は求めていない。
ロジスティック方程式の場合、変曲点は「増殖速度(曲線の傾き)が最大の場所」と考えられる。そしてこの微分方程式は傾きに関する関数とも取れる。ということはこの微分方程式を横軸に個体数、縦軸に傾きを取るグラフ上に当てはめて、最大値を求められるならそのときの個体数が変曲点の座標になりそうだ。
右辺を式変形してみると、
という2次関数であることが分かるから、で傾きは最大となる。これで冒頭で説明したロジスティック方程式の特徴が分かった。
1-2. 式を正規化する
さて、もし実際に生物の増殖を調べるなら、という個体数の上限を示す定数があるのはありがたいことだが、ここではの範囲で動く変数をと変数変換することで正規化したい。そうすると解を求めるのが少し楽になるのと、SIRモデルとの比較もしやすくなるからだ。
だから、とおける。両辺をについて微分すると だから、これらを与式に代入すると、
が得られる。最初より少し簡単な式になったような気がする。
1-3. 微分方程式を解き、解(関数)を得る
では、この式を解いていこう。この微分方程式には「変数分離法」と呼ばれる解法を用いる。具体的には、両辺をで割ることで左辺にを集め、両辺をについて積分する。割るに当たっては、なので0割りにはならないことに一応注意しておきたい。
すると、右辺は定数の積分なので
は積分定数
となる。一方の左辺はどうだろう。まず、置換積分の考え方からを消去して、でを積分すると考えられる。
そして、はなんとうまいことに部分分数分解により、 と変形できる。各項に対してそれぞれ積分を考えたらいいので、
という分数関数の積分の公式から、
と積分できる。
もも正なので絶対値は外せる。logはまとめてしまおう。後処理の関係でを分子に持ってくる。さきほど積分した右辺との式は、
両辺にをかけ、指数化すると、
となる。
ここで、は定数なので、簡単のためにとおく。
式を整理すると、以下のようになる。
ここで止めてもいいが、が若干正体不明なので、個体数の初期値とを式に代入して、
を得る。先程の式に戻して、最終的に
という解が得られた。これがS字曲線を表す「ロジスティック曲線」の関数だ。
試しに、スプレッドシートでグラフを書いてみよう。
2.SIRモデルにロジスティック方程式の手法がどこまで使えるのか検討する
ここまでロジスティック方程式の解法を見てきた。ここからが本題だ。
2-0.表計算ソフトで近似曲線を書いてみる
いきなり微分方程式の整理を始めてもいいが、その前にSIRモデルがどんな曲線を描くのか、近似することで確かめてみたい。
だが、微分方程式を解いて曲線の関数を求めるのが難しそうなのにどうやって近似するのか。ここで、微分の定義を振り返ってみよう。
微分して求めた導関数に数を代入したは、における曲線の傾きを表している。
傾きは、の増分をと表すと、だ。つまり、として、と書ける。
このを限りなくに近づけたときに得られるのがにおける傾きであって、この操作こそが微分だった。
がより少し大きい数と考えると、以下のようにも書ける。
では、あえて極限を取らないとどうなるか。例えば、との間で傾きを考えてみると、
となる。ではなく、もっと小さな隙間で考えると、
やを、をと見なすと、微分は数列の漸化式に近似できる。この近似手法はオイラー法ともいわれる。
例えば、という微分方程式に適用すると、
∴ という漸化式が得られる。
数列の2項間漸化式が得られたのだから、あとは初期値のを与えるだけでコンピュータが次々に各項の近似値をはじき出してくれるという寸法だ。SIRモデルの3つの式を漸化式にして、近似的な曲線を書かせたのが以下だ。
現実の感染症で現れるS字の曲線の代表的なものは累積感染者数なので、とを足し合わせた上図の緑の線と考えられる。あとで変数変換するが、上記でもとおいた曲線も書いた。この微分方程式の右辺は、Sの右辺の符号を反転させたものと同じだ。
SIRモデルの式を再掲する。
(, , , )
とを足すと、右辺はとなり、を反転させたものだと分かる。
2-1.微分方程式を整理してSとIの関係式を得る
先ほどとを足してみたが、式をよく見れば分かるようにはを内包している。ということは、との関係が重要そうだ。ここを調べてみたい。
は、以下のように整理できる。
だから、代入すると、
両辺をtについて積分すると、
∴
を得る。
ここで、積分定数をはっきりさせたいので、初期値とを代入する。であることに注意すると、
を得る。
元の式に代入すると、
∴
という、との関係式を得られた。これをに代入すると、
というの微分方程式が得られた。
2-2.変数変換と正規化でロジスティック方程式と比べやすくする
このままについての整理を進めていきたいところでもあるのだが、近似曲線でみたようには逆S字曲線だから、ロジスティック方程式と比べるには上下反転させたい。そしての曲線を上下反転させたのがの曲線だった。なので、, として変数を変換すると、との関係式は、
というとの関係式になる。であること(より、両辺をtで微分すれば得られる)に気を付けながらの微分方程式にこれを代入すると、
∴
を得る。式自体はやや複雑にはなったが、ロジスティック方程式と同じようにとしかない微分方程式を得られた。
ここで、ロジスティック方程式と同様に正規化を行う。とするので、に気を付けながら変換していくが、ここでひとつごまかしを入れる。(これから感染しうる人口数)の初期値は(全人口)とほぼ等しいと考えられるので、としてみる。すると、
∴
となる。この式をロジスティック方程式と比べようという考えだ。
2-3.SIRモデルは本当に解けないのか?
実際に比べる前に、この微分方程式は解けないのか、ということを考えたい。実は、これについては私は検討しきれていない。
ロジスティック方程式と同様に変数分離法で解きたいところなのだが、部分分数分解がうまくいかず、きれいに項を分けられない。
としても、左辺をうまく積分する方法が見つからない……
すると複雑な分数関数の積分になり、計算が困難になる。試しにwolfram alphaにも入れてみたが、有効そうな答えは出てこなかった。
私は微分方程式についてはほとんど知らないため、今はマセマの常微分方程式の本を読んで手がかりを探している。
2-4.微分方程式の形でロジスティック方程式と比較してみて分かること
さて、あらためて正規化したロジスティック方程式とSIRモデルの方程式を並べてみよう。
……ロジスティック方程式
……SIRモデル(累積感染者数)
かなり似ているといえるのではないか。違うのは、SIRモデルにはの項があるということだ。この項には回復率が掛けられている。普通に考えて、感染症患者は回復するかもしくは死亡することで感染者数からは除外されるため、が0になることはないが、もしもになった場合、
の式が残る。すると、ロジスティック方程式とSIRモデルで異なるのは係数(※SIRモデルのではない)とだけだ。
はロジスティック方程式の増加率。はSIRモデルの感染率で、は感染者1人当たりが生み出す新規感染者数を示しているから、やはり増加率だ。
つまり、γ=0のとき、SIRモデルの累積感染者数はロジスティック曲線となるといえる。
それは具体的にどんな感染症なのか? 一度感染すると治ることはなく、死ぬこともなく、ずっと感染者を生み出し続ける、ゾンビのような病気かもしれない。
そんな妄想は置いておいて、でロジスティック方程式と一致するのは実はもっと前の段階でも確かめられる(私は気付かなかったが)。
でとして、との関係を導くとより(Cは積分定数)だから、。積分定数はより。
を元のに代入すれば、
となり、変数変換と正規化を行えば同じ式を導けた。あるいは、について書けば、
で、ロジスティック方程式そのものである。
結論までこんなにショートカットできたのかと思うと脱力する気持ちもあるが、回り道をして答えを知ったからこそ見えてくるものもあるというもの。本記事の導入で結論だけ示したときに「分かる人はもう分かったかもしれない」と書いたのはこれが理由だ。
では、が掛けられているの項はどんな意味を持つのか? の最大値(曲線の変曲点)はどこなのか? これらの疑問については、体力があったら次の記事で紹介したい。