Se utiliza el conjunto de datos “AdultUCI” del paquete “arules” para mostrar las tablas de frecuencia y gráficos. ## Distribución de frecuencia ### Variable cualitativa Se utiliza el atributo workclass como variable cualitativa.

#Frecuencia
fi=-as.numeric(sort(-table(AdultUCI$workclass))) #Frecuencia absoluta
fac=cumsum(fi)                           #Frecuencia acumulada
fri=as.numeric(fi/sum(fi))*100           #Frecuencia relativa
frac=cumsum(fri)                         #Frecuencia relativa acumulada
work=c("Private", "Self-emp-not-inc", "Self-emp-inc", "Federal-gov", "Local-gov", "State-gov", "Without-pay", "Never-worked")
#Tabla
frec_work=data.frame(work,fi,fac,fri=round(fri,2),frac=round(frac,2))
#Visualización
knitr::kable(frec_work)
work fi fac fri frac
Private 33906 33906 73.64 73.64
Self-emp-not-inc 3862 37768 8.39 82.03
Self-emp-inc 3136 40904 6.81 88.84
Federal-gov 1981 42885 4.30 93.14
Local-gov 1695 44580 3.68 96.82
State-gov 1432 46012 3.11 99.93
Without-pay 21 46033 0.05 99.98
Never-worked 10 46043 0.02 100.00

Variable cuantitativa

Se utiliza el atributo age como variable cuantitativa. Se muestra una tabla únicamente con 10 edades debido a la extensión.

#Tabla de frecuencia variables cuantitativas
#Frecuencia
fi=as.numeric(table(AdultUCI$age))  #Frecuencia absoluta
fac=cumsum(fi)                    #Frecuencia acumulada
fri=as.numeric(fi/sum(fi))*100    #Frecuencia relativa
frac=cumsum(fri)                  #Frecuencia relativa acumulada
#Tabla
edad=sort(unique(AdultUCI$age))
frec_edad=data.frame(edad,fi,fac,fri=round(fri,2),frac=round(frac,2))
#Visualización
knitr::kable(head(frec_edad,10))
edad fi fac fri frac
17 595 595 1.22 1.22
18 862 1457 1.76 2.98
19 1053 2510 2.16 5.14
20 1113 3623 2.28 7.42
21 1096 4719 2.24 9.66
22 1178 5897 2.41 12.07
23 1329 7226 2.72 14.79
24 1206 8432 2.47 17.26
25 1195 9627 2.45 19.71
26 1153 10780 2.36 22.07

Variable cuantitativa por intervalos

Se agrupan las edades por intervalos.

#Tabla de frecuencia variables cuantitativas
  #Frecuencia
edad=sort(unique(AdultUCI$age))       # Ordenar los datos
n = length(edad)                    # Número de elementos de edad
k = round(1 + 3.3 * log(n))         # Aplicamos regla de Sturges
h = round((max(edad)-min(edad))/k)  # Cálculo de intervalo

 #Crear intervalos
intervalos=hist(AdultUCI$age, plot=FALSE, breaks = k)$breaks
intervalos=paste("(",intervalos[1:(length(intervalos)-1)],"-",intervalos[2:(length(intervalos))],"]",sep="")
intervalos[1]="[0-5]"

 #Cálculo de frecuencia
fi = hist(AdultUCI$age, plot=FALSE, breaks = k)$counts      #Frecuencia con intervalos
fac=cumsum(fi)                                            #Frecuencia acumulada
fri=as.numeric(fi/sum(fi))*100                            #Frecuencia relativa
frac=cumsum(fri)                                          #Frecuencia relativa acumulada  

frec_edad=data.frame(edad=intervalos,fi,fac,fri=round(fri,2),frac=round(frac,2))
knitr::kable(frec_edad)
edad fi fac fri frac
[0-5] 3623 3623 7.42 7.42
(20-25] 6004 9627 12.29 19.71
(25-30] 6166 15793 12.62 32.33
(30-35] 6553 22346 13.42 45.75
(35-40] 6285 28631 12.87 58.62
(40-45] 5667 34298 11.60 70.22
(45-50] 4736 39034 9.70 79.92
(50-55] 3560 42594 7.29 87.21
(55-60] 2642 45236 5.41 92.62
(60-65] 1803 47039 3.69 96.31
(65-70] 935 47974 1.91 98.22
(70-75] 495 48469 1.01 99.24
(75-80] 225 48694 0.46 99.70
(80-85] 81 48775 0.17 99.86
(85-90] 67 48842 0.14 100.00

¿Qué ocurre al construir directamente una tabla de frecuencia?¿Qué conclusiones se pueden extraer?

La construcción de tablas de frecuencia permite organizar un conjunto de datos mediante columnas, de tal forma que se agrupen al compartir el valor de una variable determinada. De una tabla de frecuencias se puede obtener la cantidad de repetición de un dato.

Gráficos

Variables cualitativas

Gráfico de barras

p=ggplot(data=frec_work, aes(x=reorder(work, -fri),y=fi)) +
  geom_bar(stat="identity",fill="maroon",alpha=0.8) + theme_minimal() + 
  labs(title="Frecuencia absoluta - Trabajo", x="Trabajo", y = "Frecuencia absoluta")
ggplotly(p)

Gráfico de tipo pie

p=ggplot(frec_work, aes(x="", y=fri, fill=reorder(work, -fri))) +
  geom_bar(stat="identity", width=1) + coord_polar("y", start=0) + theme_minimal() +
  labs(title="Frecuencia relativa - Trabajo", x="Previsión", y = "Frecuencia relativa (%)")
p=p + scale_fill_brewer(palette="RdPu",name = "Tipo de Trabajo")
plot(p)

Gráfico pareto

p=ggplot(data=frec_work, aes(x=reorder(work, -fri),y=fi)) +
  geom_bar(stat="identity",fill="maroon",alpha=0.8) + theme_minimal() + 
  labs(title="Frecuencia absoluta y absoluta acumulada - Trabajo", x="Trabajo", y = "Frecuencia absoluta")
p = p + geom_point(aes(y=fac))
ggplotly(p)

Variables cuantitativas

Diagrama de punto

dotPlot(AdultUCI$age,xlab = "Edad (años)",)

Histograma

grafico=ggplot(AdultUCI,aes(age)) # Gráfico y datos base
#Histograma (25 niveles) (colores- http://www.stat.columbia.edu/~tzheng/files/Rcolor.pdf)
grafico = 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")
ggplotly(grafico)

¿Qué diferencia aprecia entre ambos tipos de representaciones?

Respecto a las representaciones para las variables cualitativas, el gráfico de barras muestra la frecuencia de variable mediante barras verticales, mientras que el gráfico de tipo pie utiliza la frecuencia relativa para representar la cantidad de datos en porcentajes, finalmente, el gráfico pareto utiliza la frecuencia absoluta con barras verticales y añade la frecuencia absoluta acumulada representada con puntos. Por otro lado, para las variables cuantitativas, el gráfico de puntos utiliza puntos para representar la frecuencia, mientras que el histograma grafica los datos mediante barras horizontales, indicando su frecuencia absoluta.