带有数字变量的`对比度<-`(`*tmp*`,value = contr.funs[1 + isOF[nn]])中的错误[重复]
Posted
技术标签:
【中文标题】带有数字变量的`对比度<-`(`*tmp*`,value = contr.funs[1 + isOF[nn]])中的错误[重复]【英文标题】:Error in `contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) with a numeric variable [duplicate] 【发布时间】:2015-06-16 03:42:10 【问题描述】:我正在尝试使用 Amelia
包估算一个大型数据集。调用amelia
函数时出现此错误:
Error in `contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) :
contrasts can be applied only to factors with 2 or more levels
因为我没有 1 级的因子变量,所以我开始为变量删除变量,以查看是哪个变量导致了这个问题。我追踪到这个数值变量,当我从数据集中删除这个单个变量时,amelia 工作:
> str(train$ABC)
num [1:1600] 5.19 5.38 5.59 5.26 5.12 ...
但是这个变量并没有什么奇怪的:
> summary(train$ABC)
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
4.533 5.166 5.328 5.434 5.557 7.914 610
> summary(na.omit(train))
ABC ...
Min. :4.533
1st Qu.:5.196
Median :5.384
Mean :5.512
3rd Qu.:5.668
Max. :7.520
> var(train$ABC,na.rm=T)
[1] 0.1969697
> aa <- na.omit(train)
> var(aa$ABC)
[1] 0.2500173
很抱歉,我无法提供完整的数据集,因为这是我正在进行的一项医学研究,我无法举出一个简单的例子。
还有什么可能导致此错误?我应该从哪里开始寻找? 谢谢。
【问题讨论】:
你解决了吗?我也有同样的问题... 【参考方案1】:我今天遇到了同样的问题,这是由于许多缺失值造成的。
基本上,即使您的原始数据框 df
仅包含具有 >=2 水平的因子,当您在 lm()
中使用 df
时,不完整的观察值也会被删除(至少是与您感兴趣的变量有关的观察值)。因此,您需要检查的不是df
,而是df[complete.cases(df),]
。在该数据框中,至少一个因子变量将仅保留 1 个级别(检查 levels(droplevels(x))
)。
我猜你们已经解决了它,但也许它会在未来帮助其他人!
【讨论】:
以上是关于带有数字变量的`对比度<-`(`*tmp*`,value = contr.funs[1 + isOF[nn]])中的错误[重复]的主要内容,如果未能解决你的问题,请参考以下文章
`contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) 中的错误:对比只能应用于具有 2 个或更多级别的因子