SIRモデルの理論解説

1. 常微分方程式によるSIRモデル(数値解法)

常微分方程式

以下の常微分方程式について、4次のルンゲクッタ法を用いた数値解析を行います:

dS(t)dt=βS(t)I(t)\frac{dS(t)}{dt} = -\beta S(t) I(t)
dI(t)dt=βS(t)I(t)γI(t)\frac{dI(t)}{dt} = \beta S(t) I(t) - \gamma I(t)
dR(t)dt=γI(t)\frac{dR(t)}{dt} = \gamma I(t)

パラメータと変数の定義

1. 人口(N):総人口(例:10,000人)

2. 常微分方程式モデルの感染率係数(β\beta):

β=(接触者数)×(感染率)N\beta = \frac{(\text{接触者数}) \times (\text{感染率})}{N}

※接触者数、感染率は1日1人あたり

3. 回復率(γ\gamma):

γ=1回復までの日数\gamma = \frac{1}{\text{回復までの日数}}

4. 基本再生産数(R0R_0):

R0=S(0)βγR_0 = \frac{S(0) \beta}{\gamma}

※ S(0)は初期感受性者数(= N - 初期感染者数)

4次ルンゲクッタ法

常微分方程式を数値的に解く手法。時刻 t から t+dt への変化を以下の式で計算:

k1=f(t,y)k_1 = f(t, y)
k2=f(t+dt2,y+k12)k_2 = f(t + \frac{dt}{2}, y + \frac{k_1}{2})
k3=f(t+dt2,y+k22)k_3 = f(t + \frac{dt}{2}, y + \frac{k_2}{2})
k4=f(t+dt,y+k3)k_4 = f(t + dt, y + k_3)
ynew=y+k1+2k2+2k3+k46dty_{new} = y + \frac{k_1 + 2k_2 + 2k_3 + k_4}{6} \cdot dt

2. 個体ベースSIRモデル

シミュレーション手法

各個体(エージェント)を独立して追跡し、空間的な接触を明示的にモデル化します:

1. 空間配置(2次元平面):各エージェントはキャンバス上を自由に移動

2. 接触判定(円形範囲):感染者から接触半径(r)内のエージェントが接触対象

3. 感染過程:接触したエージェントが確率的に感染

4. 回復過程:感染者が一定期間後に回復(免疫獲得)

パラメータ定義

1. 接触時の感染率パラメータ(βagent\beta_{\text{agent}}):

接触が発生した場合の単位時間あたりの感染率パラメータ

2. 接触半径(r):

感染者との接触を判定する距離(ピクセル単位)

目的:接触半径を持たない常微分方程式モデルと個体ベースモデルの結果をフィッティングさせるため、接触半径を 40px に設定し、画面サイズに応じてスケーリングする

動的計算式:r=0.039×Ar = 0.039 \times \sqrt{A}

(A = キャンバス面積 [px²])

係数 0.039 の導出:

基準画面サイズ(1,049,760 px²)で、常微分方程式モデルとフィッティングするための接触半径を 40px と設定

k=r基準A基準=4010497600.039k = \frac{r_{\text{基準}}}{\sqrt{A_{\text{基準}}}} = \frac{40}{\sqrt{1049760}} \approx 0.039

この係数により、どの画面サイズでも適切な接触半径が自動計算され、両モデルの整合性が保たれます

3. 回復率(γ\gamma):

常微分方程式モデルと同じ定義(単位時間あたりの回復率)

確率的感染・回復モデル(ポアソン過程)

微小時間 dt における感染・回復の確率:

感染確率:

P(感染)=1eβagentdtP(\text{感染}) = 1 - e^{-\beta_{\text{agent}} \cdot dt}

回復確率:

P(回復)=1eγdtP(\text{回復}) = 1 - e^{-\gamma \cdot dt}

常微分方程式モデルへの換算

個体ベースモデルのパラメータを常微分方程式モデルに換算:

接触者数の推定(2次元空間):

接触者数=NA×πr2\text{接触者数} = \frac{N}{A} \times \pi r^2

※ N: 人口、A: キャンバス面積、r: 接触半径

💡 3次元空間の場合:

3次元空間では、接触範囲が球体となるため:

接触者数3D=NV×43πr3\text{接触者数}_{3D} = \frac{N}{V} \times \frac{4}{3}\pi r^3

V: 空間体積、接触範囲が r² → r³ に変化

本シミュレーションは2次元平面を想定(画面上での可視化のため)

常微分方程式モデルの β への換算:

β=接触者数N×βagent\beta = \frac{\text{接触者数}}{N} \times \beta_{\text{agent}}

回復率 γ(換算不要):

γ=γagent\gamma = \gamma_{\text{agent}}

※ 回復率は両モデルで同じ定義のため、換算の必要なし

基本再生産数(R0R_0):

R0=S(0)×βγR_0 = \frac{S(0) \times \beta}{\gamma}

3. 両者の接続と関係性

βパラメータの関係

2つのモデルにおけるβの定義は異なりますが、以下の関係で結ばれています:

常微分方程式モデル:

β=接触者数×感染率N\beta = \frac{\text{接触者数} \times \text{感染率}}{N}

人口全体に対する感染率係数(集団レベル)

個体ベースモデル:

βagent\beta_{\text{agent}}

接触時の感染率パラメータ(個体レベル)

換算式:

β=接触者数N×βagent\beta = \frac{\text{接触者数}}{N} \times \beta_{\text{agent}}

接触者数 = 人口密度 × 接触範囲面積 = NA×πr2\frac{N}{A} \times \pi r^2

γパラメータの一貫性

回復率γは両モデルで同じ定義を共有します:

γ=1回復までの日数\gamma = \frac{1}{\text{回復までの日数}}

両モデルとも単位時間あたりの回復率として扱われます

基本再生産数(R₀)の整合性

適切にパラメータを換算すれば、両モデルで同じR₀が得られます:

R0=S(0)×βγR_0 = \frac{S(0) \times \beta}{\gamma}

S(0) について:

S(0) = 初期感受性者数(シミュレーション開始時点で感染していない人数)

S(0)=NI(0)S(0) = N - I(0)

N: 総人口、I(0): 初期感染者数

例:人口2,000人、初期感染者2人の場合 → S(0) = 1,998人

この式は両モデルで同じ値を返します(パラメータが正しく換算されている場合)

参考文献