我试图用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
对不起,我无法提供完整的数据集,因为这是我正在进行的一项医学研究,我无法弥补一个微不足道的例子。
还有什么可能导致此错误?我该在哪里开始寻找? 感谢。
答案 0 :(得分:1)
我今天遇到了同样的问题,这是由于许多缺失的值。
基本上,即使原始数据框df
仅包含&gt; = 2级别的因素,当您在df
内使用lm()
时,不完整的观察结果也会被删除(至少是关于你感兴趣的变量)。因此,df
不需要检查&lt; 2级别但df[complete.cases(df),]
的因子。在该数据框中,至少有一个因子变量只剩下1个级别(检查levels(droplevels(x))
)。
我猜你们已经解决了这个问题,但未来可能会对其他人有所帮助!