Clase 02 - Análisis de frecuencia y representación gráfica
Conjunto de datos
Para esta clase se utilizará una base de datos correspondiente a los pacientes egresados de todos los hospitales públicos del país durante el año 2017. Estos datos fueron descargados desde el sitio web del Departamento de Estadísticas e Informaciones en Salud (DEIS).
#Lectura de datos
=read.csv("Egresos_2017.csv",sep=";",header=T,check.names = F) datos
Ninguna de las variables utilizadas pueden ser asociadas a información considerada privada o sensibles.
Ejemplos generales
1.1. Distribución de frecuencia
Variables cualitativa - Previsión
Para ejemplificar como efectuar una tabla de frecuencia sobre una variable cualitativa se usará el atributo previsión.
#Tabla de frecuencia variables cuanlitativas
#Frecuencia
=-as.numeric(sort(-table(datos$PREVI))) #Frecuencia absoluta
fi=cumsum(fi) #Frecuencia acumulada
fac=as.numeric(fi/sum(fi))*100 #Frecuencia relativa
fri=cumsum(fri) #Frecuencia relativa acumulada
frac=c("FONASA","ISAPRE","SIN PREVISIÓN","OTRA","DIPRECA","CAPREDENA","IGNORADA")
previ#Tabla
=data.frame(previ,fi,fac,fri=round(fri,2),frac=round(frac,2))
frec_previ#Visualización
::kable(frec_previ) knitr
previ | fi | fac | fri | frac |
---|---|---|---|---|
FONASA | 707737 | 707737 | 67.50 | 67.50 |
ISAPRE | 239809 | 947546 | 22.87 | 90.37 |
SIN PREVISIÓN | 29934 | 977480 | 2.85 | 93.22 |
OTRA | 22751 | 1000231 | 2.17 | 95.39 |
DIPRECA | 22690 | 1022921 | 2.16 | 97.55 |
CAPREDENA | 22219 | 1045140 | 2.12 | 99.67 |
IGNORADA | 3435 | 1048575 | 0.33 | 100.00 |
Variables cuantitativa - Edad
Para ejemplificar como efectuar una tabla de frecuencia sobre una variable cualitativa se usará el atributo edad.
#Tabla de frecuencia variables cuantitativas
#Frecuencia
=as.numeric(table(datos$EDAD)) #Frecuencia absoluta
fi=cumsum(fi) #Frecuencia acumulada
fac=as.numeric(fi/sum(fi))*100 #Frecuencia relativa
fri=cumsum(fri) #Frecuencia relativa acumulada
frac#Tabla
=sort(unique(datos$EDAD))
edad=data.frame(edad,fi,fac,fri=round(fri,2),frac=round(frac,2))
frec_edad#Visualización
::kable(head(frec_edad,5)) knitr
edad | fi | fac | fri | frac |
---|---|---|---|---|
0 | 51937 | 51937 | 4.95 | 4.95 |
1 | 16025 | 67962 | 1.53 | 6.48 |
2 | 11046 | 79008 | 1.05 | 7.53 |
3 | 9804 | 88812 | 0.93 | 8.47 |
4 | 8904 | 97716 | 0.85 | 9.32 |
::kable(tail(frec_edad,5)) knitr
edad | fi | fac | fri | frac | |
---|---|---|---|---|---|
106 | 105 | 14 | 1048564 | 0 | 100 |
107 | 106 | 5 | 1048569 | 0 | 100 |
108 | 107 | 2 | 1048571 | 0 | 100 |
109 | 108 | 2 | 1048573 | 0 | 100 |
110 | 109 | 2 | 1048575 | 0 | 100 |
Pregunta
¿Qué ocurre al construir directamente una tabla de frecuencia?¿Qué conclusiones se pueden extraer?
#Tabla de frecuencia variables cuantitativas
#Frecuencia
=sort(unique(datos$EDAD)) # Ordenar los datos
edad= length(edad) # Número de elementos de edad
n = round(1 + 3.3 * log(n)) # Aplicamos regla de Sturges
k = round((max(edad)-min(edad))/k) # Cálculo de intervalo
h
#Crear intervalos
=hist(datos$EDAD, plot=FALSE, breaks = k)$breaks
intervalos=paste("(",intervalos[1:(length(intervalos)-1)],"-",intervalos[2:(length(intervalos))],"]",sep="")
intervalos1]="[0-5]"
intervalos[
#Cálculo de frecuencia
= hist(datos$EDAD, plot=FALSE, breaks = k)$counts #Frecuencia con intervalos
fi =cumsum(fi) #Frecuencia acumulada
fac=as.numeric(fi/sum(fi))*100 #Frecuencia relativa
fri=cumsum(fri) #Frecuencia relativa acumulada
frac
=data.frame(edad=intervalos,fi,fac,fri=round(fri,2),frac=round(frac,2))
frec_edad::kable(frec_edad) knitr
edad | fi | fac | fri | frac |
---|---|---|---|---|
[0-5] | 105591 | 105591 | 10.07 | 10.07 |
(5-10] | 29897 | 135488 | 2.85 | 12.92 |
(10-15] | 28213 | 163701 | 2.69 | 15.61 |
(15-20] | 49624 | 213325 | 4.73 | 20.34 |
(20-25] | 75668 | 288993 | 7.22 | 27.56 |
(25-30] | 91775 | 380768 | 8.75 | 36.31 |
(30-35] | 87810 | 468578 | 8.37 | 44.69 |
(35-40] | 73278 | 541856 | 6.99 | 51.68 |
(40-45] | 58853 | 600709 | 5.61 | 57.29 |
(45-50] | 53750 | 654459 | 5.13 | 62.41 |
(50-55] | 59219 | 713678 | 5.65 | 68.06 |
(55-60] | 60988 | 774666 | 5.82 | 73.88 |
(60-65] | 59949 | 834615 | 5.72 | 79.60 |
(65-70] | 57143 | 891758 | 5.45 | 85.04 |
(70-75] | 51796 | 943554 | 4.94 | 89.98 |
(75-80] | 42090 | 985644 | 4.01 | 94.00 |
(80-85] | 31800 | 1017444 | 3.03 | 97.03 |
(85-90] | 21528 | 1038972 | 2.05 | 99.08 |
(90-95] | 7755 | 1046727 | 0.74 | 99.82 |
(95-100] | 1669 | 1048396 | 0.16 | 99.98 |
(100-105] | 168 | 1048564 | 0.02 | 100.00 |
(105-110] | 11 | 1048575 | 0.00 | 100.00 |
1.2. Gráficos
Variables cuantitativas- Previsión
Para ejemplificar como representar gráficamente variables cualitativas usaremos gráficos de barra, tipo pie y representación de Pareto. Sin embargo, existen múltiples alternativas de representación. Estas serán vistas en el Módulo 5 del diplomado.
Gráfico de barras
library(ggplot2)
library(plotly)
# Gráfico de barras
=ggplot(data=frec_previ, aes(x=reorder(previ, -fri),y=fi)) +
pgeom_bar(stat="identity",fill="maroon",alpha=0.8) + theme_minimal() +
labs(title="Frecuencia absoluta - Previsión", x="Previsión", y = "Frecuencia absoluta")
ggplotly(p)
Gráfico tipo pie
=ggplot(frec_previ, aes(x="", y=fri, fill=reorder(previ, -fri))) +
pgeom_bar(stat="identity", width=1) + coord_polar("y", start=0) + theme_minimal() +
labs(title="Frecuencia relativa - Previsión", x="Previsión", y = "Frecuencia relativa (%)")
=p + scale_fill_brewer(palette="RdPu",name = "Tipo de Previsión")
pplot(p)
Gráfico tipo Pareto
# Gráfico de barras
=ggplot(data=frec_previ, aes(x=reorder(previ, -fri),y=fi)) +
pgeom_bar(stat="identity",fill="maroon",alpha=0.8) + theme_minimal() +
labs(title="Frecuencia absoluta y absoluta acumulada - Previsión", x="Previsión", y = "Frecuencia absoluta")
= p + geom_point(aes(y=fac))
p ggplotly(p)
Variables cuantitativas - Edad
Al igual que las variables cualitativas, existen múltiples alternativas de representación. En este caso he ejemplificado 2: diagrama de puntos e histograma.
Diagrama de punto
library("BHH2")
## Warning: package 'BHH2' was built under R version 4.1.1
dotPlot(datos$EDAD,xlab = "EDAD (años)",)
Histograma
=ggplot(datos,aes(EDAD)) # Gráfico y datos base
grafico#Histograma (25 niveles) (colores- http://www.stat.columbia.edu/~tzheng/files/Rcolor.pdf)
= grafico + geom_histogram(bins=30,fill="maroon",color="maroon",alpha=0.8)
grafico = grafico + theme_bw() # Visualización estándar en blanco y negro
grafico = grafico + ylab("Frecuencia absoluta (edad)") + xlab("Edad (años)")
grafico = grafico + ggtitle("Histograma")
grafico ggplotly(grafico)
Pregunta
¿Qué diferencia aprecia entre ambos tipos de representaciones?