2016-03-09 65 views
2

我正在做一个R中的单因子方差分析,这是我过去成功完成的。但是这次它不断地削减最后的变量。 我的数据是五列,CSV格式,数字从1-366。 样本如下:方差分析中的变量缺失R

w x y z all_data 
181 314 207 207 207 
176 315 207 207 207 
176 315 209 209 209 
176 315 209 209 209 
177 316 209 209 209 
177 149 209 209 209 
177 149 209 209 209 
278 154 209 209 209 
278 154 209 209 209 
278 154 209 209 209 
278 154 209 209 209 

当我进行方差分析,这是我的结果。

> xdata <- read.csv("xdata.csv") 
> wdatalm <- lm(all_data ~ w + x + y + z, data = xdata) 
> anova(wdatalm) 
Analysis of Variance Table 

Response: all_data 
        Df Sum Sq Mean Sq F value Pr(>F)  
w     1 1650752 1650752 5.2276e+31 < 2.2e-16 *** 
x     1 2947290 2947290 9.3335e+31 < 2.2e-16 *** 
y     1 9956250 9956250 3.1529e+32 < 2.2e-16 *** 
Residuals  7969  0  0       
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 
Warning message: 
In anova.lm(nocollm) : 
    ANOVA F-tests on an essentially perfect fit are unreliable 

我以不同的顺序再试了一遍,得到了一个不同的结果,仍然缺少最终变量。

> zdatalm <- lm(all_data ~ z + w + x + y, data = xdata) 
> anova(zdatalm) 
Analysis of Variance Table 

Response: all_data 
      Df Sum Sq Mean Sq F value Pr(>F)  
z    1 14554292 14554292 2.6457e+31 <2e-16 *** 
w    1  0  0 1.0400e-02 0.9188  
x    1  0  0 0.0000e+00 0.9961  
Residuals 7969  0  0      
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 
Warning message: 
In anova.lm(nocollm) : 
    ANOVA F-tests on an essentially perfect fit are unreliable 

关于错误信息,我不知道我的数据可能过于接近一个合适的,但似乎并不认为这应该会导致测试剪切变量。有什么办法可以阻止它这样做吗?

回答

3

这是因为列yz在您的数据集中(也与您的因变量btw)是完全共线的,这就是为什么其中一个将总是被丢弃,这取决于公式中的顺序。

> cor(xdata) 
#     w   x   y   z all_data 
#w   1.0000000 -0.6730963 0.3430370 0.3430370 0.3430370 
#x  -0.6730963 1.0000000 -0.5133621 -0.5133621 -0.5133621 
#y   0.3430370 -0.5133621 1.0000000 1.0000000 1.0000000 
#z   0.3430370 -0.5133621 1.0000000 1.0000000 1.0000000 
#all_data 0.3430370 -0.5133621 1.0000000 1.0000000 1.0000000 

否则,您的多元回归的系数估计值可能会因模型或数据的微小变化而发生显着变化。因此,您的模型可能无法给出关于任何单个预测变量的有效结果,或者关于哪些预测变量相对于其他变量是多余的。

2

的原因删除您的变量之一是不是适合的才是完美的,但是这两个变量是完美的副本(即它们是高度共线):

ano <-anova(wdatalm) 
aov(wdatalm) 
> ... 
> 1 out of 5 effects not estimable 
> ... 

当你更换“完美“随机预测还要高共线的变量,你仍然想念他们中的一个结果:

xdata$y <- xdata$z <- rnorm(nrow(xdata)) 
wdatalm <- lm(all_data ~ w + x + y + z, data = xdata) 
anova(wdatalm) 

..没有更多的警告有关近乎完美的配合,但:

aov(wdatalm) 
> ... 
> 1 out of 5 effects not estimable 
> ...