Эта путаница между процедурами начальной загрузки и процедурами Монте-Карло повторяется, поэтому, возможно, это лучшее место для решения этой проблемы. (Примеры 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)
}
Быстрый просмотр подтвердит, что это детерминированный расчет: случайные значения не генерируются и не используются. (Я оставлю детали его внутренней работы для заинтересованных читателей, чтобы выяснить для себя.)
Аргументы to bootпредставляют собой набор числовых данных в массиве xи ссылку tна функцию (которая может быть применена к массивам точно так же x) для возврата одного числового значения; другими словами, tэто статистика . Он генерирует все возможные образцы с заменой от xи применяется tк каждому из них, в результате чего получает один номер для каждого такого образца: Это самозагрузки в двух словах. Возвращаемое значение представляет собой массив , представляющий точное распределение начальной загрузки из tдля образца x.
В качестве крошечного примера давайте загрузим среднее значение для образца x= c(1,3):
> boot(c(1,3), mean)
> [1] 1 2 2 3
2(1,3)(1,1)(1,3)(3,1)(3,3)boottt1223соответственно, как показано на выходе.
(1,3,3,4,7)
hist(boot(c(1,3,3,4,7), sd))

5
> 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)

01010/12−−√≈2.887
> length(boot.sd[boot.sd >= 10/sqrt(12)]) / length(boot.sd)
[1] 0.75
Но это далеко от номинальных 95%, которые мы указали (и надеялись)! Это одна из ценностей симуляции: она сравнивает наши надежды с тем, что действительно происходит. (Почему несоответствие? Я полагаю, это потому, что загрузка SD не работает с очень маленькими выборками.)
Рассмотрение
Статистика начальной загрузки концептуально такая же, как и любая другая статистика, такая как среднее или стандартное отклонение; они просто тратят много времени на вычисления. (Смотрите предупреждающее сообщение в bootкоде!)
Симуляция Монте-Карло может быть полезна для изучения того, как меняется статистика начальной загрузки из-за случайности в получении выборок. Изменения, наблюдаемые при таком моделировании, обусловлены изменением в образцах, а не изменением в начальной загрузке.
nnn