Page cover

Ejemplo de un análisis descriptivo básico para detectar errores e incongruencias

Para este apartado vamos a utilizar el conjunto de datos "Wine Quality" utilizado en Cortez et al. (2009).

Las variables son las siguientes:

Lo primero que haremos es leer los datos. Seguidamente verificamos que los tipos de variables se hayan asignado correctamente con str()

#install.packages("readxl")

library(readxl)
datos<-read_excel("DatosVino.xlsx")

str(datos)

No todas las variables categóricas han sido asignadas a factores, por lo que debemos modificarlo. Para ello usamos as.factor(). Podemos hacerlo en combinación con lapply() que nos permite aplicar la misma función a varios objetos.

datos[,c("Compra","Etiqueta","Clasificacion","Region")]<-
    lapply(datos[,c("Compra","Etiqueta","Clasificacion","Region")],as.factor)

str(datos)

Ahora podemos ver un resumen de todas las variables para poder detectar errores iniciales usando la función summary()

summary(datos)

Con estos resultados, podemos analizar las variables del conjunto de datos y detectar errores que deben ser tratados posteriormente:

  • La variable CloruroSodico tiene un valor máximo de 999, lo que suele representar valores ausentes.

  • La variable Alcohol toma valores fuera del intervalo 0-100.

  • La variable Clasificacion tiene valores representados por el símbolo ?, lo que también suele representar valores ausentes.

  • La variable Etiqueta tiene más categorías de las que necesita debido al uso de mayúsculas y minúsculas.

Para verificar si los valores 999 de la variable CloruroSodio son efectivamente ausentes, podemos representar su histograma

hist(datos$CloruroSodico,xlab="CloruroSodico",main="")

datos$CloruroSodico<-replace(datos$CloruroSodico,datos$CloruroSodico==999,NA)

hist(datos$CloruroSodico,xlab="CloruroSodico",main="")

Para la variable Clasificacion vamos a usar la libreria questionr que contiene la funcion recode.na() para recodificar por NAs los valores de esa variable.

#install.packages("questionr")

library(questionr)

datos$Clasificacion<-recode.na(datos$Clasificacion,"?")

En el caso de la variable Alcohol, vamos a declarar como NAs los valores fuera de rango

datos$Alcohol<-replace(datos$Alcohol,which((datos$Alcohol<0) | (datos$Alcohol>100)),NA)

Finalmente vamos a corregir los errores de escritura de la variable Etiqueta, para ello podemos usar la funcion recode() del paquete car

datos$Etiqueta<-car::recode(datos$Etiqueta,"'b'='B';'m'='M';'mb'='MB';'mm'='MM';'r'='R'")

Vamos a ver que efectivamente todos los errores se han corregido

summary(datos)

#install.packages("writexl")

library(writexl)
write_xlsx(datos,"DatosVino_corregido.xlsx")

Last updated