Para este ejercicio se pide concluir en base a la creacion de distintas tablas y graficos utilizando un conjundo que debe contener valores categóricas y numéricas.
Para este ejercicio se utilizara el conjunto de datos ‘adult_data’ correspondiente a set de datos utilizados para determinar si una persona genera más de 50K al año, el cual pertenece al conjunto de datos disponible el sitio web https://archive.ics.uci.edu/ml/index.php.
Para este ejemplo de tabla de frecuencia sobre variables cualitativas se utilizara el atributo “race”
#Lectura de datos
datos=read.csv("adult_data.csv",header=T,sep=",",check.names = F)
#Tabla de frecuencia variables cuanlitativas
#Frecuencia
fi=-as.numeric(sort(-table(datos$race))) #Frecuencia absoluta
fac=cumsum(fi) #Frecuencia acumulada
fri=as.numeric(fi/sum(fi))*100 #Frecuencia relativa
frac=cumsum(fri) #Frecuencia relativa acumulada
race=c("White", "Asian-Pac-Islander", "Amer-Indian-Eskimo", "Other", "Black")
#Tabla
frec_race=data.frame(race,fi,fac,fri=round(fri,2),frac=round(frac,2))
#Visualización
knitr::kable(frec_race)
| race | fi | fac | fri | frac |
|---|---|---|---|---|
| White | 27816 | 27816 | 85.43 | 85.43 |
| Asian-Pac-Islander | 3124 | 30940 | 9.59 | 95.02 |
| Amer-Indian-Eskimo | 1039 | 31979 | 3.19 | 98.21 |
| Other | 311 | 32290 | 0.96 | 99.17 |
| Black | 271 | 32561 | 0.83 | 100.00 |
Para este ejemplo de tabla de frecuencia sobre variables cuantativas se utilizara el atributo “age”
#Tabla de frecuencia variables cuantitativas
#Frecuencia
fi=as.numeric(table(datos$age)) #Frecuencia absoluta
fac=cumsum(fi) #Frecuencia acumulada
fri=as.numeric(fi/sum(fi))*100 #Frecuencia relativa
frac=cumsum(fri) #Frecuencia relativa acumulada
#Tabla
age=sort(unique(datos$age))
frec_age=data.frame(age,fi,fac,fri=round(fri,2),frac=round(frac,2))
#Visualización
knitr::kable(head(frec_age,10))
| age | fi | fac | fri | frac |
|---|---|---|---|---|
| 17 | 395 | 395 | 1.21 | 1.21 |
| 18 | 550 | 945 | 1.69 | 2.90 |
| 19 | 712 | 1657 | 2.19 | 5.09 |
| 20 | 753 | 2410 | 2.31 | 7.40 |
| 21 | 720 | 3130 | 2.21 | 9.61 |
| 22 | 765 | 3895 | 2.35 | 11.96 |
| 23 | 877 | 4772 | 2.69 | 14.66 |
| 24 | 798 | 5570 | 2.45 | 17.11 |
| 25 | 841 | 6411 | 2.58 | 19.69 |
| 26 | 785 | 7196 | 2.41 | 22.10 |
Al construir la tabla de frecuencia se puede apreciar la cantidad de veces que se repite una variable dentro del conjunto de datos, además de porcentajes como lo son la frecuencai acumulada o la frecuencia relativa.
#Tabla de frecuencia variables cuantitativas
#Frecuencia
age=sort(unique(datos$age)) # Ordenar los datos
n = length(age) # Número de elementos de edad
k = round(1 + 3.3 * log(n)) # Aplicamos regla de Sturges
h = round((max(age)-min(age))/k) # Cálculo de intervalo
#Crear intervalos
intervalos=hist(datos$age, plot=FALSE, breaks = k)$breaks
intervalos=paste("(",intervalos[1:(length(intervalos)-1)],"-",intervalos[2:(length(intervalos))],"]",sep="")
intervalos[1]="[17-19]"
#Cálculo de frecuencia
fi = hist(datos$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_age_i=data.frame(age=intervalos,fi,fac,fri=round(fri,2),frac=round(frac,2))
knitr::kable(frec_age_i)
| age | fi | fac | fri | frac |
|---|---|---|---|---|
| [17-19] | 2410 | 2410 | 7.40 | 7.40 |
| (20-25] | 4001 | 6411 | 12.29 | 19.69 |
| (25-30] | 4161 | 10572 | 12.78 | 32.47 |
| (30-35] | 4353 | 14925 | 13.37 | 45.84 |
| (35-40] | 4193 | 19118 | 12.88 | 58.71 |
| (40-45] | 3816 | 22934 | 11.72 | 70.43 |
| (45-50] | 3167 | 26101 | 9.73 | 80.16 |
| (50-55] | 2371 | 28472 | 7.28 | 87.44 |
| (55-60] | 1757 | 30229 | 5.40 | 92.84 |
| (60-65] | 1174 | 31403 | 3.61 | 96.44 |
| (65-70] | 618 | 32021 | 1.90 | 98.34 |
| (70-75] | 299 | 32320 | 0.92 | 99.26 |
| (75-80] | 142 | 32462 | 0.44 | 99.70 |
| (80-85] | 51 | 32513 | 0.16 | 99.85 |
| (85-90] | 48 | 32561 | 0.15 | 100.00 |
Para ejemplificar como representar gráficamente variables cualitativas usaremos distintos gráficos.
#Librerias
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
#Frecuencia
fi=-as.numeric(sort(-table(datos$race))) #Frecuencia absoluta
fac=cumsum(fi) #Frecuencia acumulada
fri=as.numeric(fi/sum(fi))*100 #Frecuencia relativa
frac=cumsum(fri) #Frecuencia relativa acumulada
race=c("White", "Asian-Pac-Islander", "Amer-Indian-Eskimo", "Other", "Black")
#Tabla
frec_race=data.frame(race,fi,fac,fri=round(fri,2),frac=round(frac,2))
# Gráfico de barras
p=ggplot(data=frec_race, aes(x=reorder(race, -fri),y=fi)) +
geom_bar(stat="identity",fill="maroon",alpha=0.8) + theme_minimal() +
labs(title="Frecuencia absoluta - Race", x="Race", y = "Frecuencia absoluta")
ggplotly(p)
p=ggplot(frec_race, aes(x="", y=fri, fill=reorder(race, -fri))) +
geom_bar(stat="identity", width=1) + coord_polar("y", start=0) +
theme_minimal() + labs(title="Frecuencia relativa - Race", x="Race",
y = "Frecuencia relativa (%)")
p=p + scale_fill_brewer(palette="RdPu",name = "Races")
plot(p)
p=ggplot(data=frec_race, aes(x=reorder(race, -fri),y=fi)) +
geom_bar(stat="identity",fill="maroon",alpha=0.8) + theme_minimal() +
labs(title="Frecuencia absoluta y absoluta acumulada - Race", x="Race", y = "Frecuencia absoluta")
p = p + geom_point(aes(y=fac))
ggplotly(p)
library("BHH2")
dotPlot(datos$age,xlab = "Age (años)",)
#Tabla de frecuencia variables cuantitativas
#Frecuencia
fi=as.numeric(table(datos$age)) #Frecuencia absoluta
fac=cumsum(fi) #Frecuencia acumulada
fri=as.numeric(fi/sum(fi))*100 #Frecuencia relativa
frac=cumsum(fri) #Frecuencia relativa acumulada
#Tabla
age=sort(unique(datos$age))
frec_age=data.frame(age,fi,fac,fri=round(fri,2),frac=round(frac,2))
grafico=ggplot(datos,aes(age)) # Gráfico y datos base
#Histograma
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 ") + xlab("Age (años)")
grafico = grafico + ggtitle("Histograma")
ggplotly(grafico)