Как выполнить однофакторный дисперсионный анализ в 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))

Когда я выполняю однофакторный дисперсионный анализ в Excel с использованием указанного выше набора данных, я получаю следующие результаты:

введите описание изображения здесь

Я знаю, что типичный формат в R выглядит следующим образом:

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

И команда для выполнения ANOVA в R будет использовать aov(group~measurement, data = mydata). Как выполнить однофакторный дисперсионный анализ в 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.

Изменить в ответ на комментарии: процедура ANOVA пакета анализа данных Excel создает выходные данные, но не использует функцию Excel для этого процесса, поэтому, когда вы изменяете данные в ячейках данных, из которых они были получены, а затем нажимаете F9, или эквивалентной команде пересчета меню, в разделе вывода изменений не будет. Этот и другие источники пользовательских и числовых проблем задокументированы на различных страницах, посвященных усилиям Дэвида Хейзера по оценке проблем Excel с помощью статистических вычислений: http://www.daheiser.info/excel/frontpage.html Хайзер начал свои усилия, рассчитанные на десятилетие, с ожиданием, что Microsoft возьмет на себя ответственность за эти ошибки, но они постоянно игнорировали его и другие усилия по выявлению ошибок и предложению более эффективных процедур. Также был специальный отчет из 6 разделов в июньском выпуске журнала "Computational Statistics & Data" 2008 г. Анализ » под редакцией Б.Д. Маккаллоу, в которой рассматриваются различные статистические проблемы с помощью Excel.

person IRTFM    schedule 07.01.2013
comment
Обычно, когда вы ругаете программу за такие большие ошибки, это ваша вина :-) Результаты разные, потому что вы используете глупые контрасты обработки по умолчанию. Выключите их на summary(lm(values ~ 0 + ind, mdat)) - person Tomas; 08.01.2013
comment
Я имел в виду F-статистику. Верно, что оценки могут отличаться на разных контрастах. И когда я изменяю формулу, как вы предлагаете, я все равно получаю другой ответ, чем тот, который был опубликован для Excel, что можно было бы предсказать, вычислив средние в головах 4,4 + 0,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