Aplicaremos el calculo del R0 no a los rangos de series de tiempo sino a dos momentos, a dos dias. Demostraremos que el resultado es idéntico al de si hiciéramos el cálculo sobre rangos de tiempo.
library(knitr)
library(kableExtra)
library(janitor)
library(dplyr)
library(readxl)
library(xlsx)
# la siguiente linea impide el despliegue de advertencias en forma local:
options(warn = -1)
library(tidyverse)
library(gghighlight)
library(magrittr)
library(readr)
library(ape)
library(ggdendro)
library(rmarkdown)
library(ggplot2)
library(gganimate)
library(lubridate)
library(plotly)
theme_set(theme_bw())
covid19 <-
read_xlsx("C:/Users/usuario/Desktop/GitHub-trabajo/Algoritmos_R_y_Python/R0/R0_R/salida.xlsx")
head(covid19)
## # A tibble: 6 x 26
## Region `Codigo region` Comuna `Codigo comuna` Poblacion Fecha Acumulado Nuevos
## <chr> <dbl> <chr> <dbl> <dbl> <chr> <dbl> <dbl>
## 1 Arica~ 15 Arica 15101 247552 2020~ 6 6
## 2 Arica~ 15 Arica 15101 247552 2020~ 6 0
## 3 Arica~ 15 Arica 15101 247552 2020~ 12 6
## 4 Arica~ 15 Arica 15101 247552 2020~ 41 29
## 5 Arica~ 15 Arica 15101 247552 2020~ 63 22
## 6 Arica~ 15 Arica 15101 247552 2020~ 87 24
## # ... with 18 more variables: Fallecido <dbl>, `Nuevos Fallecidos` <dbl>,
## # Activo <dbl>, `Nuevos Activo` <dbl>, Recuperados <dbl>, `Nuevos
## # Recuperados` <dbl>, `% Fallecido` <dbl>, `% Activo` <dbl>, `%
## # Recuperados` <dbl>, `% Nuevo Casos` <dbl>, `% Nuevos Fallecido` <dbl>, `%
## # Nuevos Activo` <dbl>, `% Nuevos Recuperados` <dbl>, `Casos/1MM hab` <dbl>,
## # `Fallecidos/1MM hab` <dbl>, `Activos/1MM hab` <dbl>, `Recuperados/1MM
## # hab` <dbl>, r0 <dbl>
covid19 <- covid19 %>% filter(Comuna == 'Punta Arenas')
covid19 <- subset(covid19, Comuna != "Chillán")
covid19 <- subset(covid19, Fecha> "2020-05-22")
#covid19 <- subset(covid19, Fecha > "43934")
# covid19 <- covid19[5,]
# covid19
R0_v <- c()
comuna_v <- c()
codigo_comuna_v <- c()
a2 <- 0
s2 <- 0
s_v2 <- c()
y_bueno2 <- c()
R0_v2 <- c()
comuna_v2 <- c()
codigo_comuna_v2 <- c()
a <- 0
s <- 0
s_v <- c()
y_bueno <- c()
Fecha <- as.Date(covid19$Fecha, origin = "1899-12-30")
ux <- unique(covid19$"Codigo comuna")
for(t in ux)
{
# susceptibles.por.dia2 <- 0
if (t != "No Informado")
{
comuna_en_cuestion = covid19[covid19$"Codigo comuna" == t, ]
longitud = nrow(comuna_en_cuestion)
comuna <- comuna_en_cuestion$Comuna
codigo_comuna <- comuna_en_cuestion$"Codigo comuna"
# dia <- comuna_en_cuestion$"Día"
fecha <- comuna_en_cuestion$Fecha
if (nrow(comuna_en_cuestion) != 0 && (comuna_en_cuestion$"Poblacion" != 0))
{
population = as.numeric(comuna_en_cuestion$"Poblacion")
infectados.por.dia <<- cumsum(as.numeric(comuna_en_cuestion$"Nuevos"))
fallecidos.por.dia <<- cumsum(as.numeric(comuna_en_cuestion$"Nuevos Fallecidos"))
infectados.por.dia2 = as.numeric(infectados.por.dia + fallecidos.por.dia)
recuperados.por.dia = cumsum(as.numeric(comuna_en_cuestion$"Nuevos Recuperados"))
# susceptibles.por.dia debe ir acumulando
susceptibles.por.dia = population - infectados.por.dia2 - recuperados.por.dia
# Creamos la tabla SIR:
tabla.comuna =
data.frame(
unique(comuna_en_cuestion$Fecha),
susceptibles.por.dia,
infectados.por.dia2,
# infec.acum,
recuperados.por.dia,
population
)
names(tabla.comuna) =
c("Fecha",
"Susceptibles",
"Infectados",
# "Infectados acumulados",
"Recuperados",
"Poblacion")
x = tabla.comuna$Recuperados
# se generan singularidades
y = population * log(tabla.comuna$Susceptibles)
}
}
print(tabla.comuna)
# # susceptibles.por.dia debe ir acumulando la resta de infectados
# for (t in 1:nrow(comuna_en_cuestion))
# {
# s <<- s + tabla.comuna$Infectados[t] + tabla.comuna$Recuperados[t]
# s_v[t] <- tabla.comuna$Poblacion - s
# y_bueno[t] = population * log(s_v[t])
# }
#
# dataf = data.frame(s_v, tabla.comuna$Infectados, y_bueno, tabla.comuna$Recuperados)
# print(dataf)
m <- seq(2, longitud)
for (i in m)
{
xx <- tabla.comuna$Recuperados[1:i]
# xx <- tabla.comuna$Recuperados[i-1:i]
yy <- y[1:i]
# yy <- y[i-1:i]
if(!is.null(yy)){
estimacion.R0 = -summary(lm(yy ~ xx))$coefficients[2]
R0_v[i] <- estimacion.R0
comuna_v <- comuna
codigo_comuna_v <- codigo_comuna
fecha_v <- fecha
# dia_v <- dia
}
}
for (i in m)
{
#xx <- tabla.comuna$Recuperados[1:i]
xxx <- tabla.comuna$Recuperados[i-1:i]
#yy <- y[1:i]
yyy <- y[i-1:i]
if(!is.null(yyy)){
estimacion.R02 = -summary(lm(yyy ~ xxx))$coefficients[2]
R0_v2[i] <- estimacion.R02
comuna_v2 <- comuna
codigo_comuna_v2 <- codigo_comuna
fecha_v2 <- fecha
# dia_v <- dia
}
}
eee <- data.frame(comuna_v, R0_v , fecha_v)
write.table(
eee,
'R0.csv',
col.names = F,
append = T,
sep = ","
)
eee2 <- data.frame(comuna_v2, R0_v2 , fecha_v)
write.table(
eee2,
'R02.csv',
col.names = F,
append = T,
sep = ","
)
R0_v <- c()
comuna_v <- c()
codigo_comuna_v <- c()
a <- 0
s <- 0
s_v <- c()
y <- c()
R0_v2 <- c()
comuna_v2 <- c()
codigo_comuna_v2 <- c()
a2 <- 0
s2 <- 0
s_v2 <- c()
y2 <- c()
}
## Fecha Susceptibles Infectados Recuperados Poblacion
## 1 2020-05-25 141939 23 22 141984
## 2 2020-05-29 141879 54 51 141984
## 3 2020-06-01 141844 64 76 141984
## 4 2020-06-05 141800 79 105 141984
## 5 2020-06-08 141769 94 121 141984
## 6 2020-06-12 141736 129 119 141984
## 7 2020-06-15 141647 207 130 141984
## 8 2020-06-19 141549 274 161 141984
## 9 2020-06-23 141464 328 192 141984
## 10 2020-06-28 141315 381 288 141984
## 11 2020-07-01 141267 404 313 141984
## 12 2020-07-05 141182 432 370 141984
## 13 2020-07-10 141088 479 417 141984
## 14 2020-07-13 141037 512 435 141984
## 15 2020-07-17 140987 546 451 141984
## 16 2020-07-20 140937 568 479 141984
## 17 2020-07-24 140870 589 525 141984
## 18 2020-07-27 140820 613 551 141984
## 19 2020-07-31 140671 716 597 141984
## 20 2020-08-03 140583 784 617 141984
## 21 2020-08-07 140404 906 674 141984
## 22 2020-08-10 140209 1037 738 141984
## 23 2020-08-14 139999 1159 826 141984
## 24 2020-08-17 139785 1287 912 141984
## 25 2020-08-21 139400 1530 1054 141984
## 26 2020-08-24 138981 1838 1165 141984
## 27 2020-08-28 138424 2188 1372 141984
## 28 2020-08-31 137952 2507 1525 141984
head(eee, 50)
## comuna_v R0_v fecha_v
## 1 Punta Arenas NA 2020-05-25
## 2 Punta Arenas 2.070059 2020-05-29
## 3 Punta Arenas 1.768603 2020-06-01
## 4 Punta Arenas 1.653190 2020-06-05
## 5 Punta Arenas 1.664298 2020-06-08
## 6 Punta Arenas 1.834052 2020-06-12
## 7 Punta Arenas 2.218345 2020-06-15
## 8 Punta Arenas 2.627003 2020-06-19
## 9 Punta Arenas 2.853279 2020-06-23
## 10 Punta Arenas 2.571856 2020-06-28
## 11 Punta Arenas 2.467455 2020-07-01
## 12 Punta Arenas 2.333386 2020-07-05
## 13 Punta Arenas 2.253917 2020-07-10
## 14 Punta Arenas 2.225834 2020-07-13
## 15 Punta Arenas 2.221018 2020-07-17
## 16 Punta Arenas 2.210058 2020-07-20
## 17 Punta Arenas 2.181527 2020-07-24
## 18 Punta Arenas 2.158974 2020-07-27
## 19 Punta Arenas 2.167281 2020-07-31
## 20 Punta Arenas 2.192280 2020-08-03
## 21 Punta Arenas 2.234368 2020-08-07
## 22 Punta Arenas 2.287342 2020-08-10
## 23 Punta Arenas 2.332252 2020-08-14
## 24 Punta Arenas 2.370421 2020-08-17
## 25 Punta Arenas 2.416511 2020-08-21
## 26 Punta Arenas 2.492524 2020-08-24
## 27 Punta Arenas 2.560274 2020-08-28
## 28 Punta Arenas 2.623609 2020-08-31
head(eee2, 50)
## comuna_v2 R0_v2 fecha_v
## 1 Punta Arenas NA 2020-05-25
## 2 Punta Arenas NaN 2020-05-29
## 3 Punta Arenas 2.070059 2020-06-01
## 4 Punta Arenas 1.768603 2020-06-05
## 5 Punta Arenas 1.653190 2020-06-08
## 6 Punta Arenas 1.664298 2020-06-12
## 7 Punta Arenas 1.834052 2020-06-15
## 8 Punta Arenas 2.218345 2020-06-19
## 9 Punta Arenas 2.627003 2020-06-23
## 10 Punta Arenas 2.853279 2020-06-28
## 11 Punta Arenas 2.571856 2020-07-01
## 12 Punta Arenas 2.467455 2020-07-05
## 13 Punta Arenas 2.333386 2020-07-10
## 14 Punta Arenas 2.253917 2020-07-13
## 15 Punta Arenas 2.225834 2020-07-17
## 16 Punta Arenas 2.221018 2020-07-20
## 17 Punta Arenas 2.210058 2020-07-24
## 18 Punta Arenas 2.181527 2020-07-27
## 19 Punta Arenas 2.158974 2020-07-31
## 20 Punta Arenas 2.167281 2020-08-03
## 21 Punta Arenas 2.192280 2020-08-07
## 22 Punta Arenas 2.234368 2020-08-10
## 23 Punta Arenas 2.287342 2020-08-14
## 24 Punta Arenas 2.332252 2020-08-17
## 25 Punta Arenas 2.370421 2020-08-21
## 26 Punta Arenas 2.416511 2020-08-24
## 27 Punta Arenas 2.492524 2020-08-28
## 28 Punta Arenas 2.560274 2020-08-31
Y y X de la regresion lineal
p <- ggplot(eee, aes(x=fecha_v, y=R0_v)) + geom_point(aes(y = R0_v), colour = "red")
p
o <- ggplot(eee2, aes(x=fecha_v, y=R0_v2)) + geom_point(aes(y = R0_v2), colour = "blue")
o
#income.graph <- income.graph + geom_smooth(method="loess", col="red", size = 0.5)
# income.graph