Estudio y Depuración de Datos
  • Declaración de autoría
  • Tema 1: Análisis Exploratorio de Datos
    • Tipos de variables
      • Ejercicio: Tipos de Datos
        • Resultados
    • Codificación y Transformación
      • Ejercicio: Codificación y Transformación
        • Resultados
    • Descriptivos, Gráficos y Tablas
      • Ejercicio: Gráficos y Tablas
        • Resultados
    • Ejemplo de un análisis descriptivo básico para detectar errores e incongruencias
    • PRACTICA 1
      • Resultados
  • Tema 2: Control de integridad de los datos
    • Introducción a los datos atípicos
      • Ejercicios
        • Resultados
    • Detección y tratamiento de datos atípicos (univariante)
    • Detección y tratamiento de datos atípicos (bivariante)
      • Ejercicio I
        • Resultados
    • Detección de datos atípicos y su tratamiento (automatización)
      • Ejercicio I - automatización
        • Resultados
    • Detección y tratamiento de datos atípicos (multivariante)
      • Ejercicio II
        • Resultados
    • Detección y tratamiento de duplicados
      • Ejercicio
        • Reusltados
    • Ejemplo de detección y tratamiento de atípicos y duplicados
      • Resultados
    • PRACTICA 2
      • Resultados
  • Tema 3: Valores Perdidos
    • Detección de datos perdidos
      • Ejercicios
    • Tratamiento de datos perdidos (Imputación Simple)
      • Ejercicio - Epidemia Ébola
        • Resultados
      • Ejercicio - Tipos de datos missing
        • Resultados
    • Tratamiento de datos perdidos (Imputación Múltiple con MICE)
      • Ejercicio - MICE
        • Resultados
    • PRACTICA 3
      • Resultados
    • PRÁCTICA GRUPAL
  • Bibliografía
    • 📚Bibliografía
Powered by GitBook
On this page
  1. Tema 2: Control de integridad de los datos

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.

Esta sería la función propia outliers() que la guarderemos en un 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
  
  # Filtrar datos sin outliers
  data_no_outliers <- data.frame(value = var_name) %>%
    filter(!(value %in% outlier_values))
  
  # 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:

source("Funciones_propias .R")

outliers(data,"Pressure_height")

# Aplicar la función a múltiples variables numéricas o enteras
numeric_integer_vars <- names(which(sapply(data, is.numeric) | sapply(data, is.integer)))
# Aplicar la función 'outliers' a cada una de las variables numéricas
outliers_results <- lapply(numeric_integer_vars, function(var) {
  outliers(data, var)  # Llamar a la función pasando el nombre de la variable
})




PreviousResultadosNextEjercicio I - automatización

Last updated 3 months ago

Page cover image