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 gérer : glm.fit : des probabilités ajustées numériquement 0 ou 1 se sont produites



Un message d’avertissement que vous pouvez rencontrer dans R est :

Warning message:
glm.fit: fitted probabilities numerically 0 or 1 occurred 

Cet avertissement se produit lorsque vous ajustez un modèle de régression logistique et que les probabilités prédites d’une ou plusieurs observations dans votre base de données ne peuvent pas être distinguées de 0 ou 1.

Il convient de noter qu’il s’agit d’un message d’avertissement et non d’une erreur. Même si vous recevez cette erreur, votre modèle de régression logistique sera toujours adapté, mais il peut être utile d’analyser le bloc de données d’origine pour voir s’il existe des valeurs aberrantes provoquant l’apparition de ce message d’avertissement.

Ce didacticiel explique comment traiter ce message d’avertissement dans la pratique.

Comment reproduire l’avertissement

Supposons que nous ajustions un modèle de régression logistique au bloc de données suivant dans R :

#create data frame
df <- data.frame(y = c(0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1),
                 x1 = c(3, 3, 4, 4, 3, 2, 5, 8, 9, 9, 9, 8, 9, 9, 9),
                 x2 = c(8, 7, 7, 6, 5, 6, 5, 2, 2, 3, 4, 3, 7, 4, 4))

#fit logistic regression model
model <- glm(y ~ x1 + x2, data=df, family=binomial)

#view model summary
summary(model)

Warning message:
glm.fit: fitted probabilities numerically 0 or 1 occurred 

Call:
glm(formula = y ~ x1 + x2, family = binomial, data = df)

Deviance Residuals: 
       Min          1Q      Median          3Q         Max  
-1.729e-05  -2.110e-08   2.110e-08   2.110e-08   1.515e-05  

Coefficients:
              Estimate Std. Error z value Pr(>|z|)
(Intercept)    -75.205 307338.933       0        1
x1              13.309  28512.818       0        1
x2              -2.793  37342.280       0        1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 2.0728e+01  on 14  degrees of freedom
Residual deviance: 5.6951e-10  on 12  degrees of freedom
AIC: 6

Number of Fisher Scoring iterations: 24

Notre modèle de régression logistique est adapté avec succès aux données, mais nous recevons un message d’avertissement qui ajuste numériquement les probabilités de 0 ou 1 .

Si nous utilisons le modèle de régression logistique ajusté pour faire des prédictions sur la valeur de réponse des observations dans la base de données d’origine, nous pouvons voir que presque toutes les probabilités prédites sont impossibles à distinguer de 0 et 1 :

#use fitted model to predict response values
df$y_pred = predict(model, df, type="response")

#view updated data frame
df

   y x1 x2       y_pred
1  0  3  8 2.220446e-16
2  0  3  7 2.220446e-16
3  0  4  7 2.220446e-16
4  0  4  6 2.220446e-16
5  0  3  5 2.220446e-16
6  0  2  6 2.220446e-16
7  0  5  5 1.494599e-10
8  1  8  2 1.000000e+00
9  1  9  2 1.000000e+00
10 1  9  3 1.000000e+00
11 1  9  4 1.000000e+00
12 1  8  3 1.000000e+00
13 1  9  7 1.000000e+00
14 1  9  4 1.000000e+00
15 1  9  4 1.000000e+00

Comment gérer l’avertissement

Il existe trois manières de traiter ce message d’avertissement :

(1) Ignorez-le.

Dans certains cas, vous pouvez simplement ignorer ce message d’avertissement, car il n’indique pas nécessairement qu’il y a un problème avec le modèle de régression logistique. Cela signifie simplement qu’une ou plusieurs observations dans la trame de données ont des valeurs prédites impossibles à distinguer de 0 ou 1.

(2) Augmenter la taille de l’échantillon.

Dans d’autres cas, ce message d’avertissement apparaît lorsque vous travaillez avec de petits blocs de données pour lesquels il n’y a tout simplement pas suffisamment de données pour fournir un ajustement de modèle fiable. Pour corriger cette erreur, augmentez simplement la taille de l’échantillon des observations que vous introduisez dans le modèle.

(3) Supprimez les valeurs aberrantes.

Dans d’autres cas, cette erreur se produit lorsqu’il y a des valeurs aberrantes dans la base de données d’origine et que seul un petit nombre d’observations ont des probabilités proches de 0 ou 1. En supprimant ces valeurs aberrantes, le message d’avertissement disparaît souvent.

Ressources additionnelles

Les didacticiels suivants expliquent comment gérer d’autres avertissements et erreurs dans R :

Comment réparer dans R : formule de modèle invalide dans ExtractVars
Comment réparer dans R : l’argument n’est ni numérique ni logique : renvoyer na
Comment réparer : randomForest.default(m, y, …) : Na/NaN/Inf dans l’appel de fonction étrangère

Ajouter un commentaire

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