MASのモデル
感染モデル
公開日:2020/4/21
はじめに
2020年4月現在、新型コロナウイルス感染症の拡大により日本でも緊急事態宣言が発令され、外出自粛・テレワークなどの試みにより感染拡大を抑える取り組みがなされています。
この状況をよりよく理解すべく、感染症の拡大をシンプルな形で表現したartisocのシミュレーションモデルを作成しました。
なおこのモデルは現実を単純化して表現したものであり、新型コロナウイルスの感染状況を予測するものではまったくないことにご注意ください。
このモデルを通して、感染症の広がり方に対する理解を深めていただけますと幸いです。また、余力のある方はぜひモデルを発展させて自分なりの分析を加えてみてください。
モデルの概要
このモデルはこちらで公開・解説している流行伝播モデルを下敷きとしています。また、こちらのWashington Postの記事とKevin Simler氏のブログ記事を大いに参考にしていますので、こちらも合わせてご覧ください。
モデル内の人々は以下の4つの感染状態のうちのどれかにあります。
- S(Suspeptible):まだ感染しておらず、感染の可能性のある状態の人
- E(Exposed):自覚症状はないが感染しており、他者に感染させる能力を持つ人
- I(Infected):感染してかつ発症(自覚症状あり)しており、他者に感染させる能力を持つ人
- R(Removed):病気から回復して免疫を保持した人、あるいは死亡した人
S→E→I→Rの順に遷移していくことになるため、このモデルは「SEIRモデル」と呼ばれます。(他のパターンの感染モデルについては流行伝播モデルを参照してください)
人々は空間内にランダムに配置され、各ステップごとに決められた行動範囲内の人に接触します。自覚症状なく感染している(E)とき、接触したうち未感染の人(S)を一定確率で感染(E)させます。感染した人は潜伏期間後に発症します(I)。発症後は入院状態となり、他者との接触を避けた状態となります。発症後は基本的に一定期間すると回復しますが、発症者の一部は重症者となり、重症者は一定確率に従って死亡します(R)。
また病院には受入人数の限界があり、一定人数以上は入院することができません。入院できなかった重症者の死亡率は入院患者の死亡率より高く設定されています。
初期状態のパラメータでモデルを実行したのが下の動画です。最初はほぼ全員が未感染(緑色)で、数人のみ発症(赤色)しています。シミュレーションを開始すると、自覚症状なし感染(黄土色)の人があっという間に増えていきます。最終的にはほぼ全員が発症(赤色)したのち、免疫を持ちます(青色)。一部は死亡(黒)してしまいます。
右上のグラフは累積の感染者数で、S字カーブを描くように増加していきます。グラフがこの形状になる理由については、こちらの解説が参考になります。
右中央のグラフはシミュレーションの各時点における感染者数の推移です。紫色の直線が病院の受け入れ人数で、ピーク時には発症者数(赤色)が病院の受け入れ人数を上回ってしまっていることが分かります。
右下のグラフはシミュレーションの各時点ににおける入院者数や重症者数を示しており、感染ピーク時には病院の受け入れ人数が限界に達し、入院できない重症者が一定数出ていることが分かります。
モデルの実行にはartisoc または artisoc player(無償)が必要になります。
モデルのパラメータ①:行動範囲
ここからはモデルのパラメータを変化させて、感染の広がり方がどう変わるかを観察しましょう。
行動範囲に関するモデルのパラメータとして「行動範囲(グループ1)」「行動範囲(グループ2)」「グループ1の割合」を設定することができます。初期状態では以下のようになっています。
- 行動範囲(グループ1)= 1
- 行動範囲(グループ2)= 3
- グループ1の割合 = 0.5
グループ1のほうが行動範囲が狭くなっています。1つの解釈としては、グループ1が外出自粛あるいはテレワークなどを実施しているグループであり、それが5割存在すると考えることができます。
そこで、グループ1の割合を0.5から0.8に上げてみましょう。政府の要請などにより、外出自粛の割合を増やすイメージです。すると、感染の広がりが局所的な範囲に抑えられることが分かります。行動範囲を狭めることが、直接的に感染の広がりを抑えることに繋がることが分かります。
モデルのパラメータ②:感染確率
次に、モデルの感染確率を操作しましょう。これは接触した人に感染させる確率を表すパラメータです。
グループ1の割合を初期状態の0.5に戻し、感染確率を初期状態の0.3から0.1に下げます。これは、手洗いやマスク、社会的距離をとることなどにより、人から人に感染するリスクを減らした状態と解釈することができます。この状態で実行しましょう。
このパラメータ条件では試行ごとに結果はかなり異なります。感染が局所的な範囲に抑えられることもありますが、全体に広がってしまうこともあります。行動範囲の広い人がそれなりの割合で存在するため、感染が一度広がりを見せるとそのまま全体に広がってしまう傾向があります。
しかしながら、全体に広がってしまったときも、その広がる速度はかなり緩やかになっていることが分かります。上の動画では感染が全体に広がっていますが、それまでにおよそ80ステップかかっています。初期条件での実行ではおよそ40ステップでしたから、感染拡大の速度はおよそ半分です。その結果、感染者数がピーク時でも病院の受け入れ人数を超えることがなくなり、死亡者数が低く抑えられていることが分かります。このことから、たとえ感染の広がりを完全に止めることができなくとも、広がり方の速度を抑えることに意味があることが分かります。これがいわゆる「感染者数カーブの平坦化」にあたります。
モデルのパラメータ③:重症者のみ入院させるかどうか
最後に、入院に関するパラメータを変化させましょう。これまでの設定では、発症者は全員入院しており、その結果として入院できない重症患者が出ていました。
「重症者のみ入院」をONにすると、発症者のうち重症者のみを入院させ、そうでない人は自宅やホテル等で自己隔離をすることになります。最近は軽症の感染者向けにビジネスホテル等を開放する動きが出てきており、その施策を表現しているものと解釈できます。
感染確率を初期状態の0.3に戻したうえで、「重症者のみ入院」をONにして実行します。すると、当然ながら感染の広がり方は最初と変わりませんが、重症者は全員入院できていることが分かります。その結果、死亡者数がかなり抑えられています。
もちろん、重症者の切り分けなど簡単ではないでしょうが、限られた医療リソースを有効に利用することが重要であることが分かります。
おわりに
冒頭でも記述したように、このシミュレーションはあくまで現実を単純化したものであり、多くの要素を無視しています。現実には人々はランダムに散らばっているわけではありませんし、移動の範囲やその際の接触人数には大きな個人差があります。感染確率は個別の接触状況にも大きく左右され、正確に推定するのは困難です。このモデルでは医療リソースを単純に病院の受け入れ人数として一定値で表現していますが、医療リソースには多くの要素が絡みます。ここでは感染から回復した人は免疫を得ることになっていますが、新型コロナウイルスに関しては回復後に再び陽性と診断される事例も報告されています。
現実に近い精緻なモデルを作ることは簡単ではなく、感染の広がり方を正確に予測することは誰にもできません。ただ、ある程度シンプルなモデルでも、感染の広がりという現象そのものを理解し、行動の指針とするために役立てることはできます。このモデルによって感染現象への理解が深まれば幸いです。意欲のある方はぜひ自分なりの分析を加えてみてください。