Page cover

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