什么方法从数据中重新采样来模拟 pvalues

机器算法验证 引导程序 蒙特卡洛 重采样 准蒙特卡罗
2022-04-06 10:24:22

不久前,我问了一个关于时间戳之间相关时间的问题,并收到了Peter Ellis 的回复,说我可以计算代码之间的平均距离......

这已经让您对哪些行为聚集在一起有所了解,但您还应该检查这是否合理地归因于偶然性。

为了检查这一点,我将在无关系的零假设下创建由模型生成的模拟数据。这样做需要从一个合理的空模型生成每个行为时间的数据,可能基于对每个事件之间的时间(例如,每个打哈欠之间)重新采样,以创建一组新的假设空模型事件的时间戳。然后为这个空模型计算相同的指标统计量,并与您的真实数据中的指标进行比较。通过多次重复此模拟,您可以确定您的数据中的指标是否与空模型的模拟数据有足够的差异(例如,从每次打哈欠到最近的拉伸的平均时间更短)以计为反对的统计显着证据你的零假设。

我终于拥有了做这件事的技能,并且已经在 R 中做到了,但我不知道这种方法或技术叫什么,以便我可以 (a) 了解更多信息 (b) 聪明地谈论我所学背后的理论正在做。

有些人建议这称为置换测试,其他人说与自举测试相似但不同,有些人告诉我这与蒙特卡洛重新采样有关。

假设 NULL 为 TRUE,这种重采样方法是什么?如果您有一两个参考来支持您的回复,这可能会有所帮助但不是必需的。

1个回答

在我看来,埃利斯在这里可能指的是多达三个不同的想法。首先,他谈到了创建“在无关系的零假设下由模型生成的模拟数据”。我将其称为参数引导的一种形式。然后他说这将“可能基于重新采样每个事件之间的时间(例如每个打哈欠之间),以创建一组新的时间戳,用于假设的空模型事件。” 让我们在这里明确一点,这样做不是“创建模拟数据”。相反,如果我理解正确,我们是从我们实际观察到的数据中重新采样。后一个过程是置换检验或非参数自举

我想我应该多说几句关于参数引导、置换测试和非参数引导。

通常参数引导是通过基于实际估计的模型进行模拟来完成的,而不是基于与估计模型一样的假设模型,除了假设原假设为真,正如 Ellis 最初建议的那样。通过“模拟数据”,我的意思是举个例子:我的模型表明我的数据来自两组,每组都具有正态分布,分别具有平均值以及标准偏差,所以我将生成许多满足这一点的数据集,并使用从这些模拟数据集中计算出的测试统计量的分布作为我的抽样分布。请注意,我正在使用类似in 的东西创建这些数据而不是μ1μ2σrnorm()R直接使用我观察到的数据。现在,我们当然可以执行此过程并在零假设下获得一种抽样分布,例如,组均值没有差异——我们只假设,这与我们实际的情况相反观察到——通过这种方式,我们得到了一个自举 p 值(而不是自举置信区间,这是前一种/传统方法为您提供的)。同样,我只是将其称为通过参数引导获取 p 值的方法。μ1=μ2

另一方面,置换检验涉及以与原假设一致的方式一遍又一遍地改组观察到的数据。因此,例如,如果原假设暗示组分配在组均值方面没有差异,您可以在所有观察结果中多次随机打乱组标签,并查看所有可能的改组方式的平均差异这样。然后你会看到你实际观察到的统计数据在从这些打乱的数据集计算的测试统计分布中的哪个位置。请注意,您可以使用有限(但通常很多)的方式来打乱您实际观察到的数据。

最后,非参数自举与置换检验非常相似,但我们使用替换重新采样观察到的数据试图更接近我们的数据可能从中提取的无限“人口”值。有很多很多的方法可以通过替换从数据中重新采样,而不是对数据进行洗牌(尽管在实践中它在技术上也是有限的)。同样,与参数自举类似,这通常不是在零假设下进行,而是在观察数据隐含的模型下进行,产生围绕观察到的检验统计量的置信区间,而不是 p 值。但人们当然可以想象在 Ellis 建议的零假设下这样做,并以这种方式获得 p 值。作为此处非参数自举的示例(以传统方式,即在零假设下)使用我在参数引导段落中使用的相同的组均值差异示例,为此,我们将通过替换每个组内的观察多次重新采样,但不混合组之间的观察(与排列不同测试),并建立我们通过这种方式获得的组均值差异的抽样分布。