2013-01-07 62 views
6

我有一個數據集,其中的樣本按列分組。下面的示例數據集類似於我的數據的格式:如何對R中的單因子方差分析進行樣本按列組織?

a = c(1,3,4,6,8) 
b = c(3,6,8,3,6) 
c = c(2,1,4,3,6) 
d = c(2,2,3,3,4) 

mydata = data.frame(cbind(a,b,c,d)) 

當我執行ANOVA在Excel中使用上述數據集中的單一因素,我得到如下結果:

enter image description here

我知道中的R典型格式如下:

group measurement 
a  1 
a  3 
a  4 
.  . 
.  . 
.  . 
d  4 

而對於R中進行ANOVA命令是使用aov(group~measurement, data = mydata)如何在R中進行單因素方差分析,樣品是按列而不是按行組織的?換句話說,我如何複製使用R的Excel結果?非常感謝您的幫助。

+1

重塑數據! – mnel

+2

你有anova命令錯誤......'aov(測量〜組...' – John

回答

11

你將它們堆疊在長格式:

mdat <- stack(mydata) 
mdat 
    values ind 
1  1 a 
2  3 a 
3  4 a 
4  6 a 
5  8 a 
6  3 b 
7  6 b 
snipped output 

> aov(values ~ ind, mdat) 
Call: 
    aov(formula = values ~ ind, data = mdat) 

Terms: 
       ind Residuals 
Sum of Squares 18.2  65.6 
Deg. of Freedom 3  16 

Residual standard error: 2.024846 
Estimated effects may be unbalanced 

考慮到它可能是更安全的警告使用lm

> anova(lm(values ~ ind, mdat)) 
Analysis of Variance Table 

Response: values 
      Df Sum Sq Mean Sq F value Pr(>F) 
ind  3 18.2 6.0667 1.4797 0.2578 
Residuals 16 65.6 4.1000    
> summary(lm(values~ind, mdat)) 

Call: 
lm(formula = values ~ ind, data = mdat) 

Residuals: 
    Min  1Q Median  3Q Max 
-3.40 -1.25 0.00 0.90 3.60 

Coefficients: 
      Estimate Std. Error t value Pr(>|t|)  
(Intercept) 4.4000  0.9055 4.859 0.000174 *** 
indb   0.8000  1.2806 0.625 0.540978  
indc   -1.2000  1.2806 -0.937 0.362666  
indd   -1.6000  1.2806 -1.249 0.229491  
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 2.025 on 16 degrees of freedom 
Multiple R-squared: 0.2172, Adjusted R-squared: 0.07041 
F-statistic: 1.48 on 3 and 16 DF, p-value: 0.2578 

請不要問我爲什麼Excel中給出了不同的答案。在統計數據方面,Excel通常被證明是非常不可靠的。 Excel中的責任是解釋爲什麼它不能給出與R相媲美的答案。

編輯回覆評論:Excel數據分析包ANOVA過程創建輸出,但它不使用Excel函數進行該過程,所以當您更改從其派生出的數據單元格中的數據,然後按下F9或等效的菜單重新計算命令時,輸出部分將不會發生變化。 David Heiser通過統計計算來評估Excel的問題時,各種頁面上都記錄了這些以及其他用戶和數值問題的來源:http://www.daheiser.info/excel/frontpage.html Heiser開始了他的努力,現在至少有十年之久,希望微軟能夠承擔責任對於這些錯誤,但他們一直忽視他和他人在識別錯誤​​和提出更好程序方面的努力。 BD McCullough編輯的June 2008 issue of "Computational Statistics & Data Analysis"中還有6節特別報告,其中涵蓋了Excel的各種統計問題。

+0

通常情況下,當你對這樣的大錯誤使用badmouth軟件,這是你的錯:-)結果是不同的,因爲你使用愚蠢的默認處理形成鮮明對比。用'summary(lm(values〜0 + ind,mdat))來關閉它們'' – TMS

+0

我指的是F統計量。誠然,估計可能會出現不同的對比。當我改變公式時,你建議我仍然得到一個不同的答案,而不是Excel中發佈的答案,這可以通過計算頭部中的平均值來預測。4.4 + .8不等於'b組平均值的Excel估計值」。 –

+1

這只是因爲如果你把它改爲'b = c(3,6,8,3,8)',他可能犯了一個錯誤,並且它的平均值爲5.6,方差爲6.3,F統計量和p-價值觀也會突然適合。 – TMS