2016-03-09 202 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 
> ...