2013-01-07 14 views
6

Mam zestaw danych, w którym próbki są pogrupowane według kolumn. Poniższy przykładowy zestaw danych jest podobny do formatu moich Danych:Jak wykonać pojedynczy czynnik ANOVA w R z próbkami zorganizowanymi przez kolumnę?

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

Kiedy wykonać pojedynczy czynnik ANOVA w programie Excel przy użyciu powyższego zestawu danych, uzyskać następujące wyniki:

enter image description here

Znam typowy Format w badania jest następujący:

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

i polecenie, aby wykonać ANOVA w R byłoby użyć aov(group~measurement, data = mydata). Jak wykonać ANOVA z pojedynczym czynnikiem w R z próbkami uporządkowanymi według kolumny zamiast wiersza? Innymi słowy, w jaki sposób mogę powielić wyniki Excela za pomocą R? Wielkie dzięki za pomoc.

+1

zmienić kształt danych! – mnel

+2

Masz błędną komendę anova ... 'aov (measurement ~ group ...' – John

Odpowiedz

11

można układać je w długim formacie:

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 

Biorąc pod uwagę ostrzeżenie może być bezpieczniejsze w użyciu 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 

I proszę nie pytaj mnie dlaczego Excel daje inną odpowiedź . Zwykle Excel okazał się wysoce niewiarygodny, jeśli chodzi o statystyki. W Excelu znajduje się wyjaśnienie, dlaczego nie daje odpowiedzi porównywalnych z R.

Edytuj w odpowiedzi na komentarze: Procedura ANOVA w pakiecie Analizy danych programu Excel tworzy dane wyjściowe, ale nie używa w tym procesie funkcji programu Excel, więc po zmianie danych w komórkach danych, z których zostały wyprowadzone, a następnie naciśnięciu klawisza F9 lub równoważnego polecenia ponownego obliczania menu, nie będzie żadnych zmian w sekcji wyjściowej. Te i inne źródła problemów użytkowników i liczb są udokumentowane na różnych stronach prób Davida Heisera w ocenie problemów Excela z obliczeniami statystycznymi: http://www.daheiser.info/excel/frontpage.html Heiser rozpoczął swoje wysiłki, które trwają teraz co najmniej dziesięć lat, z oczekiwaniem, że Microsoft wziąłby na siebie odpowiedzialność za te błędy, ale konsekwentnie ignorowali jego i innych wysiłki na rzecz identyfikacji błędów i proponowania lepszych procedur. W artykule June 2008 issue of "Computational Statistics & Data Analysis" opracowanym przez firmę BD McCullough opublikowano także specjalny raport dotyczący różnych problemów statystycznych związanych z programem Excel.

+0

Zwykle, gdy oprogramowanie badmouth na tak duże błędy, to twoja wina :-) Wyniki są różne, ponieważ używasz głupiego domyślnego traktowania kontrasty. Wyłącz je przez 'summary (lm (value ~ 0 + ind, mdat))' – TMS

+0

Miałem na myśli statystykę F. To prawda, że ​​szacunki mogą wyglądać inaczej, z różnymi kontrastami. A gdy zmienię formułę zgodnie z sugestią, nadal otrzymuję inną odpowiedź niż ta opublikowana dla programu Excel, ponieważ można było przewidzieć, obliczając środki w nagłówkach 4,4 + .8, które nie są równe szacunkowi Excela dla średniej z 'grupy b ". –

+1

To dlatego, że prawdopodobnie popełnił literówkę, jeśli zmienisz ją na "b = c (3,6,8,3,8)" i daje ona 5,6 jako średnią i 6,3 jako wariancję, a statystyki F i p- wartości również będą nagle pasować. – TMS