Detección de datos atípicos y su tratamiento (automatización)
Si tenemos que comprobar varias variables de una misma base de datos podemos pensar en automatizar el proceso mediante el uso de alguna función propia que puede ejecutar el estudio univariante de forma automática.
En este ejemplor vemos como sería la función propia outliers() que la guarderemos en un fichero como Funciones_propias.R
library(ggplot2)
library(dplyr)
library(patchwork) # Para mostrar gráficos juntos
outliers <- function(data, variable) {
var_name <- data[[variable]] # Acceder a la variable por nombre
tot <- sum(!is.na(var_name)) # Total de observaciones no NA
na1 <- sum(is.na(var_name)) # NA iniciales
# Identificar outliers usando la regla de Tukey (coef = 1.5)
stats <- boxplot.stats(var_name, coef = 1.5)
outlier_values <- stats$out
prop_outliers <- round(length(outlier_values) / tot * 100, 2) # Proporción de outliers
# Histograma con todos los datos
p1 <- ggplot(data.frame(value = var_name), aes(x = value)) +
geom_histogram(fill = "steelblue", color = "black", bins = 30, alpha = 0.7) +
labs(title = "All Observations", x = variable, y = "Count") +
theme_minimal()
# Boxplot con outliers resaltados
p2 <- ggplot(data.frame(value = var_name), aes(x = value)) +
geom_boxplot(outlier.colour = "red", outlier.shape = 16, outlier.size = 3) +
labs(title = "Boxplot with Outliers", x = variable, y = "") +
theme_minimal()
# Mostrar gráficos juntos con patchwork
print(p1 / p2)
# Mostrar información en la consola
cat("\n📌 Outliers identified in", variable, ": ", length(outlier_values), "outliers\n")
cat("📊 Proportion (%) of outliers:", prop_outliers, "%\n")
return(outlier_values) # Devolver los valores outliers sin modificar los datos
}
Y para usarla sería como una función cualquiera de R:
Last updated
