Answers:
引导程序和蒙特卡洛程序之间的这种混淆不断发生,因此也许这是解决任何问题的好地方。(R
代码示例也可以帮助完成家庭作业。)
考虑以下引导程序的实现R
:
boot <- function(x, t) { # Exact bootstrap of procedure t on data x
n <- length(x) # Must lie between 2 and 7 inclusive.
if (n > 7) {
stop("Sample size exceeds 7; use an approximate method instead.")
}
p <- c(n, 1:(n-1))
a <- rep(x, n^(n-1))
dim(a) <- rep(n, n)
y <- as.vector(a)
while (n > 1) {
n <- n-1
a <- aperm(a, p)
y <- cbind(as.vector(a), y)
}
apply(y, 1, t)
}
快速浏览将确认这是确定性计算:不会生成或使用任何随机值。(我将其内部工作的细节留给感兴趣的读者自己解决。)
的参数boot
是数组中的一批数字数据,x
以及t
对函数的引用(可以像一样将其应用于数组x
)以返回单个数字值;换句话说,t
是一个统计量。它会生成所有可能的样本,并替换为每个样本x
并应用于t
每个样本,从而为每个此类样本生成一个数字:简而言之就是引导程序。返回值是表示所述阵列精确引导分配的t
用于样品x
。
作为一个小例子,让我们引导一个样本x
= 的平均值c(1,3)
:
> boot(c(1,3), mean)
> [1] 1 2 2 3
确实存在四个可能的大小为样本,并替换为;即,,和。 全部生成它们(按照列出的顺序)并将它们应用于每个。在这种情况下,计算的平均值和那些变成是,,,和,分别如图中输出。(1 ,3 )(1 ,1 )(1 ,3 )(3 ,1 )(3 ,3 )1 2 2 3boot
t
t
您从这里去哪里取决于您要如何使用引导程序。有关引导程序的完整信息包含在此输出数组中,因此通常最好显示它。这是从样本引导标准偏差的示例:
hist(boot(c(1,3,3,4,7), sd))
现在我们准备谈论蒙特卡洛模拟。 假设,例如,我们将通过使用自举分布的第95个百分位数,从个样本中自举SD的95%可信度上限。此过程将具有哪些属性?一种发现方法是假设样本是从均匀分布中随机获得的。(该应用程序通常会指出什么是合理的分布假设;在这里,我任意选择一个易于计算但不易于分析处理的假设。)我们可以通过采取这样的样本并计算UCL来模拟发生的情况:
> set.seed(17)
> quantile(boot(runif(5, min=0, max=10), sd), .95)[1]
95%
3.835870
对于结果这个特定的随机样本是3.83587。这是肯定的:如果您boot
使用相同的数据集再次调用,答案将完全相同。但是答案随不同的随机样本如何变化?通过重复几次此过程并绘制结果的直方图来找出答案:
> boot.sd <- replicate(100, quantile(boot(runif(5, min=0, max=10), sd), .95)[1])
> hist(boot.sd)
如果我们要进行另一组模拟,则随机抽奖会有所不同,从而创建(略微)不同的直方图,但与此相差无几。我们可以放心使用它来了解SD的引导UCL是如何工作的。作为参考,请注意均匀分布的标准偏差(范围从到,如此处指定)等于。正如人们希望任何盐值的UCL一样,直方图中的大多数值(四分之三或0.75)都超过了此值:10 10 / √
> length(boot.sd[boot.sd >= 10/sqrt(12)]) / length(boot.sd)
[1] 0.75
但这远没有达到我们指定(并希望)的额定95%的水平!这是模拟的价值之一:它将我们的希望与实际情况进行了比较。(为什么会有差异?我相信是因为引导SD不适用于非常小的样本。)
引导统计在概念上与任何其他统计(例如平均值或标准偏差)相同;它们往往需要很长时间才能计算出来。(请参阅boot
代码中的警告消息!)
蒙特卡洛模拟可用于研究自举统计量由于获取样本中的随机性而如何变化。在这种模拟中观察到的变化是由于在样品中的变化,未在自举的变化。
(此处未示出)由于自举的统计数据会占用大量计算的(显然,高达计算为大小的样品),可以很方便地接近引导分布。通常,这是通过创建一个“黑匣子”程序从真正的自举分布中随机获取一个值并重复调用该程序来完成的。集体输出近似于精确分布。近似值可能会由于黑盒中的随机性而发生变化-但是这种变化是近似过程的伪影。它不是(概念上)自举程序本身固有的。 n
引导程序是一种蒙特卡洛技术,因为它涉及某种类型的随机采样。如果您对同一组数据运行两次引导程序,则会得到不同的答案。您在引导程序中使用的样本越多,获得的差异就越小。
覆盖率是指结果来自相同假设抽样分布的不同数据集的变化。
我也不确定“ 蒙特卡洛变化”本身到底意味着什么。当然,应该有可能查看诸如上限(或下限)之类的事情(例如提示)在迭代过程中有多少变化。也许他们只希望您为Monte Carlo做到这一点,而不是引导程序?不过,这不是我进行练习所必需的。最好只问该短语的含义。
我对这项作业的理解是,它要求您对某种统计技术进行蒙特卡洛模拟。也就是说,您模拟了一堆随机数据集,将此技术应用于这些数据集,并存储数字以方便地稍后汇总(均值,模拟概率等)。
现在,有问题的技术是引导程序,它涉及其中的蒙特卡洛模拟(除非如wuber所示,要求您执行确切的引导程序,这极不可能)。因此,作为模拟的结果,您可能正在存储样本均值,样本标准偏差以及自举获得的均值的置信区间的限制。