Personnaliser les préférences

Nous utilisons des cookies pour vous aider à naviguer efficacement et à exécuter certaines fonctions. Vous trouverez ci-dessous des informations détaillées sur tous les cookies sous chaque catégorie de consentement.

Les cookies classés comme « Nécessaires » sont stockés sur votre navigateur car ils sont essentiels pour activer les fonctionnalités de base du site.... 

Toujours actif

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

Aucun cookie à afficher.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

Aucun cookie à afficher.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

Aucun cookie à afficher.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

Aucun cookie à afficher.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

Aucun cookie à afficher.

Comment calculer la distance du cuisinier en Python



La distance de Cook est utilisée pour identifier les observations influentes dans un modèle de régression.

La formule de la distance de Cook est la suivante :

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

où:

  • r i est le i ème résidu
  • p est le nombre de coefficients dans le modèle de régression
  • MSE est l’erreur quadratique moyenne
  • h ii est la ième valeur de levier

Essentiellement, la distance de Cook mesure dans quelle mesure toutes les valeurs ajustées du modèle changent lorsque la i ème observation est supprimée.

Plus la valeur de la distance de Cook est grande, plus une observation donnée est influente.

En règle générale, toute observation dont la distance de Cook est supérieure à 4/n (où n = observations totales) est considérée comme ayant une grande influence.

Ce didacticiel fournit un exemple étape par étape de la façon de calculer la distance de Cook pour un modèle de régression donné en Python.

Étape 1 : Saisissez les données

Tout d’abord, nous allons créer un petit ensemble de données avec lequel travailler en Python :

import pandas as 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]})

Étape 2 : Ajuster le modèle de régression

Ensuite, nous ajusterons un modèle de régression linéaire simple :

import statsmodels.api as sm

#define response variable
y = df['y']

#define explanatory variable
x = df['x']

#add constant to predictor variables
x = sm.add_constant(x)

#fit linear regression model
model = sm.OLS(y, x).fit() 

Étape 3 : Calculer la distance du cuisinier

Ensuite, nous calculerons la distance de Cook pour chaque observation du modèle :

#suppress scientific notation
import numpy as np
np.set_printoptions(suppress=True)

#create instance of influence
influence = model.get_influence()

#obtain Cook's distance for each observation
cooks = influence.cooks_distance

#display Cook's distances
print(cooks)

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

Par défaut, la fonction cuisiniers_distance() affiche un tableau de valeurs pour la distance de Cook pour chaque observation suivi d’un tableau de valeurs p correspondantes.

Par exemple:

  • Distance de Cook pour l’observation n°1 : 0,368 (valeur p : 0,701)
  • Distance de Cook pour l’observation n°2 : 0,061 (valeur p : 0,941)
  • Distance de Cook pour l’observation n°3 : 0,001 (valeur p : 0,999)

Et ainsi de suite.

Étape 4 : Visualisez les distances du cuisinier

Enfin, nous pouvons créer un nuage de points pour visualiser les valeurs de la variable prédictive en fonction de la distance de Cook pour chaque observation :

import matplotlib.pyplot as plt

plt.scatter(df.x, cooks[0])
plt.xlabel('x')
plt.ylabel('Cooks Distance')
plt.show()

Distance de Cook en Python

Pensées finales

Il est important de noter que la distance de Cook doit être utilisée pour identifier les observations potentiellement influentes. Ce n’est pas parce qu’une observation est influente qu’elle doit être supprimée de l’ensemble de données.

Tout d’abord, vous devez vérifier que l’observation n’est pas le résultat d’une erreur de saisie de données ou d’un autre événement étrange. S’il s’avère qu’il s’agit d’une valeur légitime, vous pouvez alors décider s’il est approprié de la supprimer, de la laisser telle quelle ou simplement de la remplacer par une valeur alternative comme la médiane.

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *