仿真研究:如何选择迭代次数?

机器算法验证 模拟 蒙特卡洛
2022-03-09 00:56:22

我想用“模型 1”生成数据并用“模型 2”拟合它们。基本思想是研究“模型2”的鲁棒性。我对 95% 置信区间的覆盖率特别感兴趣(基于正态近似)。

  • 如何设置迭代运行次数?
  • 大于必要的复制是否会导致虚假偏差?如果是这样,那是怎么回事?
3个回答

我经常使用置信区间的宽度作为确定所需迭代次数的快速而简单的方法。

当“模型 1”的数据适合“模型 2”时,设为 95% 置信区间的真实覆盖率。如果是置信区间在次迭代中覆盖真实参数值的次数,则pXnXBin(n,p)

估计量具有平均和标准偏差对于大的是近似正常的,给你一个大约 95 % 的置信区间由于您知道(会猜到),因此该区间的宽度约为p^=X/npp(1p)/nnp^p^±1.96p^(1p^)/npp0.9521.960.950.05/n

如果您认为宽度找到为此所需的近似迭代次数0.1n

0.1=21.960.950.05/n.

通过这种方式,您可以通过选择您正在寻找的准确度来找到合理的n

根据您的后续评论,当您在真实误差方差不恒定时假设误差方差恒定时,您似乎正在尝试估计置信区间的覆盖概率。

我的想法是,对于每次运行,置信区间要么覆盖真实值,要么不覆盖真实值。定义一个指示变量:

Yi={1if the interval covers0if it does not

然后你感兴趣的覆盖概率是你可以通过我认为你提出的样本比例来估计。E(Yi)=p

如何设置迭代运行次数?

我们知道伯努利试验的方差是,并且您的模拟将生成 IID 伯努利试验,因此基于模拟的 p 估计的方差p,其中是模拟次数。您可以选择来尽可能地缩小此方差。事实是p(1p)pp(1p)/nnn

p(1p)/n1/4n

因此,如果您希望方差小于某个预先指定的阈值,那么您可以通过选择来确保这一点。δn1/4δ

在更一般的设置中,如果您尝试通过模拟研究估计量的采样分布的属性(例如,它的均值和方差),那么您可以根据您希望在类似情况下达到多少精度来选择模拟次数时尚到这里描述的。

另请注意,当变量的平均值(或其他时刻)是感兴趣的对象时,就像这里一样,您可以根据使用正态逼近的模拟(即中心极限定理)为其构建置信区间,正如 MansT 的好答案中所讨论的那样。随着样本数量的增加,这种正态近似值会更好,因此,如果您计划通过诉诸中心极限定理来构建置信区间,您将希望足够大以使其适用。对于二进制情况,正如您在此处所看到的那样,即使相当适中 - 例如 ,这种近似似乎也很好。nnpn(1p)20

大于必要的复制是否会导致虚假偏差?如果是这样,那是怎么回事?

正如我在评论中提到的 - 这取决于你所说的虚假的意思。大量的模拟不会产生统计意义上的偏差,但它可能会揭示一个不重要的偏差,只有在大样本量的情况下才会注意到。例如,假设错误指定的置信区间的真实覆盖概率为那么,这在实际意义上并不是一个真正的问题,但如果你运行了大量的模拟,你可能只会发现这种差异。94.9999%

如果您正在进行模拟,则所需运行的最少次数取决于您的目标(您要估计什么以及准确度如何?)。如果您尝试估计平均响应,则样本平均值的标准偏差是因此,如果是您想要的平均值置信区间所需的半宽度Population Standard Deviationnd95%d=1.96×Pop.Std.Devnn=(1.96×Pop.Std.Dev)2d2

进行更多模拟(假设所有样本都是由随机过程生成的)不会损害估计的准确性或偏差。

近似置信区间的覆盖率将不同于所需的准确覆盖率,并且覆盖率的误差应随着的增加而减小。来限制覆盖范围的蒙特卡罗估计95%np(1p)n