如何用R组织的样本在R中执行单因子方差分析?

时间:2018-05-31 08:27:23

标签: r anova

我有一个数据集,其中样本按行分组。这是因为我正在处理不同的重复。以下是我的数据格式示例,其中示例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

我想做的是使用3次重复逐行进行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 :(得分:2)

根据here找到的建议,我们使用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会:

摘要(lm(values~ind,data = 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