AKJPプロンプト

Mathematical.jp BU/repo



感染率による感染者数増加の比較


感染率の違いによるの比較(作成中)

人口と感染症の数理モデルとしてのSIRモデルにて、感染率の違いによる感染者数の増減をグラフ化してどのようになるかをR Studioを使用して比較してみましょう。

感染率の違いによる感染者数の増減比較

感染率の違いによる感染者数の増減をグラフ化してどのよになるかを比較してみましょう。

感染率を0.9と0.4にした場合の比較で今回は変数S、I、Rをそれぞれ簡単にしてRを0とします。

感染率90%の場合

次のように入力していきます。パッケージのodeをインストールしていない場合はインストールしておいてください。

sir2021_90 <- 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)
                                )
             )
    }

R=0としてSはS = 0.999、Iは I = 0.001として値を代入していきます。

y_init <- c(S = 0.999, I = 0.001, R = 0)

感染率として入力していきます。

out2021_90 <- ode(y = y_init, times = 1:50, func = sir2021_90, parms = c(lambda = 0.9, gamma = 0.1))
write.csv(out2021_90, "out2021_90.csv")
out2021_90_csv <- read.csv("out2021_90.csv",header=TRUE,sep=",")
out2021_90_data <- read.csv(file = "out2021_90.csv", header = TRUE, sep = ",")
out2021_90_data_1 <- as.data.frame(out2021_90_data)

Withを使ってSIRそれぞれを描画するために以下のように入力していきます。

with(out2021_90_data_1, {
plot(time, S, type = "l", col = "blue", xlab = "経過日数", ylab = "人口")
lines(time, I, col = "red")
lines(time, R, col = "green")
})
legend("right", c("感染人口", "感染者", "回復者"), col = c("blue", "red", "green"), lty = 1, bty = "n")

感染率40%の場合

sir2021_40 <- 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.999, I = 0.001, R = 0)
out2021_40 <- ode(y = y_init, times = 1:50, func = sir2021_40, parms = c(lambda = 0.4, gamma = 0.1))

PAGE TOP