首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中ANOVA中缺少变量

R中ANOVA中缺少变量
EN

Stack Overflow用户
提问于 2016-03-09 21:01:05
回答 2查看 1.6K关注 0票数 2

我正在做R中的单向方差分析,我过去做过成功的。但是,这一次它不断地去掉最后一个变量。我的数据是CSV中的五列,数字从1到366。示例如下所示:

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

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

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

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

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

关于错误消息,我知道我的数据可能太接近了,但这似乎不应该导致测试去掉一个变量。有什么方法可以阻止它这样做吗?

EN

回答 2

Stack Overflow用户

发布于 2016-03-09 21:16:13

这是因为列yz在您的数据集中彼此完全共线(也与您的依赖变量btw),这就是为什么它们中的一个总是会被删除,这取决于您的公式中的顺序。

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

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

票数 3
EN

Stack Overflow用户

发布于 2016-03-09 21:17:17

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

代码语言:javascript
复制
ano <-anova(wdatalm)
aov(wdatalm)
> ...
> 1 out of 5 effects not estimable
> ...

当你用随机但高度共线的变量替换“完美”的预测器时,你仍然会在结果中遗漏其中的一个:

代码语言:javascript
复制
xdata$y <- xdata$z <- rnorm(nrow(xdata))
wdatalm <- lm(all_data ~ w + x + y + z, data = xdata)
anova(wdatalm)

。。不再对近乎完美的拟合发出警告,但是:

代码语言:javascript
复制
aov(wdatalm)
> ...
> 1 out of 5 effects not estimable
> ...
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35892360

复制
相关文章

相似问题

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