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)
-
Python描画
続きを読む
-
Python実行環境の構築
続きを読む
-
Rで重回帰分析-大気汚染②
続きを読む
-
2024年11月運用概況
続きを読む
-
2024年NISA運用概況
続きを読む
-
NISA運用概況
続きを読む