引导样本数量的经验法则

机器算法验证 引导程序 推理 蒙特卡洛
2022-01-31 07:37:18

我想知道是否有人知道根据数据特征(观察次数等)和/或包含的变量,关于应该使用的引导样本数量的一般经验法则?

4个回答

我的经验是,除非迭代次数超过 1,000,否则统计学家不会认真对待模拟或引导。MC 错误是一个大问题,但有点被低估了。例如,本文用于Niter=50演示 LASSO 作为特征选择工具。如果 50 次迭代被认为是可以接受的,我的论文将花费更少的时间来运行!我建议您始终检查 bootstrap 样本的直方图它们的分布应该看起来相当规则。我不认为任何简单的数字规则就足够了,并且执行例如双重引导来评估 MC 错误将是过度的。

假设您要根据两个独立的标准正态随机变量的比率来估计平均值,一些统计学家可能会建议自举它,因为积分难以计算。如果你掌握了基本的概率论,你会认识到这个比率形成了一个不存在均值的柯西随机变量。与更规则的高斯密度对应物相比,任何其他细峰分布都需要几次额外的引导迭代。在这种情况下,1000、100000 或 10000000 个引导样本不足以估计不存在的样本。这些引导程序的直方图将继续看起来不规则和错误。

这个故事还有一些皱纹。特别是,只有当数据生成概率模型的矩存在时,bootstrap 才是真正合理的。那是因为您将经验分布函数用作实际概率模型的稻草人,并假设它们具有相同的均值、标准差、偏度、第 99 个百分位数等。

简而言之,只有当自举样本的直方图在排除合理怀疑的情况下显得规则并且自举是合理的时,统计量及其标准误差的自举估计才是合理的。

编辑:

如果您对拥有足够的样本是认真的,那么您应该做的是多次运行您的引导程序,您希望是足够的样本,然后查看引导程序估计“跳跃”的程度。如果重复的估计差异不大(“很多”取决于您的具体情况),您很可能没问题。当然,您可以通过计算样本 SD 或类似方法来估计重复估计跳跃的幅度。

如果您需要参考和经验法则,Wilcox(2010) 写道“建议将 599 用于一般用途”。但这应该只是一个指导方针,或者可能是您应该考虑的最小样本数量。如果您想安全起见,没有理由(如果它在计算上可行)为什么不应该生成更多的样本。

就个人而言,我倾向于在“为自己”估计时运行 10,000 个样本,在估计传递给他人的东西时运行 100,000 个样本(但这在我使用小型数据集时很快)。

参考

威尔科克斯,RR (2010)。现代统计方法的基础知识:大幅提高功效和准确性。施普林格。

我首先回应另一个答案中提出的问题:为什么像“ ”(引导样本数)这样一个奇怪的数字? 599

这也适用于蒙特卡洛测试(当基础统计量是关键时,自举等价),并且来自以下内容:如果测试是精确的,那么,如果是所需的显着性水平,并且是样本数量,必须满足以下关系:αB

α(1+B)=integer

现在考虑典型的显着性水平α1=0.1α2=0.05

我们有

B1=integer0.11,B2=integer0.051

这个“减一”会导致建议的数字如“ ”,以确保准确的测试。599

我从 Davidson, R. 和 MacKinnon, JG (2000) 那里获得了以下信息。引导测试:有多少引导?计量经济学评论,19(1),55-68。 (工作文件版本可免费下载)。

至于经验法则,作者研究了引导 p 值的情况,他们建议对于的测试,最小样本数约为 400(即),而对于水平的测试,最小样本数为 1500,因此( )。0.053990.011499

他们还提出了一种预测试程序来内生地在模拟他们的程序后,他们得出结论:B

“很容易理解为什么预测试程序运行良好。当原假设为真时,B 可以安全地很小,因为我们根本不关心功效。同样,当原假设为假且测试功效非常高时, B 不需要很大,因为功率损失不是一个严重的问题。但是,当空值为假且测试功率适中时,B 需要很大以避免功率损失。预测试过程往往使B 小,当它可以安全地变小,当它需要变大时,它变大。”

而提出的另一个程序进行了比较,他们发现他们的程序表现更好。B

在某些情况下,您可以事先或在几次迭代之后告诉您,大量的引导迭代最终将无济于事。

  • 希望您事先对有意义的结果解释所需的精度数量级有所了解。如果您不这样做,也许是时候进一步了解数据分析背后的问题了。无论如何,经过几次迭代后,您可能能够估计出还需要多少次迭代。

  • 显然,如果您的案例极少(例如,伦理委员会允许 5 只老鼠),您不需要考虑数万次迭代。也许最好看看所有可能的平局。也许停下来想想任何一种结论如何确定(不能)基于 5 只老鼠会更好。

  • 想想结果的总不确定性。在我的领域中,您可以通过自举来衡量和减少的不确定性部分可能只是总不确定性的一小部分(例如,由于实验设计的限制,重要的变异来源通常不会被实验覆盖 - 比如说,我们从细胞系实验开始,尽管最终目标当然是患者)。在这种情况下,运行过多的迭代是没有意义的——它无论如何都无助于最终结果,而且它可能会导致一种错误的确定感。

  • 在模型的自举或交叉验证期间会出现一个相关(尽管不完全相同)问题:您有两个不确定性来源:有限(在我的情况下通常是非常少量的独立案例)和(在)自举模型的稳定性。根据您对重采样验证的设置,您可能只有其中一个对重采样估计有贡献。在这种情况下,您可以使用对其他方差来源的估计来判断重采样应该达到什么确定性,以及何时停止以帮助获得最终结果。

  • 最后,虽然到目前为止我的想法是关于如何进行更少的迭代,但这里有一个实际的考虑,有利于做更多的事情:
    实际上,我的工作不是在引导程序运行后完成的。引导程序的输出需要汇总为汇总统计数据和/或数字。结果需要解释为要撰写的论文或报告。其中大部分已经可以通过引导程序的几次迭代的初步结果来完成(如果结果很清楚,它们在几次迭代后就已经显示出来,如果它们是边界线,它们将保持边界线)。所以我经常以一种允许我提取初步结果的方式设置引导程序,这样我就可以在计算机计算的同时继续工作。这样,如果引导需要再花几天时间,我就不会太困扰。