Рассчитать анализ отклонений между различными группами - PullRequest
0 голосов
/ 13 октября 2018

Как рассчитать анализ дисперсии между различными группами и посмотреть, больше ли он по сравнению с дисперсией в каждой группе, в R.

    M1      M2      M3      M4      M5      M6      M7                          
1   G1      G2      G3      G4      G5      G6      G7                          
2   20.49   22.94   23.06   16.9   16.72    20.65   21.66                           
3   23.62   22.15   20.05   22.48   19.32   18.79   20.37                           
4   20.51   21.16   22.47   22.48   25.66   21.25   21.93                           
5   15.09   20.98   13.9    19.79   20.74   14.05   20.14                           
6   21.75   21.11   19.32   19.56   25.82   18.39   20.23       

Это то, что я сделал.Это правильно?

g1<- c(20.49,23.62,20.51,15.09,21.75)
g2<-c(22.94,22.15,21.16,20.98,21.11)
g3<-c(23.06,20.05,22.47,13.9,19.32)
g4<-c(16.9,22.48,22.48,19.79,19.56)
g5<-c(16.72,19.32,25.66,20.74,25.82)
g6<-c(20.65,18.79,21.25,14.05,18.39)
g7<-c(21.66,20.37,21.93,20.14,20.23)
Combined_g<-data.frame(cbind(g1,g2,g3,g4,g5,g6,g7))
stacked_g<- stack(Combined_g)
Anova_results<- aov(values ~ ind, data = stacked_g)
summary(Anova_results)
Df Sum Sq Mean Sq F value Pr(>F)
ind          6  34.86   5.810    0.75  0.615
Residuals   28 216.92   7.747 

Ответы [ 2 ]

0 голосов
/ 14 октября 2018

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

Сначала загрузите данные во фрейм данных и используйте tidyr::gather() для преобразования в узкий формат.

rawData <- "G1      G2      G3      G4      G5      G6      G7                          
  20.49   22.94   23.06   16.9   16.72    20.65   21.66                           
   23.62   22.15   20.05   22.48   19.32   18.79   20.37                           
   20.51   21.16   22.47   22.48   25.66   21.25   21.93                           
   15.09   20.98   13.9    19.79   20.74   14.05   20.14                           
   21.75   21.11   19.32   19.56   25.82   18.39   20.23 "

data <- read.table(text=rawData,header=TRUE,stringsAsFactors=TRUE)
library(tidyr) # needed to convert to narrow format tidy data
narrowData <- gather(data,key="group")

После преобразования выведите первые несколько строк.

> head(narrowData)
  group value
1    G1 20.49
2    G1 23.62
3    G1 20.51
4    G1 15.09
5    G1 21.75
6    G2 22.94
> 

Теперь используйте функцию aov(), чтобы произвести дисперсионный анализ и распечатать сводную статистику модели.

aovModel <- aov(value ~ group,data=narrowData)
aovModel
summary(aovModel)

... и вывод:

> aovModel
Call:
   aov(formula = value ~ group, data = narrowData)

Terms:
                    group Residuals
Sum of Squares   34.86206 216.92436
Deg. of Freedom         6        28

Residual standard error: 2.783397
Estimated effects may be unbalanced
> summary(aovModel)
            Df Sum Sq Mean Sq F value Pr(>F)
group        6  34.86   5.810    0.75  0.615
Residuals   28 216.92   7.747               
> 

Интерпретация результатов

Анализ дисперсии проверяет следующие гипотезы:

  • Нулевая гипотеза: среднее (группа1) = среднее (группа2) = ... = среднее (group7)
  • Альтернативная гипотеза: средние значения не равны во всех группах

Если бы мы были готовы принять 5% -ную вероятность ошибки типа 1 (отвергая нулевую гипотезу, когда онадействительно верно), мы бы установили область отклонения на р = 0,05.

Поскольку значение p для F-критерия однородности отклонений больше 0,05, мы не можем отвергнуть нулевую гипотезу о том, что средние значения равны.

0 голосов
/ 13 октября 2018

Вам необходимо иметь данные в длинном формате, например:

value factor 
20.49 G1
23.62 G1
...
22.94 G2
...
20.23 G7

, а затем вы можете использовать функцию aov

fit <- aov(value ~ factor, data=yourdataframe) 
summary(fit)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...