Lösung: kontraste können nur auf faktoren mit 2 oder mehr ebenen angewendet werden
Ein häufiger Fehler, der in R auftreten kann, ist:
Error in `contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]): contrasts can be applied only to factors with 2 or more levels
Dieser Fehler tritt auf, wenn Sie versuchen, ein Regressionsmodell mithilfe einer Prädiktorvariablen anzupassen, die entweder ein Faktor oder ein Merkmal ist und nur einen eindeutigen Wert hat.
In diesem Tutorial werden die genauen Schritte erläutert, mit denen Sie diesen Fehler beheben können.
Beispiel: So beheben Sie „Kontraste können nur auf Faktoren mit 2 oder mehr Ebenen angewendet werden“
Angenommen, wir haben den folgenden Datenrahmen in 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
Beachten Sie, dass die Prädiktorvariable var2 ein Faktor ist und nur einen eindeutigen Wert hat.
Wenn wir versuchen, ein multiples lineares Regressionsmodell mit var2 als Prädiktorvariable anzupassen, erhalten wir die folgende Fehlermeldung:
#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
Wir erhalten diesen Fehler, weil var2 nur einen eindeutigen Wert hat: 4. Da es keine Variation in dieser Prädiktorvariablen gibt, ist R nicht in der Lage, ein Regressionsmodell effektiv anzupassen.
Wir können tatsächlich die folgende Syntax verwenden, um die Anzahl der eindeutigen Werte für jede Variable in unserem Datenrahmen zu zählen:
#count unique values for each variable sapply( lapply (df, unique), length) var1 var2 var3 var4 4 1 4 4
Und wir können die Funktion lapply() verwenden, um jeden der eindeutigen Werte jeder Variablen anzuzeigen:
#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
Wir können sehen, dass var2 die einzige Variable ist, die einen eindeutigen Wert hat. Wir können diesen Fehler also beheben, indem wir einfach var2 aus dem Regressionsmodell entfernen:
#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 . --- Significant. 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
Durch das Entfernen von var2 aus dem Regressionsmodell tritt der vorherige Fehler nicht mehr auf.
Zusätzliche Ressourcen
So führen Sie eine einfache lineare Regression in R durch
So führen Sie eine multiple lineare Regression in R durch
So führen Sie eine logistische Regression in R durch