Ця плутанина між процедурами завантаження і процедурами Монте-Карло постійно повторюється, тому, можливо, це є гарним місцем для вирішення всіх питань. (Приклади 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
2( 1 , 3 )( 1 , 1 )( 1 , 3 )( 3 , 1 )( 3 , 3 )boot
t
t
1223відповідно, як показано на виході.
( 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