您可以在R中计算Kolmogorov-Smirnov检验的功效吗?


10

是否可以对R中的两面Kolmogorov Smirnov测试进行功率分析?

我正在使用ks.test()测试两个经验分布是否不同,并希望添加功效分析。

我无法在R中找到用于KS测试的内置功率分析。有什么建议吗?

编辑:这些是随机生成的分布,非常接近我的数据(具有真实的样本大小和指数分布的估计衰减率)

set.seed(100)
x <- rexp(64, rate=0.34)
y <- rexp(54,rate=0.37)

#K-S test: Do x and y come from same distribution?
ks.test(x,y)

这些数据是两个不同组中身体大小的度量。我想证明两组的分布基本相同,但是一位合作者问我是否有能力根据样本量来说明这一点。我是从这里的指数分布中随机抽取的,但是它们接近真实数据。

到目前为止,我已经说过,基于双面KS测试,这些分布没有显着差异。我还绘制了两个分布。考虑到x和y的样本大小和衰减率,如何证明我有能力做出这样的陈述?


4
功率将取决于许多因素,这就是为什么两个样本测试都没有内置的原因。您可以针对给定情况进行仿真。那么:电力给定了什么有关情况的假设?针对哪些替代方案或替代方案序列?例如,您可以针对一组刻度移位替代方案,计算(模拟)指数分布数据的幂曲线。或者您可以针对位置偏移计算法线的功率。或者,您可以在改变形状参数时在Weibull中计算功效。您还有其他详细信息吗?
Glen_b-恢复莫妮卡2015年

要实际计算功效,您还需要样本数量。如果您要根据给定的能力来确定具有特定功效的样本量,可以通过寻根来完成,但通常可以通过简单的方法找到要点(尝试几个样本量通常足以使样本量非常接近)。
Glen_b-恢复莫妮卡2015年

正在测量什么变量?是这些时间吗?
Glen_b-恢复莫妮卡

@Glen_b这些不是时间。它们是两个不同组中身体大小的度量。我想证明两组的分布基本相同,但是有人问我是否有能力根据样本量来说明这一点。
莎拉

1
啊! 这是两个有用的上下文,可能会对您的问题有所帮助。因此,想法是,如果您证明识别某些名义上的适度差异的权力是合理的,则可以以拒绝失败为标志,以表明差异很小。是的,事先进行功率分析可以帮助您进行论证。在这个事实之后,我可能会更多地关注缩放变化的估计值(可能还有置信区间),以表明差异实际上很小,以及两个样本cdfs的图。
Glen_b-恢复莫妮卡2015年

Answers:


16

相对于指数尺度转移替代方案,找到能力非常简单。

不过,我不知道,你应该使用计算出的值您的数据制定出什么样的力量可能已经。这种事后权力计算往往会得出与直觉相反(甚至可能引起误解)的结论。

权力与重要性水平一样,是您在事实面前处理的现象。您将使用先验的理解(包括理论,推理或以前的任何研究)来决定要考虑的一组合理的替代方案以及理想的效应量

您还可以考虑多种其他选择(例如,可以将指数嵌入到伽玛族中,以考虑或多或少的偏斜案例的影响)。

人们可能会尝试通过功效分析回答的常见问题是:

1)对于给定的样本量,以某种效应量或一组效应量*有什么功效?

2)给定样本大小和功效,可以检测到多大的效应?

3)给定特定效果大小所需的功率,将需要什么样本大小?

*(此处的“效应大小”是一般性含义,例如可能是特定的均值比率或均值差,不一定是标准化的)。

显然,您已经有一个样本量,因此您不必担心情况(3)。您可能会合理考虑情况(2)或情况(1)。

我建议案例(1)(这也提供了一种处理案例(2)的方法)。

为了说明案例(1)的方法并查看其与案例(2)的关系,让我们考虑一个具体示例,其中包括:

  • 规模转移的选择

  • 指数人口

  • 64和54这两个样本中的样本大小

由于样本大小不同,因此我们必须考虑一种情况,即样本之一中的相对分布既小于又大于1(如果大小相同,则出于对称性考虑,可以只考虑一侧)。但是,由于它们非常接近相同的大小,因此效果很小。无论如何,请为其中一个样本固定参数,然后更改另一个样本。

所以做的是:

预先:

choose a set of scale multipliers representing different alternatives
select an nsim (say 1000)
set mu1=1

要进行计算:

for each possible scale multiplier, kappa 
  repeat nsim times
    generate a sample of size n1 from Exp(mu1) and n2 from Exp(kappa*mu1)
    perform the test
  compute the rejection rate across nsim tests at this kappa

在R中,我这样做:

alpha = 0.05
n1 = 54
n2 = 64
nsim = 10000
s = c(1.1,1.2,1.5,2,2.5,3) # set up grid for kappa
s = c(1/rev(s),1,s)        #  also below and at 1
rr = array(NA,length(s))   # to hold rejection rates

for(i in seq_along(s)) rr[i]=mean(replicate(nsim,
                                    ks.test(rexp(n1,1),rexp(n2,s[i]))$p.value)<alpha
                                 )

plot(rr~s,log="x",ylim=c(0,1),type="n") #set up plot
points(rr~rev(s),col=3) # plot the reversed case to show the (tiny) asymmetry+noise
points(rr~s,col=1) # plot the "real" case last 
abline(h=alpha,col=8,lty=2) # draw in alpha

赋予以下力量“曲线”

在此处输入图片说明

x轴为对数刻度,y轴为拒绝率。

在这里很难说出来,但是左边的黑点比右边的黑点高一些(也就是说,当较大的样本具有较小的标度时,黑点的功率会增加一些)。

使用逆法线cdf作为拒绝率的变换,我们可以使变换后的拒绝率与log kappa(kappa s在图中,但x轴是对数缩放)之间的关系非常接近线性(除了0附近) ),并且仿真次数足够多,以至于噪声非常低-我们目前可以忽略它。

所以我们可以只使用线性插值。下面显示的是您的样本大小下50%和80%功效的近似效果大小:

在此处输入图片说明

另一端的效果大小(较大的组具有较小的比例)仅稍有偏移(可以拾取较小的效果大小),但是差别不大,所以我不会着急。

因此,该测试将获得实质性的差异(比例比例为1),但差异不小。


现在提一些评论:我认为假设检验与所关注的潜在问题没有特别的关系(它们是否非常相似?),因此这些功效计算并不能告诉我们与该问题直接相关的任何信息。

我认为您通过在操作上预先指定“基本相同”的实际含义来解决这个更有用的问题。 -理性追求的统计活动-应该导致数据的有意义的分析。


非常感谢!这真的很有帮助,非常感谢。
莎拉

0

由于Kolmogorov-Smirnov是非参数的,因此从定义上讲就没有适用的功率分析。要进行某种估算,您需要假设一个背景模型(从而从非参数世界中转移出来……)并使用它来计算以下值之一:样本量,MDE或功效(即,修复/选择两个并计算第三个)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.