Contenido de este artículo
- 0
- 0
- 0
- 0
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)
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
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)
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/
¿Te hemos ayudado?
Ayudanos ahora tú, dejanos un comentario de agradecimiento, nos ayuda a motivarnos y si te es viable puedes hacer una donación:La ayuda no cuesta nada
Por otro lado te rogamos que compartas nuestro sitio con tus amigos, compañeros de clase y colegas, la educación de calidad y gratuita debe ser difundida, recuerdalo: