我有一个数据集,其中样本按行分组。这是因为我正在处理不同的重复。以下是我的数据格式示例,其中示例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来进行此分析,但我没有找到逐行的方法。我发现的唯一选择是按列。
提前谢谢你。
答案 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