Métodos para Detectar Outliers en Datos


Detectar outliers es un paso crucial en el análisis de datos. Estos valores extremos pueden influir significativamente en los resultados, por lo que es importante identificarlos correctamente. A continuación, exploramos los métodos más comunes para detectar outliers, cuándo aplicarlos y cómo implementarlos.


1. Método del Rango Intercuartílico (IQR)

El método del Rango Intercuartílico (IQR) identifica outliers al analizar la dispersión de los datos entre el primer cuartil (Q1Q1) y el tercer cuartil (Q3Q3). Se consideran outliers los datos que estén fuera del rango:

Q1−1.5×IQRyQ3+1.5×IQRQ1 – 1.5 \times IQR \quad \text{y} \quad Q3 + 1.5 \times IQR

Donde IQRIQR se calcula como:

IQR=Q3−Q1IQR = Q3 – Q1

Cuándo usarlo

  • Ideal para distribuciones no normales o cuando no se asume una forma específica de los datos.

Ejemplo

Supongamos un conjunto de datos: [10, 12, 14, 15, 16, 18, 21, 40].

  1. Calculamos Q1=13.5Q1 = 13.5, Q3=19.5Q3 = 19.5 y IQR=Q3−Q1=6IQR = Q3 – Q1 = 6.
  2. Los límites serían:
    • Límite inferior: Q1−1.5×IQR=4.5Q1 – 1.5 \times IQR = 4.5
    • Límite superior: Q3+1.5×IQR=28.5Q3 + 1.5 \times IQR = 28.5
  3. Como 40>28.540 > 28.5, es un outlier.

2. Método del Z-Score

El Z-Score mide cuántas desviaciones estándar se encuentra un dato con respecto a la media. La fórmula es:

X−μσZ = \frac{X - \mu}{\sigma}

i\hbar\frac{\partial}{\partial t}\left|\Psi(t)\right>=H\left|\Psi(t)\right>

Donde:

  • XX: valor de la observación.
  • μ\mu: media de los datos.
  • σ\sigma: desviación estándar.

Un dato es un outlier si ∣Z∣>3|Z| > 3.

Cuándo usarlo

  • Útil cuando los datos tienen una distribución normal o simétrica.

Ejemplo

Conjunto de datos: [10, 12, 14, 15, 16, 18, 21, 40].

  1. Calculamos:
    • μ=18.25\mu = 18.25
    • σ≈9.05\sigma \approx 9.05
  2. Para el valor 4040:
    • Z=40−18.259.05≈2.4Z = \frac{40 – 18.25}{9.05} \approx 2.4
  3. Como Z<3Z < 3, no es un outlier extremo.

3. Método Basado en Percentiles

Este método define outliers como los valores fuera de un rango de percentiles específicos, por ejemplo, el 1% y el 99%. Los límites son:

P1yP99P1 \quad \text{y} \quad P99

Cuándo usarlo

  • Es apropiado para distribuciones muy sesgadas o grandes conjuntos de datos.

Ejemplo

Conjunto de datos: [10, 12, 14, 15, 16, 18, 21, 40].

  1. Calculamos:
    • Percentil 1 (P1P1): 10.710.7
    • Percentil 99 (P99P99): 39.739.7
  2. Detectamos que 40>P9940 > P99, por lo tanto, es un outlier.

4. DBSCAN (Density-Based Spatial Clustering of Applications with Noise)

Este método agrupa puntos según su densidad y considera outliers a los puntos que no pertenecen a un grupo denso.

Cuándo usarlo

$latex i\hbar\frac{\partial}{\partial t}\left|\Psi(t)\right>=H\left|\Psi(t)\right>$

i\hbar\frac{\partial}{\partial t}\left|\Psi(t)\right>=H\left|\Psi(t)\right>

i\hbar\frac{\partial}{\partial t}\left|\Psi(t)\right>=H\left|\Psi(t)\right>

i\hbar\frac{\partial}{\partial t}\left|\Psi(t)\right>=H\left|\Psi(t)\right>

  • Ideal para datos espaciales o con patrones de clustering.

Implementación

Un ejemplo en Python para detectar outliers:

from sklearn.cluster import DBSCAN
import numpy as np

data = np.array([[1], [2], [2.1], [8], [8.1], [25]])
db = DBSCAN(eps=2, min_samples=2).fit(data)

labels = db.labels_  # -1 indica un outlier


5. Boxplots

Un Boxplot utiliza el método del IQR de forma visual para destacar outliers. Los valores fuera de las “bigotes” son identificados como extremos.

Cuándo usarlo

  • Herramienta rápida y visual para explorar datos univariados.

Ejemplo

Un ejemplo en Python para graficar un boxplot:

import matplotlib.pyplot as plt

data = [10, 12, 14, 15, 16, 18, 21, 40]
plt.boxplot(data)
plt.show()


6. Regresión y Residuos

En problemas de regresión, los outliers pueden identificarse analizando los residuos (diferencia entre los valores reales y los predichos). Un outlier es aquel con un residuo grande:

Residuo=yreal−ypredicho\text{Residuo} = y_{\text{real}} – y_{\text{predicho}}

Cuándo usarlo

  • Específico para análisis predictivos.

Ejemplo

from sklearn.linear_model import LinearRegression
import numpy as np

X = np.array([[1], [2], [3], [4], [5]])
y = np.array([1.1, 2.1, 3.0, 4.2, 15.0])  # 15 es un outlier
model = LinearRegression().fit(X, y)

residuals = y - model.predict(X)
print("Outliers:", np.where(abs(residuals) > 2))


Estos métodos pueden combinarse según la naturaleza y distribución de los datos. Elegir el enfoque adecuado depende del contexto y del tipo de análisis que deseas realizar.


Espero que este post sea útil para tus lectores. Si necesitas más ejemplos o detalles, ¡puedes incluirlos fácilmente! 😊


Comments

Deja un comentario