我用kruskal.test测试了不同取样点的丰度值的差异。但是,我想确定站点之间的多重差异。
dunn.test函数可以选择使用带有分类向量的向量数据,或者使用公式表达式作为lm。
我以在有许多列的数据框架中使用的方式编写函数,但我没有找到证实我的过程的示例。
library(dunn.test)
df<-data.frame(a=runif(5,1,20),b=runif(5,1,20), c=runif(5,1,20))
kruskal.test(df)
dunn.test(df)我的结果是:
Kruskal-Wallis chi-平方= 6.02,df = 2,p-值= 0.04929 Kruskal-Wallis chi-平方= 6.02,df = 2,p-值= 0.05,按1到2 2.050609,0.0202在1和3 -0.141421之间,0.4438在2 -2.192031,0.0142之间。
发布于 2018-04-21 05:32:02
我看了你的代码,你就很接近了。一个问题是,您应该使用method参数指定一个用于多个比较的校正方法。
校正多个比较
对于您的示例数据,我将使用变体的错误发现率(FDR)。我认为这是数据良好表现的原因超出了StackOverflow的范围,但是您可以阅读更多关于它和其他纠正方法的here。我还建议你阅读相关的报纸,其中大部分是开放访问的。
library(dunn.test)
set.seed(711) # set pseudorandom seed
df <- data.frame(a = runif(5,1,20),
b = runif(5,1,20),
c = runif(5,1,20))
dunn.test(df, method = "by") # correct for multiple comparisons using "B-Y" procedure
# Output
data: df and group
Kruskal-Wallis chi-squared = 3.62, df = 2, p-value = 0.16
Comparison of df by group
(Benjamini-Yekuteili)
Col Mean-|
Row Mean | 1 2
---------+----------------------
2 | 0.494974
| 0.5689
|
3 | -1.343502 -1.838477
| 0.2463 0.1815
alpha = 0.05
Reject Ho if p <= alpha/2解释结果
每个单元格中的第一行为每个比较提供Dunn的成对z测试统计数据,第二行提供校正后的p值。
注意,经过多次比较修正后,在alpha值为0.05的情况下,没有一个配对测试是显着的,这并不奇怪,因为每个示例“站点”都是由完全相同的发行版生成的。我希望这是有帮助的。快乐的分析!
P.S.在未来,如果要使用runif (或任何其他类型的伪随机数生成)构造示例数据格式,则应该使用set.seed()。此外,如果您还有其他有关统计分析的问题,最好访问:https://stats.stackexchange.com/
https://stackoverflow.com/questions/49950604
复制相似问题