R中ANOVA中缺少变量

时间:2016-03-09 13:01:05

标签: r anova

我在R中进行单向ANOVA,这是我过去成功完成的。但是这次它不断削减最终变量。 我的数据是CSV中的五列,数字为1-366。 示例如下所示:

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

当我执行ANOVA时,这是我的结果。

> 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

关于错误消息,我确实知道我的数据可能太贴合了,但似乎这不应该导致测试切出变量。我有什么方法可以阻止它这样做吗?

2 个答案:

答案 0 :(得分: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

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

答案 1 :(得分:2)

删除其中一个变量的原因并不是拟合是完美的,而是两个变量是完美的副本(即它们是高度共线的):

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

当您更换&#34;完美&#34;具有随机变量和高共线变量的预测变量,您仍然会在结果中遗漏其中一个:

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
> ...