我正在做R中的单向方差分析,我过去做过成功的。但是,这一次它不断地去掉最后一个变量。我的数据是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当我执行方差分析时,这是我的结果。
> 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关于错误消息,我知道我的数据可能太接近了,但这似乎不应该导致测试去掉一个变量。有什么方法可以阻止它这样做吗?
发布于 2016-03-09 21:16:13
这是因为列y和z在您的数据集中彼此完全共线(也与您的依赖变量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否则,多元回归的系数估计可能会因模型或数据中的微小变化而发生显着变化。因此,您的模型可能不会给出关于任何单个预测器的有效结果,或者关于哪些预测器相对于其他预测器是多余的。
发布于 2016-03-09 21:17:17
删除其中一个变量的原因不是因为拟合是完美的,而是因为两个变量是完美的副本(即它们高度共线):
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
> ...https://stackoverflow.com/questions/35892360
复制相似问题