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
  2. Detección y tratamiento de datos atípicos (multivariante)
  3. Ejercicio II

Resultados

library(dbscan)
library(class)
library(ggplot2)
library(tidyverse)

data <- read.csv("ozone.csv")  # import data
data$Month<-as.factor(data$Month)
data$Day_of_month<-as.factor(data$Day_of_month)
data$Day_of_week<-as.factor(data$Day_of_week)


####Aplicamos LOF
k<-round(log(nrow(data)))
lof<-lof(select(data,-Month,-Day_of_month,-Day_of_week,-Inversion_base_height),minPts = k) 
cbind(data[lof>1.5,],lof[lof>1.5])

data$lof<-lof

ggplot(data, aes(y = lof)) +
  geom_boxplot(fill = "skyblue", outlier.color = "red", outlier.shape = 16) +
  theme_minimal() +
  labs(title = "Distribución de LOF Scores")

####Comprobamos las cuantitativas
ggplot(data, aes(x = Pressure_height, y = Ozone_reading, colour = lof)) +
  geom_point() +
  scale_color_gradient(low = "blue", high = "red", name = "LOF Score") +
  labs(title = "Detección de Valores Atípicos con LOF")


ggplot(data, aes(x = Pressure_height, y = Wind_speed, colour = lof)) +
  geom_point() +
  scale_color_gradient(low = "blue", high = "red", name = "LOF Score") +
  labs(title = "Detección de Valores Atípicos con LOF")


ggplot(data, aes(x = Pressure_height, y = Visibility, colour = lof)) +
  geom_point() +
  scale_color_gradient(low = "blue", high = "red", name = "LOF Score") +
  labs(title = "Detección de Valores Atípicos con LOF")


ggplot(data, aes(x = Pressure_height, y = Humidity, colour = lof)) +
  geom_point() +
  scale_color_gradient(low = "blue", high = "red", name = "LOF Score") +
  labs(title = "Detección de Valores Atípicos con LOF")


ggplot(data, aes(x = Pressure_height, y = Temperature_Sandburg, colour = lof)) +
  geom_point() +
  scale_color_gradient(low = "blue", high = "red", name = "LOF Score") +
  labs(title = "Detección de Valores Atípicos con LOF")

ggplot(data, aes(x = Pressure_height, y = Inversion_base_height, colour = lof)) +
  geom_point() +
  scale_color_gradient(low = "blue", high = "red", name = "LOF Score") +
  labs(title = "Detección de Valores Atípicos con LOF")


####Comprobamos las cualitativas
ggplot(data, aes(x = as.factor(Month), y = lof)) +
  geom_boxplot(fill = "lightblue") +
  labs(title = "lof across months", x = "Month", y = "lof") 

ggplot(data, aes(x = as.factor(Day_of_week), y = lof)) +
  geom_boxplot(fill = "lightgreen") +
  labs(title = "lof across day of week", x = "Day_of_week", y = "lof") 




No observamos ninguna observación que tenga un LOF especialmente grande más allá de que los puntos rojos que son los que mayor LOF tienen siempre corresponden a los puntos más alejados de las nubes de puntos al representar las variables dos a dos que corresponden a los datos atípicos que ya hemos observado en el estudio previo. No borraremos nada más.

PreviousEjercicio IINextDetección y tratamiento de duplicados

Last updated 2 months ago