如何将 dunn.test 应用于 R 中的数据帧?

Posted

技术标签:

【中文标题】如何将 dunn.test 应用于 R 中的数据帧?【英文标题】:How to apply dunn.test for dataframes in R? 【发布时间】:2020-02-16 17:21:29 【问题描述】:

我有一个包含两列的 CSV 文件:组和重量。 我能够进行 Kruskal–Wallis 检验:

kruskal.test(Weight~Group, data=Data.df)

我想计算与对照组的成对多重比较(有不同的处理方法)。我试过dunn.test.control,但我只得到错误。我认为我没有正确使用该命令。

知道我做错了什么吗?随意展示一个例子!

【问题讨论】:

随时向我们展示您的数据示例)))您可以使用dput() 【参考方案1】:

如果您包含一些数据(或使用 R 中已有的数据说明您的问题(请参阅data()),您将获得更好的响应,显示无效的代码和错误消息,并指出什么打包给你带来麻烦的函数来自于dunn.test.control不包含在R中,而是包含在PMCMR包中。例如,我们可以使用R中包含的iris数据集(?iris获取信息):

kruskal.test(Sepal.Width~Species, iris)
#
#   Kruskal-Wallis rank sum test
#
# data:  Sepal.Width by Species
# Kruskal-Wallis chi-squared = 63.571, df = 2, p-value = 1.569e-14

表明存在显着差异。现在进行 Dunn 测试:

library(PMCMR)
dunn.test.control(iris$Sepal.Width, iris$Species)
#
#   Pairwise comparisons using Dunn's-test for multiple 
#                         comparisons with one control
#
# data: iris$Sepal.Width and iris$Species
#
#           setosa 
# versicolor 1.4e-14
# virginica  7.7e-08

没有错误消息,因此您可能没有正确指定测试。但这不是成对测试。你可能想要

posthoc.kruskal.dunn.test(iris$Sepal.Width, iris$Species)
# 
#   Pairwise comparisons using Dunn's-test for multiple 
#                          comparisons of independent samples
# 
# data: iris$Sepal.Width and iris$Species
# 
#            setosa  versicolor
# versicolor 2.0e-14 -         
# virginica  1.5e-07 0.016     
# 
# P value adjustment method: holm
# Warning message:
# In posthoc.kruskal.dunn.test.default(iris$Sepal.Width, iris$Species) :
#   Ties are present. z-quantiles were corrected for ties.

注意警告信息。测试运行,但无法计算确切的概率,因为存在并列等级。其中两个比较非常小,除非您的样本量很小,否则平局不是一个因素。我更喜欢DescTools 中的测试版本,因为它还显示了每对之间的平均排名差异:

library(DescTools)
DunnTest(Sepal.Width~Species, iris)
# 
#  Dunn's test of multiple comparisons using rank sums : holm  
# 
#                      mean.rank.diff    pval    
# versicolor-setosa            -67.38 2.0e-14 ***
# virginica-setosa             -46.50 1.5e-07 ***
# virginica-versicolor          20.88  0.0158 *  
# ---
# Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

【讨论】:

以上是关于如何将 dunn.test 应用于 R 中的数据帧?的主要内容,如果未能解决你的问题,请参考以下文章

posthoc.kruskal.dunn.test 和 dunn.test 之间的区别

如何从 R 中的数据帧创建具有多个参数的函数列表?

如何在 R 中的单个数据帧上迭代地应用函数?

加速R应用于数据帧

如何将多个功能应用于dask数据帧的多个块?

如何使用 R 中的条件语句将数据帧拆分为多个数据帧