【R语言】Permutation Tests

Permutation Tests


用于构建抽样分布的越来越常见的统计工具是置换测试(或有时称为随机化测试)。与自举一样,置换测试通过重新采样观察数据来构建 - 而不是假设 - 采样分布(称为“置换分布”)。具体而言,我们可以“混洗”或置换观察到的数据(例如,通过从实际观察到的结果集中的每个观察中分配不同的结果值)。与bootstrapping不同,我们无需替换即可完成此操作。

排列测试在实验研究中特别相关,我们经常对治疗组之间无差异的尖锐零假设感兴趣。在这些情况下,置换测试完美地代表了我们的推理过程,因为我们的零假设是两个治疗组在结果上没有差异(即,结果是独立于治疗分配而观察到的)。当我们在测试期间置换结果值时,我们因此看到了我们可能具有的所有可能的替代治疗分配以及我们观察到的数据的平均差异相对于我们可以看到的结果是独立的所有差异的位置治疗任务。虽然排列测试要求我们看到数据的所有可能排列(可能变得非常大),通过简单地进行大量的重采样,我们可以轻松地进行“近似置换测试”。在期望中,该过程应该近似于排列分布。

例如,如果我们的研究中只有n = 20个单位,那么排列的数量是:

> factorial(20)
[1] 2.432902e+18

这个数字超出了我们可以合理计算的数字。但是我们可以从该排列分布中随机抽样以获得近似排列分布,只需运行大量重新采样即可。让我们看一下使用一些组成数据的例子:

> set.seed(1)
> n <- 100
> tr <- rbinom(100,1,0.5)
> y <- 1 + tr + rnorm(n,0,3)

均值的差异正如我们所预期的那样(假设我们已经实现了),大约是1:

> diff(by(y,tr,mean))
[1] 1.341389

为了获得数据的单个排列,我们只需重新取样而无需替换并再次计算差异:

> s <- sample(tr,length(tr),FALSE)
> diff(by(y,s,mean))
[1] -0.2611933

在这里,我们使用置换处理向量s而不是tr计算差异并找到非常小的差异。如果我们重复这个过程很多次,我们可以建立我们的近似置换分布(即均值差的采样分布)。我们将使用replicatedo重复我们的排列过程。结果将是每个排列(即我们的分布)的差异的向量:

> dist <- replicate(2000,diff(by(y,sample(tr,length(tr),FALSE),mean)))

我们可以使用hist并绘制垂直线来查看我们的分布:

> hist(dist,xlim = c(-3,3),col = "black",breaks = 100)
> abline(v=diff(by(y,tr,mean)),col="blue",lwd=2)

从表面看,似乎我们的零假设可能会被拒绝。我们观察到的平均差异在可观察到的可能平均差异的分布方面似乎非常极端,其结果与治疗分配无关。但是我们可以通过计算有多少置换平均差大于我们在实际数据中观察到的平均差来获得平均差的p值。然后我们可以将它除以我们的排列分布中的项目数(即,我们的呼叫replicate,上面的2000 ):

> sum(dist>diff(by(y,tr,mean)))/2000 # one-tailed test
[1] 0.0145
> sum(abs(dist)>abs(diff(by(y,tr,mean))))/2000 # two-tailed test
[1] 0.0235

使用单尾检验或双尾检验,我们的差异不太可能是由于在结果与治疗分配无关的世界中可观察到的机会变异。

library(coin)

我们并不总是需要构建我们自己的排列分布(尽管知道如何去做也很好)。R提供了一个用于进行称为coin的排列测试的软件包。我们可以将上面的p值(和相关的推断)与coin的结果进行比较:

> library(coin)
> independence_test(y~tr,alternative = "greater") # one-tailed

	Asymptotic General Independence Test

data:  y by tr
Z = 2.3154, p-value = 0.01029
alternative hypothesis: greater
> independence_test(y~tr) # two-tailed

	Asymptotic General Independence Test

data:  y by tr
Z = 2.3154, p-value = 0.02059
alternative hypothesis: two.sided

显然,我们的近似置换分布提供了相同的推断和几乎相同的p值。 coin还为不同类型的比较提供了其他排列测试。您在参数框架中可以解决的几乎任何事情也可以在排列框架中完成(如果实际上是适当的)。而且没有任何事情是coin不能提供的,可以用重新取样的基本排列逻辑手工构建。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

镰刀韭菜

看在我不断努力的份上,支持我吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值