可以将引导程序视为小样本量的“治愈方法”吗?


71

这个问题是由我在这本研究生水平的统计课本中读到的东西触发的,并且在统计研讨会上的这次演讲中也(独立地)听到了。在这两种情况下,该语句都遵循“由于样本量很小,我们决定通过自举而不是(或与之一起)使用此参数方法进行估计”。X

他们没有进入细节,但可能的理由如下:方法假定数据按照一定的参数分布。实际上,分布不完全是,但是只要样本大小足够大就可以。由于在这种情况下样本量太小,让我们切换到不做任何分布假设的(非参数)引导程序。问题解决了!XDD

在我看来,这不是引导程序的用途。我是这样看的:当或多或少明显有足够的数据时,bootstrap可以给自己一个优势,但是没有封闭形式的解决方案可以获取标准误差,p值和类似的统计信息。一个经典的例子是从双变量正态分布中给定样本来获得相关系数的CI:存在闭式解,但是它是如此复杂,以至于自举更简单。但是,这并不意味着引导程序可以以某种方式帮助人们摆脱小样本的困扰。

我的看法正确吗?

如果您觉得这个问题很有趣,那么我还有另一个更具体的引导问题:

引导程序:过度拟合的问题

PS:我不禁分享一个“引导方法”的令人震惊的例子。我没有透露作者的名字,但他是老一辈的“ Quants”之一,他于2004年写了一本关于量化金融的书。

考虑以下问题:假设您有4个资产,每个资产有120个每月回报观察。目标是构建年度收益的联合4维cdf。即使对于单个资产,仅通过10年的观测也很难实现该任务,更不用说对4维cdf的估计了。但请放心,“引导程序”将为您提供帮助:获取所有可用的4维观测值,用替换对12个样本进行重新采样,然后将它们组合起来,以构建单个“引导”的4维年度回报矢量。重复执行1000次,然后发现,您获得了1000个年度回报的“引导样本”。将其用作大小为1000的iid样本,以进行cdf估计或从一千年的历史中得出的任何其他推论。


18
我听到或阅读了与您的第一段类似的观点,但我倾向于不同意。在小样本中,我通常不认为引导程序很有用。它的证明是渐近/大样本,在实践中,在许多情况下,小样本性能是有问题的。例如,间隔的覆盖率通常与标称费率完全不同。它是另一种有用的工具,但是像多年来已经被宣扬的其他许多工具一样,它并不是某些人想象的灵丹妙药。我真的不认为这是解决非常小的样本的方法。
Glen_b 2014年

在西蒙·希瑟(Simon Sheather)的书中(图3.40),有一个回归流程图,当样本量不大且误差不呈正态分布时,建议进行引导。
托尼·拉德森

2
第四段中问题的答案是肯定的(或者,如果您在我的班级的一次测试中给出了这个答案,那么至少您的论点会得到认可)。你检查了这个讨论吗?在我的回答中,我对引导程序的近似方法进行了解释,并引用了每个引导程序人员都应该读懂的吹牛头脑文件,以了解该方法的局限性。很高兴看到提到引发您问题的书籍/论文/演讲的参考
StasK 2014年

引导程序是否只是在edgeworth扩展中给您额外的项-像带有校正项的正态近似?
概率

Answers:


34

我记得读过,使用百分位数置信区间进行引导等同于使用Z区间而不是T区间,并且使用而不是作为分母。不幸的是,我不记得我在哪里读到本文,也无法在快速搜索中找到参考。这些差异奈何不了当n很大(当引导的优点大于这些小问题大),但与小这可能会导致问题。这是一些R代码进行模拟和比较:n - 1 n nnn1nn

simfun <- function(n=5) {
    x <- rnorm(n)
    m.x <- mean(x)
    s.x <- sd(x)
    z <- m.x/(1/sqrt(n))
    t <- m.x/(s.x/sqrt(n))
    b <- replicate(10000, mean(sample(x, replace=TRUE)))
    c( t=abs(t) > qt(0.975,n-1), z=abs(z) > qnorm(0.975),
        z2 = abs(t) > qnorm(0.975), 
        b= (0 < quantile(b, 0.025)) | (0 > quantile(b, 0.975))
     )
}

out <- replicate(10000, simfun())
rowMeans(out)

我的一次运行结果是:

     t      z     z2 b.2.5% 
0.0486 0.0493 0.1199 0.1631 

因此,我们可以看到,使用t检验和z检验(具有真实总体标准偏差)都给出了I型错误率,该错误率本质上是设计的。不适当的z检验(除以样品标准偏差,但使用Z临界值而不是T)拒绝空值的次数是应有的两倍。现在进入引导程序,它会尽可能多地拒绝空值3次(查看是否为0(真实均值)是否在区间中),因此,对于如此小的样本量,简单的引导程序未正确设置大小,因此无法解决问题(这是数据处于最佳状态的时候)。改进的自举时间间隔(BCa等)可能会做得更好,但是这对于使用自举作为小样本的灵丹妙药应该引起一些关注。α


6
您的最后一句话让我感到好奇,因此我以您的示例进行了尝试。我使用了该boot软件包,并提供了所有可能的间隔:一阶正态近似间隔,基本引导间隔,学生化引导间隔,引导百分位数间隔(您的代码已提供)和调整后的引导百分位数(BCa)间隔。结果基本上是相同的(拒绝率约为0.16-1.17),除了学生间隔的名义拒绝率(.05)(有意义,因为它更像是标准t检验)。
沃尔夫冈

2
@Wolfgang,感谢您进行了其他模拟。令我感到惊讶的是,其他间隔并没有做得更好,但也没有感到惊讶,他们没有达到0.05水平。
格雷格·斯诺

1
是的,我也有点惊讶!有时我们的直觉失败。这就是为什么能够在几分钟之内用R编写一个小脚本,让它运行10,000 \times 10,000迭代(又花了几分钟的时间来完成),并能够检查事物如此美妙的原因。而且您的示例很好地表明,即使情况“很好”(即数据实际上是正常的),引导程序在小样本情况下也可能表现不佳。
沃尔夫冈2014年

实际上,在此模拟中看到的问题恰好是我刚刚在此处询问并在@whuber的评论中回答的问题:stats.stackexchange.com/questions/323455/…。因此,我认为问题不在于样本大小,而是每个样本中违反参数推断的独立性。
半通

2
仅出于记录目的,您对百分位数置信区间等于使用而不是的评论来自此处Ťzt
英林

14

如果为您提供了较小的样本量(作为补充,“小”似乎取决于每个研究领域的一些基本习惯规则),那么引导程序将无济于事。假设数据库包含针对所研究的两个变量中的每个变量的三个观察值,则没有任何推理意义。以我的经验,当样本分布(每个样本至少有10至15个观察值)出现偏差时,非参数引导程序(1,000或10,000个重复)可以很好地替代t检验,因此无法满足常规t检验的先决条件。此外,无论观察结果的数量如何,当数据出现正偏时,非参数引导可能是必选的选择,因为它总是发生在医疗费用上。


1
当数据出现正偏时,引导程序可能是强制性的选择-为什么不使用对数正态分布或类似的偏斜分布呢?SAS和R有很多选择。
詹姆斯

1
詹姆斯的答复值得考虑。但是,我在记录成本数据时遇到的常见问题是在将结果提供给决策者之前,先将其转换为原始指标。您可以使用非参数引导程序来避免此问题。
卡洛·拉扎罗

卡洛(Carlo),因为您有对数转换的经验,所以不妨回答我的另一个问题(悬赏50分):stats.stackexchange.com/a/111932/54099
James

詹姆斯,几分钟前,我已经对您的问题做出了诱惑性答复。
卡洛·拉扎罗

χ 2 1t可以对偏斜的人口进行检验,请参见jstor.org/stable/2286597-所提出的更正对于偏斜的人口(如有10个观察结果非常有效。χ12
StasK 2014年

13

其他答案批评自举置信区间的性能,而不是自举本身。这是一个不同的问题。

如果您的上下文满足自举分布收敛的规则性条件(以自举样本数量表示的收敛),则如果使用足够大的自举样本,则该方法将起作用。

如果您真的想找到使用非参数引导程序的问题,则有两个问题:

(1)重采样问题。

对于小样本或大样本,引导程序的问题之一就是重采样步骤。在保持样本结构(相关性,时间性,...)的同时,并非总是能够进行重新采样。这方面的一个例子是叠加过程

假设有许多独立的来源,每一个事件都会不时发生。假定在任何一个源上的连续事件之间的间隔都是独立的随机变量,并且它们都具有相同的分布,因此每个源都构成了一种熟悉类型的更新过程。源的输出合并为一个合并的输出。

在保持依赖性未知结构的情况下,您将如何重新采样?

(2)狭窄的自举样本和小样本的自举置信区间

在小样本中,每个子样本的估计量的最小值和最大值可能会定义一个狭窄的区间,因此在某些模型中,任何置信区间的右端点和左端点将非常窄(这与小样本是不合常理的!)。

假设,其中是比率。使用配置文件似然,您可以得到一个近似的置信区间(95%的近似置信区间是0.147级配置文件似然区间),如下所示:λ > 0x1,x2Exp(λ)λ>0

set.seed(1)
x <- rexp(2,1)
# Maximum likelihood estimator
1/mean(x)

# Profile likelihood: provides a confidence interval with right-end point beyond the maximum inverse of the mean
Rp <- Vectorize(function(l) exp(sum(dexp(x,rate=l,log=T))-sum(dexp(x,rate=1/mean(x),log=T))))

curve(Rp,0,5)
lines(c(0,5),c(0.147,0.147),col="red")

此方法生成一条连续曲线,从中可以提取置信区间。的最大似然估计量为。通过重采样,我们只能为此估计器获得三个可能的值,它们的最大值和最小值定义了相应的自举置信区间的范围。即使对于大的引导程序样本,这也可能看起来很奇怪(通过增加该数目不会有太大的收获):λ = 2 /X 1 + X 2λλ^=2/(x1+x2)

library(boot)
set.seed(1)
x <- rexp(2,1)
1/mean(x)
# Bootstrap interval: limited to the maximum inverse of the mean
f.boot <- function(data,ind) 1/mean(data[ind])
b.b <- boot(data=x, statistic=f.boot, R=100000)
boot.ci(b.b, conf = 0.95, type = "all")
hist(b.b$t)

在这种情况下,和越近,自举分布越窄,因此置信区间(可能位于远离真实值的位置)越窄。实际上,此示例与@GregSnow提出的示例有关,尽管他的论点更具经验性。我提到的边界解释了@Wolfgang分析的所有引导置信区间的不良表现。x 2x1x2


6

引导工作以及确保测试的正确性(例如,标称0.05显着性水平接近测试的实际尺寸)的样本量小,但是自举并不会神奇地给予你额外的动力。如果样本较少,那么故事的结局就很小。

参数(线性模型)和半参数(GEE)回归往往具有较差的小样本属性……前者是由于对参数假设的依赖性较大,而后者则是由于放大了小样本中可靠的标准误差估计而引起的。在这些情况下,自举(以及其他基于重采样的测试)的性能非常好

为了进行预测,自举分析将为您提供比拆分样本验证更好(更真实)的内部有效性估计。

由于无意中校正了平均插补程序/热校正(例如在模糊匹配中),引导引导通常会给您带来更少的功能。自举错误地被认为在匹配分析中提供了更大的功能,在匹配分析中对个体进行了重新采样以满足足够的聚类大小,从而为自举匹配的数据集提供了比分析数据集更大的。n


2
(例如,名义上的0.05显着性水平接近测试的实际大小),但是-在上面的R代码中,我们只是看到引导程序没有保留测试大小,对吗?
2014年

我看到您指的是格雷格·斯诺(Greg Snow)提供的答案。我为那个结果感到惊讶。我将需要重新检查我的事实并编辑我的答案。谢谢。
AdamO 2014年
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.