我正在尝试线性回归,并观察到,尽管我的所有因素列至少有两个级别,但我还是得到了这个错误。
我追踪到给出这个错误的列,这是该列的摘要。
> summary(df[,30])
0 1 <NA>
31543 14 0
> unique(df[,30])
[1] 0 1
Levels: 0 1 <NA>我还通过以下操作消除了所有具有安娜值的行
df = na.omit(df)请注意,上面的NA是我使用addNA函数添加的一个额外的因子级别。
我该怎么解决这个问题?
编辑:我已经在上的公开分享中给出了一个可复制的例子。请从这里下载reproduce.RDS文件。
这是我正在使用的代码
df = readRDS('reproduce.RDS')
model = lm(formula = COL_101~.,data=traindf)
predict.lm(model, df[1:5,])这是我的输出
> model = lm(formula = COL_101~.,data=df)
Error in `contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) :
contrasts can be applied only to factors with 2 or more levels发布于 2015-05-12 17:56:31
这不是一个完全的答案,虽然可能是,如果它最终证明了这个问题。我可以重新创建类似于您的数据,但可以这样做,如下所示。
set.seed(5)
df <- data.frame(y=rnorm(100), x=addNA(rep(c(0,1), c(80,20))))
table(df$x)
## 0 1 <NA>
## 80 20 0
lm(y~x, data=df)
## Call:
## lm(formula = y ~ x, data = df)
##
## Coefficients:
## (Intercept) x1
## 0.007601 0.120172 https://stackoverflow.com/questions/30197727
复制相似问题