如何在 R 中获得 Kruskal-Wallis 检验的精确 p 值?
Posted
技术标签:
【中文标题】如何在 R 中获得 Kruskal-Wallis 检验的精确 p 值?【英文标题】:How to obtain the exact p-value of a Kruskal-Wallis test in R? 【发布时间】:2020-09-09 21:51:50 【问题描述】:如何在 R 中获得 Kruskal-Wallis(例如 3 组)检验的准确 p 值?
数据示例:
df <- data.frame(
dv = c(0.80, 0.83, 1.89, 1.04, 1.45, 1.38, 1.91, 1.64, 0.73, 1.46,
1.15, 0.88, 0.90, 0.74, 1.21),
group = factor(rep(c("A", "B", "C"), c(5, 5, 5))))
我使用kruskal_test
函数尝试了coin
包
kruskal_test(dv ~ group, data = df,distribution= "exact")
虽然产生了错误:
Error in .local(object, ...) : ‘object’ is not a two-sample problem
如果我将"exact"
更改为"approximate"
,它会运行,但它不是确切的分布...
有什么想法吗?
【问题讨论】:
也许你需要一个配对测试 试试combn(levels(df$group), 2, FUN = function(x) kruskal_test(dv ~ group, data = subset(df, group %in% x), distribution = 'exact'), simplify = FALSE)
你试过stats::kruskal.test(dv ~ group, data = df)
吗?
@duckmayr,是的,对不起,你是对的,我不知何故在kruskal.test
和ks.test
之间感到困惑。我的kruskal.test
方法也取得了成功。
不用担心@IanCampbell!我们都会时不时转身
【参考方案1】:
您收到错误的原因是您只能准确计算两个样本问题的分布。
来自help("kruskal_test")
:
...分布可以通过蒙特卡洛重采样来近似,或者通过将分布分别设置为“近似”或“精确”来精确计算单变量双样本问题。
【讨论】:
好吧,如果我设置为"approximate"
它确实有效。所以这仅适用于 "exact"
选项。
@Sinval 我发现了一些关于 SAS 精确方法的论文,但我找不到在 R 中实现的任何东西。如果这个答案没有帮助,我可以删除它。
谢谢,我知道IBM SPSS Statistics Exact Tests
模块也设法获得那些精确的 p 值。我真的很想使用 R,因为我和我的学生一起使用了 exams
包。我希望他们检查确切的 p 值表,然后将它们插入 Moodle 考试平台。将这些值与使用 R 生成的值进行比较之后...以上是关于如何在 R 中获得 Kruskal-Wallis 检验的精确 p 值?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Kruskal-Wallis 秩和检验的 kruskalmc 的 R pgirmess 替代方案
带有调整 p 值的 R 的 Kruskal-Wallis 检验