Cómo identificar puntos de datos influyentes utilizando la distancia de Cook

La distancia de Cook , a menudo denotada como D i , se usa en el análisis de regresión para identificar puntos de datos influyentes que pueden afectar negativamente su modelo de regresión.

La fórmula para la distancia de Cook es:

D yo = (r yo 2 / p * MSE) * (h ii / (1-h ii ) 2 )

dónde:

  • r i es el i- ésimo residuo
  • p es el número de coeficientes en el modelo de regresión
  • MSE es el error cuadrático medio
  • h ii es el i ésimo valor apalancamiento

Aunque la fórmula parece un poco complicada, la buena noticia es que la mayoría de los softwares estadísticos pueden calcularla fácilmente.

Esencialmente, Cook’s Distance hace una cosa: mide cuánto cambian todos los valores ajustados en el modelo cuando se elimina el i- ésimo punto de datos.

Un punto de datos que tiene un valor grande para la distancia de Cook indica que influye fuertemente en los valores ajustados. Una regla general es que cualquier punto con una distancia de Cook superior a 4 / n ( donde n es el número total de puntos de datos ) se considera un valor atípico.

Es importante tener en cuenta que Cook’s Distance se usa a menudo como una forma de identificar puntos de datos influyentes. El hecho de que un punto de datos sea influyente no significa que necesariamente deba eliminarse; primero debe verificar si el punto de datos simplemente se ha registrado incorrectamente o si hay algo extraño en el punto de datos que pueda apuntar a un hallazgo interesante.

Cómo calcular la distancia de Cook en R

El siguiente ejemplo ilustra cómo calcular la distancia de Cook en R.

Primero, cargaremos dos bibliotecas que necesitaremos para este ejemplo:

biblioteca (ggplot2)
biblioteca (gridExtra)

A continuación, definiremos dos marcos de datos: uno con dos valores atípicos y otro sin valores atípicos.

#crea un marco de datos sin valores atípicos
no_outliers <- data.frame (x = c (1, 2, 2, 3, 4, 5, 7, 3, 2, 12, 11, 15, 14, 17, 22),
                          y = c (22, 23, 24, 23, 19, 34, 35, 36, 36, 34, 32, 38, 41,
                                42, 44))

# crear un marco de datos con dos valores
 atípicos <- data.frame (x = c (1, 2, 2, 3, 4, 5, 7, 3, 2, 12, 11, 15, 14, 17, 22),
                       y = c ( 190 , 23, 24, 23, 19, 34, 35, 36, 36, 34, 32, 38, 41,
                             42, 180 ))

A continuación, crearemos un diagrama de dispersión para mostrar los dos marcos de datos uno al lado del otro:

#crear un diagrama de dispersión para el marco de datos sin valores atípicos
 no_outliers_plot <- ggplot (data = no_outliers, aes (x = x, y = y)) +
  geom_point () +
  geom_smooth (método = lm) +
  ylim (0, 200) +
  ggtitle ("Sin valores atípicos")

#create scatterplot para el marco de datos con valores atípicos
 outliers_plot <- ggplot (data = outliers, aes (x = x, y = y)) +
  geom_point () +
  geom_smooth (método = lm) +
  ylim (0, 200) +
  ggtitle ("Con valores atípicos")

#plot los dos diagramas de dispersión lado a lado
 gridExtra :: grid.arrange (no_outliers_plot, outliers_plot, ncol = 2)

Diagramas de dispersión uno al lado del otro en R

Podemos ver cómo los valores atípicos influyen negativamente en el ajuste de la línea de regresión en el segundo gráfico.

Para identificar puntos influyentes en el segundo conjunto de datos, podemos calcular la distancia de Cook para cada observación en el conjunto de datos y luego trazar estas distancias para ver qué observaciones son más grandes que el umbral tradicional de 4 / n:

#ajustar el modelo de regresión lineal al conjunto de datos con valores atípicos
modelo <- lm (y ~ x, datos = valores atípicos)

# encontrar la distancia de Cook para cada observación en el conjunto de datos
 cooksD <- cooks.distance (modelo)

# Trace la distancia de Cook con una línea horizontal en 4 / n para ver qué observaciones 
# superan este umbral
n <- nrow (valores atípicos)
plot (cooksD, main = "Distancia de cocineros para observaciones influyentes")
abline (h = 4 / n, lty = 2, col = "steelblue") # agregar línea de corte

Gráfico de distancia de Cook en R

Podemos ver claramente que la primera y la última observación en el conjunto de datos superan el umbral de 4 / n. Por lo tanto, identificaríamos estas dos observaciones como puntos de datos influyentes que tienen un impacto negativo en el modelo de regresión.

Si quisiéramos eliminar cualquier observación que exceda el umbral de 4 / n, podemos hacerlo usando el siguiente código:

#identificar puntos influyentes
influential_obs <- as.numeric (nombres (cooksD) [(cooksD> (4 / n))])

#definir nuevo marco de datos con puntos influyentes eliminados
 outliers_removed <- outliers [-influential_obs,]

A continuación, podemos comparar dos diagramas de dispersión: uno muestra la línea de regresión con los puntos influyentes presentes y el otro muestra la línea de regresión con los puntos influyentes eliminados:

#crear un diagrama de dispersión con valores atípicos presentes
outliers_present <- ggplot (datos = valores atípicos, aes (x = x, y = y)) +
  geom_point () +
  geom_smooth (método = lm) +
  ylim (0, 200) +
  ggtitle ("Valores atípicos presentes")

#create scatterplot sin valores atípicos eliminados
outliers_removed <- ggplot (data = outliers_removed, aes (x = x, y = y)) +
  geom_point () +
  geom_smooth (método = lm) +
  ylim (0, 200) +
  ggtitle ("Valores atípicos eliminados")

#plot ambos diagramas de dispersión lado a lado
 gridExtra :: grid.arrange (outliers_present, outliers_removed, ncol = 2)

Diagramas de dispersión uno al lado del otro con gridExtra

Podemos ver claramente cuánto mejor se ajusta la línea de regresión a los datos con los dos puntos de datos influyentes eliminados.

Notas técnicas

  • La mayoría de los softwares estadísticos tienen la capacidad de calcular fácilmente la distancia de Cook para cada observación en un conjunto de datos.
  • Tenga en cuenta que Cook’s Distance es simplemente una forma de identificar puntos influyentes.
  • Hay muchas formas de lidiar con los puntos influyentes, que incluyen: eliminar estos puntos, reemplazar estos puntos con algún valor como la media o la mediana, o simplemente mantener los puntos en el modelo pero tomar una nota cuidadosa sobre esto al informar los resultados de la regresión.
  • https://r-project.org
  • https://www.python.org/
  • https://www.stata.com/

Deja un comentario

En un experimento, hay dos tipos de variables: La variable independiente: La variable que un experimentador cambia o controla para…
statologos comunidad-2

Compartimos información EXCLUSIVA y GRATUITA solo para suscriptores (cursos privados, programas, consejos y mucho más)

You have Successfully Subscribed!