library(data.table)
library(tidyverse)
## -- Attaching packages --------------------------------------- tidyverse 1.3.1 --
## v ggplot2 3.3.3     v purrr   0.3.4
## v tibble  3.1.1     v dplyr   1.0.5
## v tidyr   1.1.3     v stringr 1.4.0
## v readr   1.4.0     v forcats 0.5.1
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::between()   masks data.table::between()
## x dplyr::filter()    masks stats::filter()
## x dplyr::first()     masks data.table::first()
## x dplyr::lag()       masks stats::lag()
## x dplyr::last()      masks data.table::last()
## x purrr::transpose() masks data.table::transpose()
library(leaflet)
library(sp)
library(broom)
library(janitor) 
## 
## Attaching package: 'janitor'
## The following objects are masked from 'package:stats':
## 
##     chisq.test, fisher.test
library(rgbif) 
library(sf) 
## Linking to GEOS 3.9.0, GDAL 3.2.1, PROJ 7.2.1
library(chilemapas) 
## Registered S3 method overwritten by 'geojsonlint':
##   method         from 
##   print.location dplyr
library(knitr)
library("ggplot2")
library("plotly")
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
library("RColorBrewer")

rm(list=ls())

##Ordenar ambos dataframe

casosxregion= fread('https://raw.githubusercontent.com/MinCiencia/Datos-COVID19/master/output/producto3/CasosTotalesCumulativo.csv')

pcrxregion= fread("https://raw.githubusercontent.com/MinCiencia/Datos-COVID19/master/output/producto7/PCR.csv")

colnames(casosxregion) <- as.character(casosxregion[1,])
casosxregion <- casosxregion[-1,]

casosxregion = casosxregion[!Region%like%"Desconocido",]
pcrxregion = pcrxregion[!Region%like%"Desconocido",]

fechastest=names(casosxregion)
fechastest = fechastest [6:41]

fechaspos=names(pcrxregion)
fechaspos = fechaspos [6:41]

casosxregion = melt(data = casosxregion,id.vars = c("Region"),measure.vars = fechastest ,variable.name = "fecha")

pcrxregion = melt(data = pcrxregion,id.vars = c("Region","Poblacion","Codigo region"),measure.vars = fechaspos ,variable.name = "fecha")

pcrxregion=mutate_all(pcrxregion, ~replace(., is.na(.), 0))
## Warning in `[<-.factor`(`*tmp*`, list, value = 0): invalid factor level, NA
## generated

##sacar el porcentaje de pcr realizados por region

pcrxregion_s = pcrxregion[,.(suma_testeo=sum(value)), by=.(`Region`,Poblacion,`Codigo region`)]

pcrxregion_p=pcrxregion_s[, porcentaje_testeo:=((suma_testeo/Poblacion)), by=.(`Region`)]

pcrxregion_p[, `Codigo region` := ifelse(`Codigo region` < 10 , paste0("0",pcrxregion_p$`Codigo region`), pcrxregion_p$`Codigo region`)]

##Mapa de porcentajes de test realizados en relación a la cantidad de habitantes

generar_regiones= generar_regiones(mapa = chilemapas::mapa_comunas)

mapatest=merge(generar_regiones,pcrxregion_p,by.x='codigo_region', by.y='Codigo region')
mapatest=as.data.table(mapatest)
mapatest=mutate_all(mapatest, ~replace(., is.na(.), 0))
mapatest=st_sf(mapatest)

bins=seq(0,1,0.02)

paleta = colorBin('Spectral', domain = mapatest$porcentaje_testeo, bins = bins)

labels = sprintf(
  "<strong>%s</strong><br/>%g Porc. Testeo",
  mapatest$Region, mapatest$porcentaje_testeo
) %>% lapply(htmltools::HTML)

leaflet(mapatest)%>% 
  addProviderTiles(provider = providers$OpenStreetMap.Mapnik)%>%
  addPolygons(color = ~paleta(porcentaje_testeo),
              weight = 1, 
              fillOpacity = 0.8,
              label = labels)%>%
  addLegend(pal = paleta, values = ~bins, opacity = 1,position = "bottomright",title ="Porc. testeo")
## Warning: sf layer has inconsistent datum (+proj=longlat +ellps=GRS80 +no_defs).
## Need '+proj=longlat +datum=WGS84'
## Warning in RColorBrewer::brewer.pal(max(3, n), palette): n too large, allowed maximum for palette Spectral is 11
## Returning the palette you asked for with that many colors

## Warning in RColorBrewer::brewer.pal(max(3, n), palette): n too large, allowed maximum for palette Spectral is 11
## Returning the palette you asked for with that many colors

## Warning in RColorBrewer::brewer.pal(max(3, n), palette): n too large, allowed maximum for palette Spectral is 11
## Returning the palette you asked for with that many colors

#Gráfico de porcentajes de test realizados en relación a la cantidad de habitantes

pcrxregion_p[, `Codigo region` := ifelse(`Codigo region` < 10 , paste0("0",pcrxregion_p$`Codigo region`), pcrxregion_p$`Codigo region`)]

Graphic_PCR<- c("Arica y Parinacota","Tarapacá","Antofagasta", "Atacama","Coquimbo","ValparaÃso","Metropolitana","O’️Higgins","Maule","Ñuble","BiobÃo","AraucanÃa","Los RÃos","Los Lagos","Aysé️n","Magallanes")

Graphic_PCR_data <- pcrxregion_p[Region %in% Graphic_PCR]

ggplot(Graphic_PCR_data,aes(x=Region,y=porcentaje_testeo, color=Region)) + geom_bar(stat = "identity", position="dodge", fill="purple") +
    labs(x="Region", y="% testeo", title = "Porcentaje de PCR realizado", subtitle = "Por región", caption = "Fuente:Github/MinCiencia/Datos-COVID19" ) +
  scale_fill_discrete(name="Region") +
  theme(axis.text.x = element_text(angle=90, vjust=0.5)) + scale_fill_manual(values = c("#2ECC71", "#A569BD", "#F1948A", "#117A65"))
## Scale for 'fill' is already present. Adding another scale for 'fill', which
## will replace the existing scale.

#Gráfico de porcentajes de casos en relación a la cantidad de habitantes

casosxregion0= fread('https://raw.githubusercontent.com/MinCiencia/Datos-COVID19/master/output/producto3/CasosTotalesCumulativo.csv')

pcrxregion0= fread("https://raw.githubusercontent.com/MinCiencia/Datos-COVID19/master/output/producto7/PCR.csv")

colnames(casosxregion0) <- as.character(casosxregion0[1,])
casosxregion0 <- casosxregion0[-1,]

interesante=pcrxregion0[, 1:3] 

casostotales=merge(x=interesante, y=casosxregion0, by="Region")

casostotales = casostotales[!Region%like%"Desconocido",]

fechastest=names(casostotales)
fechastest = fechastest [6:41]

casostotales = melt(data = casostotales,id.vars = c("Region","Poblacion","Codigo region" ),measure.vars = fechastest ,variable.name = "fecha")

casostotales=mutate_all(casostotales, ~replace(., is.na(.), 0))
## Warning in `[<-.factor`(`*tmp*`, list, value = 0): invalid factor level, NA
## generated
casostotales=as.data.table(casostotales)

value=casostotales[,value]
value_n= as.numeric(value)


#suma y porcentaje

casostotales_p = casostotales[,.(suma_testeo=sum(value_n)), by=.(Region, `Codigo region`, Poblacion)]

casostotales_p=casostotales_p[, porcentaje_testeo:=((suma_testeo/Poblacion)), by=.(`Region`)]

casostotales_p[, `Codigo region` := ifelse(`Codigo region` < 10 , paste0("0",casostotales_p$`Codigo region`), casostotales_p$`Codigo region`)]


Graphic_casos<- c("Arica y Parinacota","Tarapacá","Antofagasta", "Atacama","Coquimbo","ValparaÃso","Metropolitana","O’️Higgins","Maule","Ñuble","BiobÃo","AraucanÃa","Los RÃos","Los Lagos","Aysé️n","Magallanes")

Graphic_casos_data <- casostotales_p[Region %in% Graphic_casos]

ggplot(Graphic_casos_data,aes(x=Region,y=porcentaje_testeo, color=Region)) + geom_bar(stat = "identity", position="dodge", fill="orange") +
    labs(x="Region", y="% casos", title = "Porcentaje de casos", subtitle = "Por región", caption = "Fuente:Github/MinCiencia/Datos-COVID19" ) +
  scale_fill_discrete(name="Region") +
  theme(axis.text.x = element_text(angle=90, vjust=0.5)) + scale_fill_brewer(palette = "Blues")
## Scale for 'fill' is already present. Adding another scale for 'fill', which
## will replace the existing scale.

#Conclusión ###En esta tarea realizamos un análisis entre el porcentaje de PCR (tests) realizados en cada región en comparación a la cantidad de casos confirmados en cada región. Para esto en primer lugar realizamos el mapa de los porcentajes de PCR tomados por región. Es importante aclarar, que tuvimos que realizar una serie de pasos intermedios para trabajar la base de datos. Esto es, pasar PCR totales realizados a PCR según la población. Matemáticamente esto es PCR/población respecto a la región. Esto lo hicimos para tener una métrica que nos permita comparar entre regiones (para así poder analizar la cantidad de test en relación al tamaño de la población de la región). De esta forma estamos aislando el componente de la población, para evaluar la cantidad de PCR por habitante en cada región (un buen ejemplo es que no es lo mismo comparar el PIB de los países, que el PIB per cápita de los países).). #Posteriormente realizamos un gráfico en donde se pueden visualizar estos resultados. #La segunda bases de datos que consideramos interesante para buscar una correlación fue la de los casos totales por región. Muchas veces en la opinión publica se mide la gravedad de la situación de cada región según la cantidad de casos, pero no se evalúa esto en base a la cantidad de PCR tomados en cada región. Es lógico pensar que una región tendrá más casos confirmados si tiene más PCR tomados por habitante. Por esto hicimos otro grafico que representa la cantidad de casos confirmados por habitante de cada región. En este caso volvimos a hacer el paso intermedio que es dividir la cantidad de casos por la población para cada región y así tener una métrica comparativa (un buen ejemplo es que no es lo mismo comparar el PIB de los países, que el PIB per cápita de los países). #Finalmente nos dimos cuenta de que no hay una correlación visible en los gráficos, esto nos hace pensar que la cantidad de casos depende de muchos factores que simplemente la cantidad de PCR. Lo cual de cierto modo trae una mayor confianza en los datos, ya que la correlación no es necesariamente notoria.
#Posteriormente seria interesante realizar una regresión para evaluar efectivamente este fenómeno.