Как да извърша ANOVA с един фактор в 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, използвайки горния набор от данни, получавам следните резултати:

въведете описание на изображението тук

Знам, че типичен формат в R е както следва:

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

И командата за извършване на ANOVA в R би била да се използва aov(group~measurement, data = mydata). Как да извърша еднофакторен ANOVA в R с проби, организирани по колона, а не по ред? С други думи, как да дублирам резултатите от Excel с помощта на R? Много благодаря за помощта.


person Borealis    schedule 07.01.2013    source източник
comment
Сбъркали сте командата anova... aov(measurement ~ group...   -  person John    schedule 08.01.2013


Отговори (1)


Подреждате ги в дългия формат:

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 Data Analysis Pack ANOVA създава изход, но не използва функция на Excel за този процес, така че когато промените данните в клетките с данни, от които са извлечени, и след това натиснете F9, или еквивалентната команда за преизчисляване на менюто, няма да има промяна в изходния раздел. Този и други източници на потребителски и числени проблеми са документирани в различни страници от усилията на Дейвид Хайзър да оцени проблемите на Excel със статистически изчисления: http://www.daheiser.info/excel/frontpage.html Хайзер започна усилията си, които сега продължават поне десетилетие, с очакването Microsoft да поеме отговорност за тези грешки, но те последователно са игнорирали неговите и усилията на другите за идентифициране на грешки и предлагане на по-добри процедури. Имаше и специален доклад от 6 раздела в изданието юни 2008 г. на „Computational Statistics & Data Анализ", редактиран от BD McCullough, които обхващат различни статистически проблеми с Excel.

person IRTFM    schedule 07.01.2013
comment
обикновено, когато злословите софтуера за такива големи грешки, вината е ваша :-) Резултатите са различни, защото използвате глупавите контрасти за лечение по подразбиране. Изключете ги до summary(lm(values ~ 0 + ind, mdat)) - person Tomas; 08.01.2013
comment
Имах предвид F-статистиката. Вярно е, че оценките могат да изглеждат различни с различни контрасти. И когато променя формулата, както предлагате, все още получавам отговор, различен от този, публикуван за Excel, както можеше да се предвиди чрез изчисляване на средните стойности в главата 4.4+.8 не е равно на оценката на Excel за средната стойност на „група b“ '. - person IRTFM; 08.01.2013
comment
Това е просто защото той вероятно е направил печатна грешка, ако го промените на b = c(3,6,8,3,8) и то дава 5,6 като средна стойност и 6,3 като дисперсия, и F статистиката и p-стойностите изведнъж също ще паснат. - person Tomas; 08.01.2013
comment
Сега, след като променихте теорията си за произхода на разликите, защо не отделите време да проучите първоначалното ми твърдение: че Excel е известен с това, че пренебрегва докладваните грешки в своите статистически методи. Направете търсене с Google, като използвате термините: статистически грешки в excel. Ще видите, че не злословя, а по-скоро съобщавам за широко известни, добре документирани опасения. - person IRTFM; 08.01.2013
comment
Е, мисля, че сега показах, че Excel дава същите резултати като R в този случай. Мисълта ми беше, че когато видите грешка в Excel, най-вероятно е вашата :-) може да е Excel, но в този случай бяхте твърде бързи - person Tomas; 08.01.2013
comment
Много благодаря за помощта и за разрешаването на този мой дългогодишен мъчителен въпрос. - person Borealis; 09.01.2013