感染率の違いによるの比較
人口と感染症の数理モデルとしての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))
write.csv(out2021_40, "out2021_40.csv")
out2021_40_csv <- read.csv("out2021_40.csv",header=TRUE,sep=",")
out2021_40_data <- read.csv(file = "out2021_40.csv", header = TRUE, sep = ",")
out2021_40_data_1 <- as.data.frame(out2021_40_data)
with(out2021_40_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")
2つの感染者数推移比較
感染率40%の場合の感染者数の推移をグラフ化します。
with(out2021_40_data_1, plot(time, I, pch = 19, col = "red", ylim = c(0, 1)))
90%の場合に比べると山の形がなだらかで分散が大きいように見えます。
実際に上記のグラフと感染率90%のグラフとを比較してみましょう。
with(out2021_50_data_1, plot(time, I, pch = 19, col = "red", ylim = c(0, 1))) with(out2021_90_data_1, lines(time, I, col = "red"))
次のように出力されます。
感染力を比較的抑えることができると上のプロット図のように一日当たりの感染者数を抑えられるようになります。
感染力抑止によって感染者流向のピークを下げさせて感染者数の増加の速さを抑制し感染拡大を抑止することができるということがわかります。
-
Python描画
続きを読む
-
Python実行環境の構築
続きを読む
-
Rで重回帰分析-大気汚染②
続きを読む
-
2024年11月運用概況
続きを読む
-
2024年NISA運用概況
続きを読む
-
NISA運用概況
続きを読む