比较两种方法使用置换测试和引导与 R 中的 boot() 函数

机器算法验证 r 引导程序 置换检验
2022-03-22 21:39:24

我想知道如何使用 R 中的 boot 函数进行排列测试。目标是比较两组人的手段:其中一些人喝啤酒,而另一些人喝水。

我遇到的问题是如何编写我将在 boot() 中使用的统计函数。

事实上,我想知道如何将采样过程纳入我必须编写的统计函数中。

请任何帮助。这是我拥有的数据集

Mpoudas
   Response Treatment
1        27      Beer
2        20      Beer
3        21      Beer
4        26      Beer
5        27      Beer
6        31      Beer
7        24      Beer
8        21      Beer
9        20      Beer
10       19      Beer
11       23      Beer
12       24      Beer
13       28      Beer
14       19      Beer
15       24      Beer
16       29      Beer
17       18      Beer
18       20      Beer
19       17      Beer
20       31      Beer
21       20      Beer
22       25      Beer
23       28      Beer
24       21      Beer
25       27      Beer
26       21     Water
27       22     Water
28       15     Water
29       12     Water
30       21     Water
31       16     Water
32       19     Water
33       15     Water
34       22     Water
35       24     Water
36       19     Water
37       23     Water
38       13     Water
39       22     Water
40       20     Water
41       24     Water
42       18     Water
43       20     Water
1个回答

虽然排列测试、随机化测试和引导都属于重采样程序类,但它们在一些重要方面有所不同。

特别是,置换测试在几个方面与自举测试不同。你似乎认为他们是同一件事。

其中一些差异将使使用引导程序进行置换测试基本上不可能。

  1. “完整”置换测试实际上根本没有采样。每个数据点都会重新出现在组标签的每个可能的样本重新排列中,并且它使用随机化测试样本所来自的每个样本组合;计算检验统计量的完整排列分布。在实践中,只有相当小的样本才有可能 - 或者使用聪明的算法,通常是中等样本大小(数十个观察,在某些情况下甚至更多)。

  2. 您可以对排列分布进行采样(一些作者称之为随机化测试,尽管其他作者使用该术语来表示一些不同的东西)。这涉及一种对数据进行抽样而不进行替换的形式,因为每个观察都出现在每个重新抽样中(可能以某种修改的形式)。但是,原始样本本身的这些(重新)排列是从完整排列测试使用的组标签的可能排列集合中替换采样的(如下所述)

  3. 自举涉及对数据进行替换采样典型的引导样本中的一些观察结果会出现不止一次,其他的则不会出现。在给定的样本中,平均约 62% 会复发。

Bootstrapping 具有与这种随机化测试方法不同的假设和属性。

  1. 以下是您如何对您描述的情况进行完整排列测试:

    一个。对于将 25 个“啤酒”标签和 18 个“水”标签分配给响应变量的 43 个观测值的每个可能分配,计算啤酒平均值减去水平均值。

    湾。找出这种分配的比例(在6.08×1011刚刚计算的组合),其平均值的绝对值至少与您的样本数据一样远离 0。这是置换检验的确切 p 值

  2. 以下是您如何对其进行重采样排列测试(/随机化测试):

    一个。对于一些大量的复制,从 1 中讨论的一组可能的标签重排中随机选择分配,并计算均值的差异(带放回抽样)。

    湾。将您的样本添加到集合中。找出平均值的绝对值至少与样本数据一样远离 0 的抽样分配比例。这是随机化测试的模拟p 值。当您采样更多时,p 值的不确定性会下降。您可以估计 p 值估计的标准误差,因为它是二项式比例。

  3. 这是您可以对其进行引导测试的一种方法(为简洁起见,对一些细节进行了修饰):

    一个。重复多次:从“啤酒”组中替换样本以获得“啤酒”伪样本。从“水”组中替换样本以获得“水”伪样本。

    湾。使用伪样本均值差异的分布来构造均值差异的置信区间(戴维森和欣克利的第 5 章讨论了几种方法)。如果该 CI 不包含 0,则得出均值差不同于 0 的结论。

  4. 这是另一种简单的方法:

    一个。如 3a 中那样对两组进行重新采样并取差值。减去原始样本均值的差异。(重复多次;这会产生重新采样的差异分布,其“形状”是由于将 ecdf 视为人口分布而产生的,但平均人口差异与空值下的情况相匹配)

    湾。找出样本均值差异在此分布中出现的位置(相应地计算相关的 p 值)。

    (Davison 和 Hinkley 描述了比这更好但更复杂的一个示例引导测试 - 例如他们书中第 4.4.1 节中的学生化引导测试。他们提到了针对这种情况的其他几种可能的引导测试,包括一个非常类似于重采样置换测试的测试,但是抽样是有替换的。)

在 R 中进行重采样置换测试(/随机化)测试的简单方法根本不是使用该boot函数,而是使用该sample函数,因为它无需替换即可绘制。

如果没有阅读戴维森和欣克利,您可以尝试这些关于引导和 R 的资源:

阿杰·沙阿简介

引导程序上的快速 R

约翰福克斯关于引导程序的附录章节

Canty对引导包的讨论

Davison 和 Kuonen 谈 R 中的引导应用程序