Presentación Visualizaciones en R

https://rpubs.com/CarolinaMolinare/710103

Paquetes y bases

  1. Instalar los paquetes necesarios para el laboratorio. Esta parte no es necesario hacerla, porque ya están instalados.
install.packages("data.table") ## Paquete para trabajar datos
install.packages("dplyr") ## Paquete para trabajar datos
install.packages("ggplot2") ## Paquete para visualizar
install.packages("plotly") ## Paquete para visualizar de forma interactiva
install.packages("treemap") ## Paquete para hacer visualizaciones de treemap
install.packages("ggalluvial") ## Paquete para hacer visualizaciones de diagrama de flujos
install.packages("lubridate") ## Paquete para trabajar con fechas
install.packages("leaflet") ## Paquete para realizar mapas
  1. Cargar los paquetes necesarios para el laboratorio.
library(data.table)
library(dplyr)
library(ggplot2)
library(plotly)
library(treemap)
library(ggalluvial)
library(leaflet)
library(lubridate)
  1. Cargar bases de datos con las que trabajaremos en el laboratorio.
rm(list=ls()) ## Limpiar el Environment
ive<-fread("DATOS_IVE_2018_2020.csv")
## fread solo sirve para abrir formato .csv y es una función de paquete data.table

Limpieza de datos

  1. Seleccionamos algunas variables.
ive <- ive %>% 
  select(-starts_with("PSI"),-starts_with("ASIST"),-starts_with("DUPLA"),-starts_with("VISITA"))
  1. Cambiar la clase de las variables de character a integer.
class(ive$`edad de la mujer`)
## [1] "character"
ive$`edad de la mujer`<-as.integer(ive$`edad de la mujer`)

class(ive$`edad gestacional concurrencia`)
## [1] "character"
ive$`edad gestacional concurrencia`<-as.integer(ive$`edad gestacional concurrencia`)

class(ive$`mes de concurrencia`)
## [1] "character"
ive$`mes de concurrencia`<-as.integer(ive$`mes de concurrencia`)

class(ive$`Año concurrencia`)
## [1] "integer"
ive$`Año concurrencia`<-as.integer(ive$`Año concurrencia`)
  1. Agregaremos información de las causas de interrupción del embarazo de acuerdo a la siguiente tabla:
causal tipo_causa
Causa 1 Peligro mujer
Causa 2 Inviabilidad fetal
Causa 3 Violación

Sintaxis data.table: DT[i,j,by] i: fila j: columnas by: “según”

ive[causal=="Causal 1",tipo_causa:="Peligro mujer"]
ive[causal=="Causal 2",tipo_causa:="Inviabilidad fetal"]
ive[causal=="Causal 3",tipo_causa:="Violación"]

Paquete ggplot2

  1. Comando para ejecutar la función ggplot.
ggplot()

  1. Crear un sistema de coordenadas.
ggplot(data=ive,aes(x=`edad de la mujer`))

Histograma: Gráfico de distribución

Se categoriza por un rango de valores dentro de la variable numérica

  1. Podemos visualizar la distribución de las edades de las mujeres que interrumpen voluntariamente su embarazo.
ggplot(data=ive,aes(x=`edad de la mujer`)) + geom_histogram()

  1. Dado el gráfico anterior, podemos mejorar la visualización considerando solo el año 2018.
ggplot(data=ive[`Año concurrencia`==2018],aes(x=`edad de la mujer`)) + geom_histogram()

  1. Utilizamos un bindwidth más pequeño.
ggplot(data=ive[`Año concurrencia`==2018],aes(x=`edad de la mujer`)) + geom_histogram(bins=100)

Bar-plot: Gráfico de barras

Mostrar cuántas observaciones tenemos dentro de una variable categórica

  1. Iniciar con algo sencillo: ¿cuántas mujeres tienen FONASA, ISAPRE, étc?.

Para realizar lo anterior, primero renombraremos la variable previsión de salud por prevision.

ive<-rename(ive,prevision=`previsión de salud`)

Agruparemos las categorías que son iguales.

ive[prevision=="SIN PREVISION",prevision:="NINGUNA"]
ive[prevision=="SISTEMA PREVISIONAL DE LAS FFAA",prevision:="CAPREDENA"]
ive[prevision=="Fonasa",prevision:="FONASA"]

Realizaremos el bar-plot.

ggplot(ive,aes(x=prevision)) + geom_bar()

  1. ¿Cuántos casos por causal hay en cada previsión?.
ggplot(ive,aes(x=prevision, fill=tipo_causa)) + geom_bar()

  1. La información anterior se puede presentar de varias formas. El comando position cambia la posición en el gráfico de las barras por la variable dentro del fill, en este caso el tipo_causa.
ggplot(ive,aes(x=prevision, fill=tipo_causa)) + geom_bar(position = "stack")

ggplot(ive,aes(x=prevision, fill=tipo_causa)) + geom_bar(position = "dodge")

ggplot(ive,aes(x=prevision, fill=tipo_causa)) + geom_bar(position = "fill")

  1. Podemos mostrar la misma información anterior, pero para cada año.
ggplot(ive[prevision!="sin informacion"],aes(x=prevision, fill=tipo_causa)) + geom_bar(position = "dodge") + facet_wrap(facets = "`Año concurrencia`")

  1. Agregar etiquetas a los ejes, títulos y subtítulos al gráfico.
ggplot(ive[prevision!="sin informacion"],aes(x=prevision, fill=tipo_causa)) + geom_bar(position = "dodge") +
  facet_wrap(facets = "`Año concurrencia`") +
  labs(x="Previsión", y="Frecuencia", title = "Frecuencia IVE", subtitle = "Por tipo de previsión y causa", caption = "Fuente: Interrupción Voluntaria del Embarazo, MINSAL - Gobierno de Chile" ) +
  scale_fill_discrete(name="Tipo de Causa") +
  theme(axis.text.x = element_text(angle=85, vjust=0.6))

Line-plot: Gráfico de línea

Muestra la tendencia temporal de una variable numérica

  1. Podemos visualizar la cantidad de personas atendidas por IVE para el período 2018-2020 que decidieron interrumpir el embarazo.

Para esto tenemos que calcular la cantidad de casos totales en cada año y mes por causa.

ive1<-ive[`Decisión De la mujer sobre su embarazo`=="INTERRUMPIR EL EMBARAZO",.N,by=.(`Año concurrencia`,`mes de concurrencia`,tipo_causa)]

# .N sirve para contar

Luego creamos la variable fecha

ive1[,fecha:=as.Date(paste0(`Año concurrencia`,"-",`mes de concurrencia`,"-01"))]

Ahora realizamos el gráfico.

ggplot(ive1, aes(x=fecha, y=N, colour=tipo_causa)) + geom_line()

  1. Agregar etiquetas a los ejes, títulos y subtítulos al gráfico.
ggplot(ive1, aes(x=fecha, y=N, colour=tipo_causa)) + geom_line() +
  labs(x="Año", y="Frecuencia", title = "Frecuencia IVE", subtitle = "Por año y causa", caption = "Fuente: Interrupción Voluntaria del Embarazo, MINSAL - Gobierno de Chile" )+
  scale_color_discrete(name="Tipo de Causa")

  1. Ahora podemos ocupar plotly en nuestro gráfico de línea.

Para esto tenemos que crear un objeto con nuestro gráfico anterior.

line<-ggplot(ive1, aes(x=fecha, y=N, colour=tipo_causa)) + geom_line() +
  labs(x="Año", y="Frecuencia", title = "Frecuencia IVE", subtitle = "Por año y causa", caption = "Fuente: Interrupción Voluntaria del Embarazo, MINSAL - Gobierno de Chile" )+
  scale_color_discrete(name="Tipo de Causa")

Aplicamos la función ggplotly.

ggplotly(line)

Scatter-plot: Gráfico de puntos

Muestra el valor de dos variables numéricas o una numérica y otra categórica en un gráfico de dos dimensiones

  1. Podemos ver la relación que existe entre la edad de la mujer y la edad gestacional de concurrencia (semanas de embarazo).
ggplot(ive, aes(`edad gestacional concurrencia`, `edad de la mujer`)) + geom_point()

  1. Podemos ver la misma relación, pero diferenciando por el tipo de causa.
ggplot(ive, aes(`edad de la mujer`,`edad gestacional concurrencia`, color=`Decisión De la mujer sobre su embarazo`)) + geom_point() + facet_wrap(facets = "tipo_causa")

  1. Podemos ver la misma relación, pero diferenciando por el tipo de causa ¿y Año de ocurrencia?.
ggplot(ive, aes(`edad de la mujer`,`edad gestacional concurrencia`, color=`Decisión De la mujer sobre su embarazo`)) + geom_point() + facet_wrap(facets = c("tipo_causa","`Año concurrencia`"))
## Warning: Removed 68 rows containing missing values (geom_point).

Diagrama de flujos

Muestra como se relacionan dos variables categóricas dado un “flujo”

  1. ¿En qué región se atienden las mujeres y de qué región provienen?.

Para responder esta pregunta, necesitamos cargar la base de establecimientos, que contiene la información de los centros de salud.

establecimientos<-fread("Establecimientos.csv")

Unimos los nuevos datos a la base IVE.

ive<-merge(ive,establecimientos,by="establecimiento")

Ahora hay que identificar la cantidad de mujeres que se atienden según su región, la región del establecimiento donde se atienden y el año de concurrencia.

Movimientos<-ive[,.N, by=.(`Región de residencia de la mujer`,idregion,`Año concurrencia`)]

Tenemos lista toda la información para nuestro gráfico.

ggplot(Movimientos, aes( x=`Año concurrencia`, y=N, alluvium =`Región de residencia de la mujer`, fill =`Región de residencia de la mujer`, colour = `Región de residencia de la mujer`)) + 
  geom_alluvium(alpha = .5, decreasing = FALSE) +
  scale_x_continuous(breaks = seq(2018, 2020, 1)) +
  facet_wrap(facets = "idregion")

Treemaps:

  1. Podemos observar de qué región provienen la mayor cantidad de mujeres.
treemap(ive, index="Región de residencia de la mujer", vSize = "id", type="value", title="Cantidad de personas por región")

Visualización espacial: mapas

  1. Podemos ubicar geográficamente los centros de salud.

Para esto es importante que las variables de latitud y longitud sean numéricas

ive$lat<-as.numeric(ive$lat)
ive$lng<-as.numeric(ive$lng)

Ahora realizamos el mapa

leaflet(ive)%>%
  addTiles()%>%
  addMarkers() 

Seteamos la vista

leaflet(ive)%>%
  addTiles()%>%
  setView(lng = -71.5, lat = -33, zoom = 11)%>%
  addMarkers()
  1. Podemos agregar información a cada marcador.

Algo relevante que se puede agregar a los marcadores es las atenciones totales que realizan los centros de salud según la causal de ingreso

ive2<-ive[,.N,by=.(establecimiento,tipo_causa)]

Luego creamos el texto que va a ir en cada marcador

mytext<-paste("Nombre establecimiento:",ive$establecimiento,"<br/>","Tipo de establecimiento: ", ive$tipoest,"<br/>", "Atenciones Peligro madre: ", ive2[tipo_causa=="Peligro mujer"]$N,"<br/>", "Atenciones Inviabilidad fetal: ", ive2[tipo_causa=="Inviabilidad fetal"]$N,"<br/>", "Atenciones Violación: ", ive2[tipo_causa=="Violación"]$N,sep="")

Finalmente incorporamos el texto en el mapa

leaflet(ive)%>%
  addTiles()%>%
  setView(lng = -71.5, lat = -33, zoom = 11)%>%
  addMarkers(popup=mytext)