标准stats::kruskal.test模块允许计算数据集上的kruskal-wallis测试:
>>> data(diamonds)
>>> kruskal.test(price~carat, data=diamonds)
Kruskal-Wallis rank sum test
data: price by carat by color
Kruskal-Wallis chi-squared = 50570.15, df = 272, p-value < 2.2e-16这是正确的,它给了我一个概率,数据中的所有组都具有相同的平均值。
然而,我想知道每一对比较的细节,比如当你要求进行Kruskal测试时,颜色D和E的钻石是否具有相同的平均价格,就像其他一些软件(SPSS)一样。
我在包pgirmess中找到了kruskalmc,它允许我做我想做的事情:
> kruskalmc(diamonds$price, diamonds$color)
Multiple comparison test after Kruskal-Wallis
p.value: 0.05
Comparisons
obs.dif critical.dif difference
D-E 571.7459 747.4962 FALSE
D-F 2237.4309 751.5684 TRUE
D-G 2643.1778 726.9854 TRUE
D-H 4539.4392 774.4809 TRUE
D-I 6002.6286 862.0150 TRUE
D-J 8077.2871 1061.7451 TRUE
E-F 2809.1767 680.4144 TRUE
E-G 3214.9237 653.1587 TRUE
E-H 5111.1851 705.6410 TRUE
E-I 6574.3744 800.7362 TRUE
E-J 8649.0330 1012.6260 TRUE
F-G 405.7470 657.8152 FALSE
F-H 2302.0083 709.9533 TRUE
F-I 3765.1977 804.5390 TRUE
F-J 5839.8562 1015.6357 TRUE
G-H 1896.2614 683.8760 TRUE
G-I 3359.4507 781.6237 TRUE
G-J 5434.1093 997.5813 TRUE
H-I 1463.1894 825.9834 TRUE
H-J 3537.8479 1032.7058 TRUE
I-J 2074.6585 1099.8776 TRUE然而,这个包只允许一个类别变量(例如,我不能研究按颜色和克拉分类的价格,就像我对kruskal.test所做的那样),并且我不知道关于pgirmess包的任何事情,无论它是否得到维护,或者是否经过测试。
你能推荐一个包来执行Kruskal-Wallis测试,它会返回每次比较的详细信息吗?你会如何处理这个问题?
发布于 2010-03-21 00:39:14
除了Marek提到的kruskal::agricolae之外,另一种方法是使用multcomp的硬币包中的oneway_test帮助页面中实现的Nemenyi-Damico-Wolfe-Dunn测试。使用hadley的设置并减少B= ()函数的近似值,使其在有限时间内完成:
#updated translation of help page implementation of NDWD
NDWD <-
independence_test(dv ~ iv, data = sum_codings1, distribution = approximate(B = 10000),
ytrafo = function(data) trafo(data, numeric_trafo = rank_trafo),
xtrafo = mcp_trafo(iv = "Tukey"))
### global p-value
print(pvalue(NDWD))
### sites (I = II) != (III = IV) at alpha = 0.01 (page 244)
print(pvalue(NDWD, method = "single-step"))在较大的数据集上获得更稳定的结果可能需要增加B值并增加用户的耐心。
Jan: 2012:最近在R-help上有一篇帖子声称这种方法产生了意想不到的结果,所以我把那封电子邮件转发给了维护者。Mark Difford说,他已经确认了这些问题,并提供了nparcomp包的替代测试:https://stat.ethz.ch/pipermail/r-help/2012-January/300100.html
在同一周内,还有一些关于rhelp的其他建议,用于后期对比KW测试: kruskalmc suggested by Mario Garrido Escudero 和rms::polr,然后是Frank Harrell https://stat.ethz.ch/pipermail/r-help/2012-January/300329.html建议的rms::contrasts。
2015年11月:同意toto_tico的观点,即硬币包的帮助页面代码在其间发生了变化。?independence_test帮助页面现在提供了一个多变量KW测试,并且?oneway_test帮助页面已经用上面使用independence_test函数的代码替换了它的早期实现。
发布于 2015-12-20 23:24:39
您可以使用PMCMR包。There是关于它的更多信息。
Spelling_Grades <- c(90,87,89,90,75,88,97,99,78,85,72,76,77,79,70)
Methods <- c("A","A","A","A","B","B","B","B","B","B","C","C","C","C","C")
kruskalmc(Spelling_Grades~Methods)
#This method doesn't accept characters that's why I've changed the methods to integer
Methods <- c(1,1,1,1,2,2,2,2,2,2,3,3,3,3,3)
posthoc.kruskal.nemenyi.test(Spelling_Grades~Methods) 上面的两种方法给出了相同的结果。
发布于 2010-03-20 06:56:11
我原以为你能做到以下几点:
data(diamonds, package = "ggplot2")
library(coin)
library(multcomp)
kt <- kruskal_test(price ~ clarity, data = diamonds)
glht(kt, mcp(clarity = "Tukey"))但是看起来multcomp不支持coin对象(还没有?)。
https://stackoverflow.com/questions/2478272
复制相似问题