Как выполнить однофакторный ANOVA в R с образцами, организованными по строкам? - PullRequest
0 голосов
/ 31 мая 2018

У меня есть набор данных, где образцы сгруппированы по строкам.Это потому, что я работаю с разными копиями.Вот пример моего формата данных, где образец 1 находится в первой строке с его значениями 3-х копий (-5,11, -6,64, -2,44)

R1       R2      R3
-5.11   -6.64   -2.44
-4.77   -6.64    2.49
-6.64   -4.01    3.07
-6.64    0.66   -3.65
-3.06    2.7    -6.64
 3.26    3.23    1.64
 2.34    3.28    3.25
 3.14    0.79    3.18
 2.98    3.12   -6.64
-6.64   -1.85   -3.86

Что я хотел бы сделать, так этоАнализ ANOVA строка за строкой с использованием трех повторностей и нового столбца с p-значением.Вот как это будет выглядеть:

R1       R2      R3     p-value
-5.11   -6.64   -2.44   0.91    (1º anova)
-4.77   -6.64    2.49   0.006   (2º anova)
-6.64   -4.01    3.07   0.05    (3º anova)
-6.64    0.66   -3.65   0.0001
-3.06    2.7    -6.64   0.0006
 3.26    3.23    1.64   0.60
 2.34    3.28    3.25    ... 
 3.14    0.79    3.18    ...
 2.98    3.12   -6.64    ... 
-6.64   -1.85   -3.86    ...

Я пытался сделать это с Excel, но проблема в том, что Excel создает сводную таблицу, а не только результат.Для нескольких результатов это нормально, я копирую p-значение и копирую в четвертый столбец, но в этом случае у меня 13000 строк ...

Вот вам воспроизводимый пример:

R1 = c(-5.11,-4.77,-6.64,-6.64,-3.06,3.26,2.34)
R2 = c(-6.64,-6.64,-4.01,0.66,2.7,3.23,3.28)
R3 = c(-2.44,2.49,3.07,-3.65,-6.64,1.64,3.25)

mydata = data.frame(cbind(R1,R2,R3))

Я пытался использовать R для этого анализа, но я не нашел способ сделать это построчно.Единственный вариант, который я нашел, был по столбцу.

Заранее спасибо.

1 Ответ

0 голосов
/ 31 мая 2018

Используя найденный совет здесь , мы используем stack для создания кадра данных с одной value и одной переменной индикатора (ind), затем выполняем aov:

R1 = c(-5.11,-4.77,-6.64,-6.64,-3.06,3.26,2.34)
R2 = c(-6.64,-6.64,-4.01,0.66,2.7,3.23,3.28)
R3 = c(-2.44,2.49,3.07,-3.65,-6.64,1.64,3.25)

mydata = data.frame(cbind(R1,R2,R3))

mat <- t(mydata)
rownames(mat) <- NULL
colnames(mat) <- letters[seq_len(ncol(mat))]
df <- stack(as.data.frame(mat))

> head(df)
  values ind
1  -5.11   a
2  -6.64   a
3  -2.44   a
4  -4.77   b
5  -6.64   b
6   2.49   b

aov(values ~ ind, data = df)

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

Terms:
                     ind Residuals
Sum of Squares  164.5202  179.6335
Deg. of Freedom        6        14

Residual standard error: 3.582033
Estimated effects may be unbalanced

Если нам нужна дополнительная информация, мы также можем использовать anova(lm(...)):

test <- anova(lm(values ~ ind, data = df))
summary(test)

       Df         Sum Sq         Mean Sq         F value          Pr(>F)      
 Min.   : 6   Min.   :164.5   Min.   :12.83   Min.   :2.137   Min.   :0.1134  
 1st Qu.: 8   1st Qu.:168.3   1st Qu.:16.48   1st Qu.:2.137   1st Qu.:0.1134  
 Median :10   Median :172.1   Median :20.13   Median :2.137   Median :0.1134  
 Mean   :10   Mean   :172.1   Mean   :20.13   Mean   :2.137   Mean   :0.1134  
 3rd Qu.:12   3rd Qu.:175.9   3rd Qu.:23.77   3rd Qu.:2.137   3rd Qu.:0.1134  
 Max.   :14   Max.   :179.6   Max.   :27.42   Max.   :2.137   Max.   :0.1134  
                                              NA's   :1       NA's   :1  

Редактировать: ANOVA не даст вам одиночные p-значения, но lm:

сводка (лм (значения ~ ind, данные = df))

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

Residuals:
   Min     1Q Median     3Q    Max 
-4.307 -1.797 -0.440  0.550  5.597 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)  
(Intercept)   -4.730      2.068  -2.287   0.0383 *
indb           1.757      2.925   0.601   0.5577  
indc           2.203      2.925   0.753   0.4637  
indd           1.520      2.925   0.520   0.6114  
inde           2.397      2.925   0.819   0.4263  
indf           7.440      2.925   2.544   0.0234 *
indg           7.687      2.925   2.628   0.0199 *
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 3.582 on 14 degrees of freedom
Multiple R-squared:  0.478, Adjusted R-squared:  0.2543 
F-statistic: 2.137 on 6 and 14 DF,  p-value: 0.1134
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...