各种 Kruskal-Wallis 事后测试有什么区别?

机器算法验证 r 事后 克鲁斯卡尔-沃利斯测试
2022-04-12 05:56:41

[这里似乎有很多类似的问题,所以如果已经回答,请指出正确的方向,但我认为这是合理的区分。]

在 Kruskal-Wallis 测试之后,有许多不同的事后分析实现。我试图了解它们是如何(为什么?)不同的,以了解何时一个可能是正确的选择。

在 R 中工作,考虑这个模拟数据集

generate.sim.data<-function(seed){
 set.seed(seed)
 sim1<-rnorm(20,4,3)
 sim2<-rnorm(20,7,3)
 sim3<-rnorm(20,1,3)
 sim4<-rnorm(20,1,3)
 simdata<-c(sim1,sim2,sim3,sim4)
 simgroup<-c(rep(c("sim1","sim2","sim3","sim4"),each=20))
 data.frame(simdata,simgroup)
}

kruskal包中的功能agricolaekruskalmcin the package pgirmessposthoc.kruskal.nemenyi.testin the packagePMCMRdunn.testin the packagedunn.test都给出不同的统计信息(对于任何输入)。对于某些值,它们还在成对比较中给出不同的结果

  sim<-generate.sim.data(123)
  kruskal(sim$simdata,sim$simgroup,console=T)               #a,b,c,c
  kruskalmc(sim$simdata,sim$simgroup)                       #a,a,b,b
  posthoc.kruskal.nemenyi.test(sim$simdata,sim$simgroup)    #a,a,b,b
  dunn.test(sim$simdata,sim$simgroup)                       #a,b,c,c

但在一些更明确的情况下同意:

  sim<-generate.sim.data(321)
  kruskal(sim$simdata,sim$simgroup,console=T)               #a,a,b,b
  kruskalmc(sim$simdata,sim$simgroup)                       #a,a,b,b
  posthoc.kruskal.nemenyi.test(sim$simdata,sim$simgroup)    #a,a,b,b
  dunn.test(sim$simdata,sim$simgroup)                       #a,a,b,b

似乎kruskalmcandposthoc.kruskal.nemenyi.test无论如何都会给出相似的结果,并且kruskalanddunn.test往往会给出相似的结果,但后者并非总是如此,例如

  sim<-generate.sim.data(4444)
  kruskal(sim$simdata,sim$simgroup,console=T)               #a,b,c,c
  kruskalmc(sim$simdata,sim$simgroup)                       #ac,a,b,bc
  posthoc.kruskal.nemenyi.test(sim$simdata,sim$simgroup)    #ac,a,b,bc
  dunn.test(sim$simdata,sim$simgroup)                       #ac,b,c,c

我意识到我对基于非常接近 0.05 的 p 值的测试的一些不同行为持怀疑态度,但这些测试也确实为真实数据集提供了不同的诊断(例如,observation~method来自 中的corn数据agricolaeoccupation~eligibility来自 中的homecare数据dunn.test)。我想知道测试之间的潜在差异是什么,以及是否有一个合理的标准来选择一个而不是另一个。

2个回答

了解这些测试实现的不同之处需要了解实际的测试统计数据本身。

例如,使用与dunn.testKruskal - Wallis检验中使用的相同秩和由 Kruskal-Wallis 的原假设隐含的合并方差估计(类似于使用合并方差来计算方差分析后的t检验统计量)。

相比之下,实现的 Kruskal-Nemenyi 检验posthoc.kruskal.nemenyi.test基于Studentized range distributionχ2分布取决于用户的选择。

包中的kruskalmc函数按照Siegel 和 Castellan (1988) 的指导使用zpgirmess检验统计量实现了 Dunn 的事后秩和比较,但这些作者不包括 Dunn (1964) 对 ties 的校正,因此不如在数据。kruskalmcdunn.test

从文档中很难辨别kruskal作者是否使用了 Conover-Iman t近似来进行秩和差异的分布(类似于 Dunn 检验,但要求拒绝 Kruskal-Wallis,并且更强大)。简短地看一下代码并没有立即让我尖叫出Conover-Iman,但是,这很可能是测试的实现。在 R 中更肯定实现的是conover.test包。

tl;dr:这些似乎都是不同测试统计或同一测试统计的不同形式的实现,因此没有理由期望他们同意。

参考

W. Jay Conover (1999)实用非参数统计

Conover, WJ 和 Iman, RL (1979)。关于多重比较程序技术报告 LA-7677-MS,洛斯阿拉莫斯科学实验室。

邓恩,OJ (1964)。使用秩和的多重比较技术计量学,6(3):241-252

Siegel and Castellan (1988)行为科学的非参数统计纽约麦格劳希尔国际机场。第 213-214 页

我知道该线程较旧,但我遇到了它,因为我正在寻找有关应用于agricolae包中 Kruskal-Wallis 测试的事后测试的答案。出于文档目的,我真的需要知道,所以我亲自给维护者发了电子邮件,询问事后测试使用什么程序。他告诉我它确实使用了 Conover 的程序。以下是他对 Kruskal-Wallis 事后测试的具体回复:

Kruskal检验是非参数的,但可以应用一个函数作为平均秩的最小显着性差异,可以对概率进行调整,该过程是Conover的具有临界范围的准则。

我希望这有助于回答有关 Kruskal-Wallis 测试的问题agricolae