使用 R 进行 Kruskal-Wallis 或 Mann-Whitney U 检验的功效分析?

机器算法验证 r 非参数 统计能力 克鲁斯卡尔-沃利斯测试
2022-02-15 12:36:49

是否可以对 Kruskal-Wallis 和 Mann-Whitney U 检验进行功效分析?如果是,是否有任何 R 包/函数可以执行它?

2个回答

当然可以计算功率。

更具体地说-如果您做出足够的假设以获得可以(以某种方式)计算拒绝概率的情况,则可以计算功率。

在 Wilcoxon-Mann-Whitney 中,如果(例如)您假设分布形状(对分布形式做出假设)并对位置的比例(价差)和特定值或位置差异做出一些假设,您可以通过代数或数值积分来计算功率;否则,您可以模拟拒绝率。

因此,例如,如果我们假设从t5具有指定位置差异的分布(标准化为通用尺度),然后给定样本大小,我们可以模拟许多满足所有这些条件的数据集,从而获得拒绝率的估计值。所以让我们假设我们有两个样本t5具有单位尺度的分布(位置尺度族)(σ=1) - 不失一般性 - 并且有位置差异δ=μ2μ1=1. 同样,在不失一般性的情况下,我们可以采取μ1=0. 然后对于一些指定的样本量——n1=6,n2=9(比如说)——我们可以模拟观察结果,从而模拟特定值的功率δ/σ(IE1)。这是 R 中的一个简单示例:

n1=6;n2=9;tdf=5;delta=1;al=0.05;nsim=10000
res = replicate(nsim,{y1=rt(n1,tdf);y2=rt(n2,tdf)+delta;wilcox.test(y1,y2)$p.value<=al})
mean(res)  # res will be logical ("TRUE" = reject); mean is rej rate

三个类似的模拟产生了 0.321、0.321 和 0.316 的拒绝率;功率显然在 0.32 附近(您可以仅从这些模拟中的一个计算置信区间,因为拒绝计数是二项式的)。在实践中,我倾向于使用更大的模拟,但如果你模拟很多不同的n的或δ您可能不想对每个模拟进行超过 10000 次模拟。

通过对位置偏移的许多值执行此操作,您甚至可以获得该组环境的功率曲线,因为如果您愿意,位置偏移会发生变化。

在大样本中加倍n1n2就像减半σ2(因此增加δ/σ在给定的δ) 所以你经常可以在各种情况下得到很好的近似值n仅通过少数模拟n价值观。同样,对于单尾测试,如果1bi是拒绝率δ=δi然后 Φ1(1b)趋于接近线性δ(再次,允许在各种δ来自模拟的值只有几个值δ(十几个精心选择的值通常很多)。合理的平滑选择通常会在其他值下产生非常好的功率近似值n或者δ.

当然,您不必将自己限制在位置变化中。任何可能导致参数变化的参数变化P(Y2>Y1)将是您可以调查的事情。

请注意,虽然这些测试在零值下是无分布的(对于连续分布),但在备选方案的不同分布假设下,行为是不同的。

Kruskal-Wallis 的情况类似,但您有更多的位置变化(或您正在查看的任何其他情况)要指定。

此答案中的图显示了配对 t 检验的功效曲线与特定样本大小的有符号秩检验的模拟功效的比较,跨越各种标准化位置偏移,用于从具有指定对之间的相关性的正态分布中采样。可以对 Mann-Whitney 和 Kruskal-Wallis 进行类似的计算。

我和你有完全相同的问题。经过一番搜索,我MultNonParam在 R ( pdf ) 中找到了这个包:

kwpower(nreps, shifts, distname=c("normal","logistic"), level=0.05, mc=0, taylor=FALSE)
  • nreps: 每组的数字。
  • shifts:在备择假设下,不同人群的偏移量。
  • distname:基础观察的分布;目前支持正常和逻辑。
  • level: 测试级别。
  • mc: 0 表示渐近计算,或正表示 mc 近似。
  • taylor: 逻辑确定泰勒级数近似是否用于概率。