¿Qué es la distancia de Cook?

| Última modificación: 29 de abril de 2024 | Tiempo de Lectura: 2 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

La distancia de Cook nos sirve para detectar outliers, valores cuyo valor influye mucho en la salida de la regresión lineal. En este post, profundizamos en qué es la distancia de Cook y cómo calcularla.

Calcular la distancia de Cook

Para entender qué es la distancia de Cook, es imprescindible saber cómo calcularla. Se calcula mirando la diferencia entre el modelo completo con todas las muestras menos el modelo generado eliminando la muestra bajo estudio. La distancia de Cook para la muestra / se puede calcular como:

// distancia de Cook
In [72]: plot (cooks.distance (mode_powerplant))
distancia de cook: gráfica 1

Combinación de modelos con grupos de test

La distancia de Cook hace eso, pero sacando una variable de la ecuación. Es decir, el dataset de train crea un nuevo modelo sin un punto y ve si ha cambiado mucho o no; luego, pasa a otro y verifica lo mismo, y así sucesivamente.

Si el hecho de insertar o sacar el punto cambia mucho la regresión, tiene una gran importancia, ya que modifica muchísimo la gráfica y se genera una especie de outlier.

Podemos eliminar ese outlier del siguiente modo:

// distancia de Cook
In [73]: powerplant.train_clean <- powerplant.train [cooks.distance (model_powerplant) <0.005,]
model_powerplant_clean<-lm(PE-AT+V+AP+RH,data = powerplant.train_clean)
summary(model_powerplant_clean)

Call:
Im(formula = PE – AT + V + AP + RH, data = powerplant, train_clean)

Residuals:
Min: -26.9815
1Q: -3.1315
Median: -0.1563
3Q: 3.1611
Max: 17.7887

Coefficients:

EstimateStd.Errort valuePr(>ltl)
(Intercept)464.04597711.27876141.143< 2e -16 ***
AT.1.9925950.017794-111.980< 2e -16 ***
V-0.2292350.008479-27.034< 2e -16 ***
AP0.0528860.0109464.8321.38e – 06 ***
RH-0.1586850.004837-32.803< 2e -16 ***

Signif. codes:

0 ‘ *** ‘

0.001 ‘ ** ‘

0.01 ‘ * ‘

0.05 ‘ . ‘

0.1 ‘ ‘

1

Residual standard error: 4.453 on 6688 degrees of freedom

Multiple R-squared: 0.9312, Adjusted R-squared: 0.9312

F-statistic: 2.264e+04 on 4 and 6688 DF, p-value: < 2.2e-16

// distancia de Cook
In [ ] : powerplant test$pe_est<-predict (model_powerplant_clean, powerplant.test)
plot(powerplant.test$PE, (powerplant, test$PE-powerplant.test$pe_est))
sqrt (mean ( (powerplant.test$PE-powerplant-test$pe_est)^2))
myrsquared (powerplant.test$PE, powerplant.testspe_est)

El resultado:

4.64242613613001

0.927834557278113

La gráfica quedaría más o menos así:

distancia de cook: gráfica 2

Si comparamos el segundo modelo con el primero, básicamente no ha cambiado nada. Sin embargo, debes fijarte en cómo se desenvuelven los residuos entre un modelo y otro para saber si es una mejor o una peor opción.

Como hemos visto, la distancia de Cook puede ser muy útil en análisis estadísticos en Big Data, aunque esto dependerá mucho de qué necesites. Para adentrarte más en estos conocimientos, te recomendamos seguir nuestro Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp, en donde aprenderás todo lo necesario para ser el mejor profesional. Tendrás a profesores que te guiarán en todo el camino y, en poco tiempo, podrás abrir las puertas del mercado laboral IT. ¡Solicita más información y cambia tu vida!

Sandra Navarro

Business Intelligence & Big Data Advisor & Coordinadora del Bootcamp en Data Science, Big Data & Machine Learning.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Big Data, IA & Machine Learning

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado