AKJPプロンプト

Mathematical.jp BU/repo



RstudioでSIRモデル①


ケルマックマッケンドリック微分方程式

ケルマックマッケンドリック微分方程式(Kellogg-McKendrick differential equation)とは、人口動態や疫学において使われる微分方程式であり、この微分方程式は特定の条件下における人口動態をモデル化するために使用されるものになります。

以下のような3つの微分方程式よりなります。

上記常微分方程式におけるそれぞれのパラメーター変数の意味は次のようになります。

罹患していない個体が感染症に罹患し、感染性の人口へ遷移する率

感染性の個体が感受性人口へ戻る率
感染性の個体が除外された集団へと戻る率

上記式において免疫を獲得しないで回復する率と置いた場合は以下のようになります。

この上記式におけるそれぞれの集団が感染症に対して「感受性(Susceptible)」、「感染している(Infected)」、「回復(Recovered)」の3つの状態に分類されます。

感染症にかかるリスクがある集団
現在感染している集団
回復して再び感染するリスクがない集団

この変数における常微分方程式を、ケルマックマッケンドリックのS-I-Rモデルと呼ぶらしいです。

また人口をとすれば次のような関係式が成り立ちます。

この微分方程式をRのパッケージのdeSolveを使って解いていきます。

RstudioによるSIRモデルの考察

一連の常微分方程式をRで解析していくためにはRのパッケージになるdeSolveを実装します。

deSolveをインストールしていない場合はinstall.package(deSolve)でインストールし、インストールが終わったらlibraryで読み込みして以下のように入力します。

sir20201215 <- function(t, y, parameters){
     with(
         as.list(c(parameters, y)),
         list(c
              (S = -lambda * S * I,
                  I = lambda * S * I - gamma * I,
                  R = lambda * I)
         )
     )
 }

次に以下のように入力します。
ちなみに代入している値は適当に考え出した数値(架空)なものなので本気にしないでください。

y_init <- c(S = 0.998537432, I = 0.000213768, R = 0.001248782)

deSolveをインストールしてライブラリ読み込みを行うと“ode”というのが使えるようになります。
以下のように入力してsir20201215のデータを今度はout20201215に入力します。

out20201215 <- ode(y = y_init, time = 1 : 120, func = sir20201215, parms = c(lambda = 0.995, gamma = 0.841305007)) 

以下のように入力して結果を表示させます。

View(out20201215)

サマリーを表示させます。

summary(out20201215)

csvファイルの作成

write.csv(out20201215, "out20201215.csv")

作成されたcsvファイルをout20201215_dataへ格納します。

out20201215_data <- read.csv(file = "out20201215.csv", header = TRUE, sep = ",")
pairs(out20201215_data)
out20201215のデータの可視化

最後に以下のように入力して得られたS,I,Rのデータをグラフ化します。

 plot(out20201215)

PAGE TOP