La información ha sido utilizada del repositorio de RAMIKRISPING del paquete “coronavirus” obtenido de la data generada por la Universidad Johns Hopkings.
#install.packages("deSolve")
#install.packages("tidyverse")
library(knitr)
library(deSolve)
library(tidyverse)
library(usethis)
library(devtools)
library(dplyr)
# devtools::install_github("RamiKrispin/coronavirus", force = T)
library(coronavirus)
COVID19 <- data.frame(coronavirus)
c1 <- COVID19 %>%
select (date, type, cases)%>%
group_by (date, type)%>%
summarise (total_cases = sum (cases))
c2 <- c1[which(c1$type=="confirmed" & c1$date != "2020-02-13" ),]
c2$cumtotal_cases <- cumsum(c2$total_cases)
ggplot(data= c2 ,aes(date,cumtotal_cases, colour = type)) + geom_line()
pop <-17000000
Infected <- as.integer(c2$cumtotal_cases)
Dia <- 1:length(Infected)
SIR <- function(time, state, parameters) {
par <- as.list(c(state, parameters))
with(par, {
dS <- -beta/pop * I * S
dI <- beta/pop * I * S - gamma * I
dR <- gamma * I
list(c(dS, dI, dR))
})
}
init <- c (S = pop-Infected [1], I = Infected [1], R = 0)
RSS <- function(parameters) {
names(parameters) <- c("beta", "gamma")
out <- ode(y = init, times = Dia, func = SIR, parms = parameters)
fit <- out[ , 3]
sum((Infected - fit)^2)
}
Opt <- optim(c(0.5, 0.5), RSS, method = "L-BFGS-B", lower = c(0, 0), upper = c(1, 1)) # optimize with some sensible conditions
Opt_par <- setNames(Opt$par, c("beta", "gamma"))
Opt_par
## beta gamma
## 0.2082957 0.1000090
t <- 1:200 # time in days
fit <- data.frame(ode(y = init, times = t, func = SIR, parms = Opt_par))
R0 <- setNames(Opt_par["beta"] / Opt_par["gamma"], "R0")
Height <- fit[fit$I == max(fit$I), "I", drop = FALSE] # height of pandemic
Max_Dead <- max(fit$I) * 0.028 # max deaths with supposed 2% mortality rate
R0
## R0
## 2.08277
Height
## I
## 96 2849348
Max_Dead
## [1] 79781.75