P1

Instalar y cargar paquetes

library(data.table)
library(ggplot2)
library(treemap)
library(lubridate)
## 
## Attaching package: 'lubridate'
## The following objects are masked from 'package:data.table':
## 
##     hour, isoweek, mday, minute, month, quarter, second, wday, week,
##     yday, year
## The following objects are masked from 'package:base':
## 
##     date, intersect, setdiff, union

P2

Cargar base de datos

egresos <- readRDS("Copia de egresos.RDS")
class(egresos)
## [1] "data.frame"
egresos<- as.data.table(egresos)

P3

Existe una inconsistencia en la base de datos, ya que hay personas que tienen más días de estadía en el hospital que días vividos. Por lo tanto, eliminamos estos casos de la base de datos.

egresos[,días_vida:=EDAD*365]
egresos <- egresos[!DIAS_ESTAD>días_vida]

P4

Los nombres de la variable Tratamiento son largos. Por lo que los reemplazaremos por nombres más cortos. Esto permitirá visualizar de mejor manera algunos gráficos.

egresos[Tratamiento=="Embarazo, parto y puerperio",trat:="Maternidad"]
egresos[Tratamiento=="Neoplasias",trat:="Neoplasias"]
egresos[Tratamiento=="Enfermedades de la sangre y de los órganos hematopoyéticos y otros trastornos que afectan el mecanismo de la inmunidad",trat:="Sistema Inmune"]
egresos[Tratamiento=="Enfermedades endocrinas, nutricionales y metabólicas",trat:="Nutricionales"]
egresos[Tratamiento=="Trastornos mentales y del comportamiento",trat:="Mentales"]
egresos[Tratamiento=="Enfermedades del sistema nervioso",trat:="Sistema Nervioso"]
egresos[Tratamiento=="Enfermedades del ojo y sus anexos y/o Enfermedades del oído y de la apófisis mastoides",trat:="Ojos y oído"]
egresos[Tratamiento=="Enfermedades del sistema circulatorio",trat:="Sistema Circulatorio"]
egresos[Tratamiento=="Enfermedades del sistema respiratorio",trat:="Sistema Respiratorio"]
egresos[Tratamiento=="Enfermedades del aparato digestivo",trat:="Sistema Digestivo"]
egresos[Tratamiento=="Enfermedades de la piel y el tejido subcutáneo",trat:="Piel"]
egresos[Tratamiento=="Enfermedades del sistema osteomuscular y del tejido conectivo",trat:="Osteomuscular"]
egresos[Tratamiento=="Enfermedades del aparato genitourinario",trat:="Genitourinario"]
egresos[Tratamiento=="Ciertas enfermedades infecciosas y parasitarias",trat:="Infecciosas y Parasitarias"]
egresos[Tratamiento=="Ciertas afecciones originadas en el periodo perinatal",trat:="Ciertas afecciones originadas en el periodo perinatal"]
egresos[Tratamiento=="Malformaciones congénitas, deformidades y anomalías cromosómicas",trat:="Malformaciones congénitas"]
egresos[Tratamiento=="Síntomas, signos y hallazgos anormales clínicos y de laboratorio, no clasificados en otra parte",trat:="Síntomas anormales clínicos"]
egresos[Tratamiento=="Traumatismos, envenenamientos y algunas otras consecuencias de causa externa",trat:="Traumatismos"]
egresos[Tratamiento=="Factores que influyen en el estado de salud y contacto con los servicios de salud",trat:="Factores que influyen en el estado de salud"]

P5

Crear sistema de coordenadas

ggplot(data=egresos, aes(x=DIAS_ESTAD))

P6: Gráfico de distribución (histograma)

  1. Categorizar por un rango de valores dentro de una variable numérica: Visualizar distribución de los días de estadía
ggplot(data=egresos, aes(x=DIAS_ESTAD)) + geom_histogram(bins=10)

  1. Mejorar visualización anterior solo dejando a aquellos que permanecen por 50 días o menos
ggplot(data=egresos[egresos$DIAS_ESTAD<=50], aes(x=DIAS_ESTAD)) + geom_histogram(bins=10)

P7: Gráfico de Barras (bar-plot)

  1. Mostrar cuántas observaciones tenemos dentro de una vartiable categórica: Cuántas personas tienen FONADA, ISAPRE, etc.?
ggplot(data=egresos, aes(x=Prevision)) + geom_bar()

  1. Cuántos son hombres y mujeres en cada previsión?
ggplot(data=egresos, aes(x=Prevision, fill=SEXO)) + geom_bar()

ggplot(data=egresos, aes(x=Prevision, fill=SEXO)) + geom_bar(position="dodge")

ggplot(data=egresos, aes(x=Prevision, fill=SEXO)) + geom_bar(position="fill")

P8: Gráfico de cajas (Box Plot)

  1. Mostrar distribución de los posibles valores que puede tomar una variable numérica: Realizar gráfico de cajas para los días de estadía para cada tipo de establecimiento.
ggplot(data=egresos[egresos$DIAS_ESTAD<=50], aes(x=Tipo_ESTAB, y=DIAS_ESTAD)) + geom_boxplot()

  1. Darle color
ggplot(data=egresos[egresos$DIAS_ESTAD<=50], aes(x=Tipo_ESTAB, y=DIAS_ESTAD, fill=Tipo_ESTAB)) + geom_boxplot(outlier.shape=NA)

  1. Agregar etiquetas
ggplot(data=egresos[egresos$DIAS_ESTAD<=50], aes(x=Tipo_ESTAB, y=DIAS_ESTAD, fill=Tipo_ESTAB)) + geom_boxplot(outlier.shape=NA) + labs(title="Distribución días de estadía", subtitle="Por tipo de establecimiento", caption="Fuente xx", x="", y="Días de Estadía") + theme(axis.text.x = element_blank()) + scale_fill_discrete(name="Tipo de Establecimiento")

P9: Gráfico de Linea (line-plot)

Tendencia temoral de una variable numérica.

  1. Creamos la fecha de ingreso de las personas a partir de la fecha de egreso y de los días de estadía.
egresos[,Egresos:=as.Date(FECHA_EGR,format="%y/%m/%d")]
egresos[,Ingreso:=Egresos-DIAS_ESTAD]
  1. Podemos visualizar la cantidad de personas que ingresan según el tipo de previsón cuando poseen Enfermedades del Sistema Respiratorio para el año 2017.
egresos_17<-egresos[Ingreso>="2017-01-01" & Ingreso<="2017-12-31" & trat=="Sistema Respiratorio"]
egresos_17[,Cantidad:=.N,by=Ingreso]
ggplot(data=egresos_17,aes(x=Ingreso, y=Cantidad, color=Prevision)) + geom_line()

  1. Agregar etiquetas
ggplot(data=egresos_17,aes(x=Ingreso, y=Cantidad, color=Prevision)) +
  geom_line() + 
  labs(x="Fecha de Ingreso", y="Cantidad de personas", title="Número de personas que ingresan por enfermedades al sistema respiratorio", caption = "Fuente: Datos de Egresos Hospitalarios 2017 - MINSAL") +
  scale_color_discrete(name="Previsión")+
  theme(axis.text.x = element_text(angle=70, vjust = 0.6),
        plot.title = element_text(size = 8.5))

P10: Gráfico de puntos (scatter-plot)

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 persona y los días que estadía en un hospital/clínica. Observación: Dado que la base de datos es muy pesada, es necesario crear una submuestra aleatoria para responder esa pregunta.
## Vamos a crear un ID para cada observación, el cual va a corresponder al número de fila de cada observación
egresos[,id:=row.names(egresos)]
egresos$id<-as.numeric(egresos$id)
muestra<-sample(x=1:nrow(egresos), size = 0.01*nrow(egresos))
ggplot(data=egresos[id %in% muestra & DIAS_ESTAD<50], aes(x=EDAD,y=DIAS_ESTAD)) +
  geom_point()

  1. Diferenciar por tratamiento
ggplot(data=egresos[id %in% muestra & DIAS_ESTAD<50], aes(x=EDAD,y=DIAS_ESTAD, color=trat)) +
  geom_point() +
  facet_wrap(facets="trat")

P11: Treemaps

Muestra el valor proporcional que representa en la variable cada una de las categorías

  1. Podemos observar la cantidad de personas que hay en cada tipo de tratamiento.
treemap(egresos,index = "trat", vSize = "id", type="value", title="Cantidad de personas por tipo de tratamiento")