Saltar al contenido

Métodos para Detectar Outliers en Datos

Ilustración de la distribución normal estandarizada con la curva de campana y los valores z.

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:

$latex X−μσZ = \frac{X – \mu}{\sigma}$

$latex 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>$

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

$latex 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! 😊

Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *