首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对比只能适用于2级或2级以上的因素,尽管有两个级别。

对比只能适用于2级或2级以上的因素,尽管有两个级别。
EN

Stack Overflow用户
提问于 2015-05-12 17:30:42
回答 1查看 2.3K关注 0票数 0

我正在尝试线性回归,并观察到,尽管我的所有因素列至少有两个级别,但我还是得到了这个错误。

我追踪到给出这个错误的列,这是该列的摘要。

代码语言:javascript
复制
> summary(df[,30])
    0     1  <NA>
31543    14     0

> unique(df[,30])
[1] 0 1
Levels: 0 1 <NA>

我还通过以下操作消除了所有具有安娜值的行

代码语言:javascript
复制
df = na.omit(df)

请注意,上面的NA是我使用addNA函数添加的一个额外的因子级别。

我该怎么解决这个问题?

编辑:我已经在上的公开分享中给出了一个可复制的例子。请从这里下载reproduce.RDS文件。

这是我正在使用的代码

代码语言:javascript
复制
df = readRDS('reproduce.RDS')
model = lm(formula = COL_101~.,data=traindf)
predict.lm(model, df[1:5,])

这是我的输出

代码语言:javascript
复制
> 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
EN

回答 1

Stack Overflow用户

发布于 2015-05-12 17:56:31

这不是一个完全的答案,虽然可能是,如果它最终证明了这个问题。我可以重新创建类似于您的数据,但可以这样做,如下所示。

代码语言:javascript
复制
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  
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30197727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档