Comment résoudre le problème : la prédiction d’un ajustement de classement déficient peut être trompeuse
Un avertissement courant que vous pouvez rencontrer dans R est :
Warning message:
In predict.lm(model, df) :
prediction from a rank-deficient fit may be misleading
Cet avertissement peut se produire pour deux raisons :
Raison 1 : Deux variables prédictives sont parfaitement corrélées.
Raison 2 : Vous avez plus de paramètres de modèle que d’observations dans l’ensemble de données.
Les exemples suivants montrent comment chaque problème pourrait survenir dans la pratique.
Raison n°1 : deux variables prédictives sont parfaitement corrélées
Supposons que nous adaptions le modèle de régression linéaire multiple suivant dans R et que nous essayions de l’utiliser pour faire des prédictions :
#create data frame
df <- data.frame(x1=c(1, 2, 3, 4),
x2=c(2, 4, 6, 8),
y=c(6, 10, 19, 26))
#fit multiple linear regression model
model <- lm(y~x1+x2, data=df)
#use model to make predictions
predict(model, df)
1 2 3 4
4.9 11.8 18.7 25.6
Warning message:
In predict.lm(model, df) :
prediction from a rank-deficient fit may be misleading
Nous recevons un message d’avertissement car les variables prédictives x1 et x2 sont parfaitement corrélées .
Notez que les valeurs de x2 sont simplement égales aux valeurs de x1 multipliées par deux. Ceci est un exemple de multicolinéarité parfaite .
Cela signifie que x1 et x2 ne fournissent pas d’informations uniques ou indépendantes dans le modèle de régression, ce qui pose des problèmes lors de l’ajustement et de l’interprétation du modèle.
Le moyen le plus simple de résoudre ce problème consiste simplement à supprimer l’une des variables prédictives du modèle, car il est redondant d’avoir les deux variables prédictives dans le modèle.
Raison n°2 : il y a plus de paramètres de modèle que d’observations
Supposons que nous adaptions le modèle de régression linéaire multiple suivant dans R et que nous essayions de l’utiliser pour faire des prédictions :
#create data frame
df <- data.frame(x1=c(1, 2, 3, 4),
x2=c(3, 3, 8, 12),
x3=c(4, 6, 3, 11),
y=c(6, 10, 19, 26))
#fit multiple linear regression model
model <- lm(y~x1*x2*x3, data=df)
#use model to make predictions
predict(model, df)
1 2 3 4
6 10 19 26
Warning message:
In predict.lm(model, df) :
prediction from a rank-deficient fit may be misleading
Nous recevons un message d’avertissement car nous avons tenté d’ajuster un modèle de régression avec sept coefficients totaux de modèle :
- x1
- x2
- x3
- x1*x2
- x1*3
- x2*x3
- x1*x2*x3
Cependant, nous n’avons que quatre observations au total dans l’ensemble de données.
Étant donné que le nombre de paramètres du modèle est supérieur au nombre d’observations dans l’ensemble de données, nous appelons cela des données de grande dimension .
Avec des données de grande dimension, il devient impossible de trouver un modèle capable de décrire la relation entre les variables prédictives et la variable de réponse, car nous ne disposons pas de suffisamment d’observations sur lesquelles entraîner le modèle.
Le moyen le plus simple de résoudre ce problème consiste à collecter davantage d’observations pour notre ensemble de données ou à utiliser un modèle plus simple avec moins de coefficients à estimer.
Ressources additionnelles
Les didacticiels suivants expliquent comment gérer d’autres erreurs courantes dans R :
Comment gérer : glm.fit : l’algorithme n’a pas convergé
Comment gérer : glm.fit : des probabilités ajustées numériquement 0 ou 1 se sont produites