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 résoudre le problème : les contrastes ne peuvent être appliqués qu’à des facteurs comportant 2 niveaux ou plus



Une erreur courante que vous pouvez rencontrer dans R est :

Error in `contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) : 
  contrasts can be applied only to factors with 2 or more levels

Cette erreur se produit lorsque vous tentez d’ajuster un modèle de régression à l’aide d’une variable prédictive qui est soit un facteur, soit un caractère et n’a qu’une seule valeur unique.

Ce didacticiel partage les étapes exactes que vous pouvez utiliser pour résoudre cette erreur.

Exemple : Comment corriger « les contrastes ne peuvent être appliqués qu’aux facteurs avec 2 niveaux ou plus »

Supposons que nous ayons le bloc de données suivant dans R :

#create data frame
df <- data.frame(var1=c(1, 3, 3, 4, 5),
                 var2=as.factor(4),
                 var3=c(7, 7, 8, 3, 2),
                 var4=c(1, 1, 2, 8, 9))

#view data frame
df

  var1 var2 var3 var4
1    1    4    7    1
2    3    4    7    1
3    3    4    8    2
4    4    4    3    8
5    5    4    2    9

Notez que la variable prédictive var2 est un facteur et n’a qu’une seule valeur unique.

Si nous essayons d’ajuster un modèle de régression linéaire multiple en utilisant var2 comme variable prédictive, nous obtiendrons l’erreur suivante :

#attempt to fit regression model
model <- lm(var4 ~ var1 + var2 + var3, data=df)

Error in `contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) : 
  contrasts can be applied only to factors with 2 or more levels

Nous obtenons cette erreur car var2 n’a qu’une seule valeur unique : 4. Puisqu’il n’y a aucune variation dans cette variable prédictive, R est incapable d’ajuster efficacement un modèle de régression.

Nous pouvons en fait utiliser la syntaxe suivante pour compter le nombre de valeurs uniques pour chaque variable de notre bloc de données :

#count unique values for each variable
sapply(lapply(df, unique), length)

var1 var2 var3 var4 
   4    1    4    4 

Et nous pouvons utiliser la fonction lapply() pour afficher chacune des valeurs uniques de chaque variable :

#display unique values for each variable
lapply(df[c('var1', 'var2', 'var3')], unique)

$var1
[1] 1 3 4 5

$var2
[1] 4
Levels: 4

$var3
[1] 7 8 3 2

Nous pouvons voir que var2 est la seule variable qui a une valeur unique. Ainsi, nous pouvons corriger cette erreur en supprimant simplement var2 du modèle de régression :

#fit regression model without using var2 as a predictor variable
model <- lm(var4 ~ var1 + var3, data=df)

#view model summary
summary(model)

Call:
lm(formula = var4 ~ var1 + var3, data = df)

Residuals:
       1        2        3        4        5 
 0.02326 -1.23256  0.91860  0.53488 -0.24419 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)  
(Intercept)   8.4070     3.6317   2.315   0.1466  
var1          0.6279     0.6191   1.014   0.4172  
var3         -1.1512     0.3399  -3.387   0.0772 .
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.164 on 2 degrees of freedom
Multiple R-squared:  0.9569,	Adjusted R-squared:  0.9137 
F-statistic: 22.18 on 2 and 2 DF,  p-value: 0.04314

En supprimant var2 du modèle de régression, nous ne rencontrons plus l’erreur précédente.

Ressources additionnelles

Comment effectuer une régression linéaire simple dans R
Comment effectuer une régression linéaire multiple dans R
Comment effectuer une régression logistique dans R

Ajouter un commentaire

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