Cómo calcular la distancia de Cook en Python

La distancia de Cook se utiliza para identificar observaciones influyentes en un 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

Esencialmente, la distancia de Cook mide cuánto cambian todos los valores ajustados en el modelo cuando se elimina la i- ésima observación.

Cuanto mayor sea el valor de la distancia de Cook, más influyente será una observación determinada.

Una regla general es que cualquier observación con una distancia de Cook superior a 4 / n (donde n = observaciones totales) se considera muy influyente.

Este tutorial proporciona un ejemplo paso a paso de cómo calcular la distancia de Cook para un modelo de regresión dado en Python.

Paso 1: ingrese los datos

Primero, crearemos un pequeño conjunto de datos para trabajar en Python:

importar pandas como pd

#create dataset
 df = pd. DataFrame ({' x ': [8, 12, 12, 13, 14, 16, 17, 22, 24, 26, 29, 30],
                   ' y ': [41, 42, 39, 37, 35, 39, 45, 46, 39, 49, 55, 57]})

Paso 2: ajustar el modelo de regresión

A continuación, ajustaremos un modelo de regresión lineal simple :

importar modelos de estadísticas. api  como sm

#define la variable de respuesta
 y = df [' y ']

#definir variable explicativa
 x = df [' x ']

#add constante a las variables predictoras
 x = sm. add_constant (x)

#fit modelo de regresión lineal
 modelo = sm. MCO (y, x). encajar ()

Paso 3: Calcule la distancia de Cook

A continuación, calcularemos la distancia de Cook para cada observación en el modelo:

#suppress notación científica
 import numpy as np
notario público. set_printoptions (suprimir = Verdadero )

# crear instancia de influencia
 influencia = modelo. get_influence ()

#obtener la distancia de Cook para cada observación
 cocineros = influencia. cooks_distance

#display Impresión de distancias del
 cocinero (cocineros)

(matriz ([0.368, 0.061, 0.001, 0.028, 0.105, 0.022, 0.017, 0., 0.343,
        0., 0.15, 0.349]),
 matriz ([0.701, 0.941, 0.999, 0.973, 0.901, 0.979, 0.983, 1., 0.718,
        1., 0.863, 0.713]))

De forma predeterminada, la función cooks_distance () muestra una matriz de valores para la distancia de Cook para cada observación seguida de una matriz de valores p correspondientes.

Por ejemplo:

  • Distancia de Cook para la observación n. ° 1: .368 (valor de p: .701)
  • Distancia de Cook para la observación # 2: .061 (valor de p: .941)
  • Distancia de Cook para la observación # 3: .001 (valor de p: .999)

Y así.

Paso 4: Visualice las distancias de Cook

Por último, podemos crear un diagrama de dispersión para visualizar los valores de la variable predictora frente a la distancia de Cook para cada observación:

importar matplotlib. pyplot  como plt

plt. esparcir (df.x, cocina [0])
plt. xlabel (' x ')
plt. ylabel (' Distancia de cocineros ')
plt. mostrar ()

Distancia de Cook en Python

Pensamientos finales

Es importante tener en cuenta que Cook’s Distance debe usarse como una forma de identificar observaciones potencialmente influyentes. El hecho de que una observación sea influyente no significa necesariamente que deba eliminarse del conjunto de datos.

Primero, debe verificar que la observación no sea el resultado de un error de entrada de datos o alguna otra ocurrencia extraña. Si resulta ser un valor legítimo, puede decidir si es apropiado eliminarlo, dejarlo o simplemente reemplazarlo con un valor alternativo como la mediana.

  • https://r-project.org
  • https://www.python.org/
  • https://www.stata.com/

Deja un comentario

El error cuadrático medio (RMSE) es una métrica que nos dice qué tan lejos están nuestros valores predichos de nuestros…
statologos comunidad-2

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

You have Successfully Subscribed!