Бутстрап, Монте-Карло

12

Мне задали следующий вопрос в рамках домашней работы:

Разработайте и внедрите имитационное исследование, чтобы изучить производительность начальной загрузки для получения 95% доверительных интервалов по среднему значению однофакторной выборки данных. Ваша реализация может быть в R или SAS.

Аспектами эффективности, которые вы, возможно, захотите рассмотреть, являются покрытие доверительного интервала (т. Е. Какая доля раз, когда доверительный интервал содержит истинное среднее значение) и вариация Монте-Карло (т. Е. Насколько различаются верхний и нижний доверительные пределы между симуляциями) '

Кто-нибудь знает, как это сделать в вариативном аспекте Монте-Карло? Я не могу даже разработать алгоритм или еще что-нибудь. Это связано с интеграцией Монте-Карло? Благодаря!

Сара
источник

Ответы:

18

Эта путаница между процедурами начальной загрузки и процедурами Монте-Карло повторяется, поэтому, возможно, это лучшее место для решения этой проблемы. (Примеры 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/122.887

> length(boot.sd[boot.sd >= 10/sqrt(12)]) / length(boot.sd)
[1] 0.75

Но это далеко от номинальных 95%, которые мы указали (и надеялись)! Это одна из ценностей симуляции: она сравнивает наши надежды с тем, что действительно происходит. (Почему несоответствие? Я полагаю, это потому, что загрузка SD не работает с очень маленькими выборками.)

Рассмотрение

  • Статистика начальной загрузки концептуально такая же, как и любая другая статистика, такая как среднее или стандартное отклонение; они просто тратят много времени на вычисления. (Смотрите предупреждающее сообщение в bootкоде!)

  • Симуляция Монте-Карло может быть полезна для изучения того, как меняется статистика начальной загрузки из-за случайности в получении выборок. Изменения, наблюдаемые при таком моделировании, обусловлены изменением в образцах, а не изменением в начальной загрузке.

  • nnn

Whuber
источник
+1 Это очень мило. Я не думаю, что мог бы сделать это лучше! Я хотел бы просто добавить, что у меня есть некоторые документы о производительности начальной загрузки в оценке частоты ошибок и для доверительных интервалов при оценке отклонений. Эти результаты можно найти во втором издании моей книги по методам начальной загрузки и моей книге по начальной загрузке с приложениями к R.
Майкл Р. Черник,
Ссылки Amazon на книги находятся здесь: amazon.com/… amazon.com/Introduction-Bootstrap-Methods-Applications/dp/…
Майкл Р. Черник,
Я бы просто сказал, что идея состоит в том, чтобы моделировать данные из известных распределений, применяя интересующую процедуру начальной загрузки (например, доверительные интервалы для параметра или оценку частоты ошибок классификатора), и вы можете оценить, насколько хорошо это происходит, потому что вы знаете правду.
Майкл Р. Черник
5

Бутстрап - это метод Монте-Карло, который включает в себя некоторый тип случайной выборки. Если вы дважды запустите загрузчик на одном и том же наборе данных, вы получите разные ответы. Чем больше сэмплов вы используете в начальной загрузке, тем меньше вариаций.

Охват относится к изменению результатов для разных наборов данных из одного и того же гипотетического распределения выборки.

Саймон Бирн
источник
спасибо, я предполагаю, что это просто означает придумать код, чтобы увидеть, изменяются ли пределы доверия между симуляциями!
Сара
7
Чтобы быть точным (педантичный?), Мы должны уточнить , что бутстрап не сам по себе метод Монте - Карло. Тем не менее, он обычно аппроксимируется с помощью моделирования Монте-Карло, поскольку не всегда можно рассчитать конкретные интересующие количества. Я нахожу формулировку проблемы очень склонной к неправильному толкованию! Нужно быть осторожным, чтобы отличить ошибку выборки от ошибки аппроксимации Монте-Карло . Последнее , как вы указали, только разумно оценивается путем многократного повторения приближения начальной загрузки MC для одной и той же выборки. :)
кардинал
1

Я не уверен, что подразумевается под « вариацией Монте-Карло » как таковой. Конечно, должно быть возможно посмотреть на то, как сильно различаются итерации в таких вещах, как значение верхнего (или нижнего) предела, например (подсказка). Возможно, они хотят, чтобы вы делали это только для Монте-Карло, а не для начальной загрузки? Это не требование для упражнения, хотя. Лучше всего просто спросить, что означает эта фраза.

Gung - Восстановить Монику
источник
Спасибо за вашу помощь! Возможно, я просто сейчас посмотрю на разницу между верхним и нижним пределами и спрошу о Монте-Карло позже. Теперь просто работать, как я иду об этом ..
Sarah
Здесь есть несколько возможностей. Один верхний-нижний (т.е. разница). Моя интерпретация формулировки в вопросе - это вариация в верхнем и вариация в нижнем (т.е. 2 разных вариации), но я полагаю, что не могу быть уверен. С другой стороны, это часть вашего вопроса, как провести симуляцию MC в R?
gung - Восстановить Монику
Я пришел к выводу, что он также искал 2 различных варианта, так что, думаю, я попробую!
Сара
1
Если честно, то, что мне сейчас интересно, это то, хорошо ли вам идти в этот момент, или вам нужны дополнительные подсказки о том, как подойти к тому, что мы догадались, о чем спрашивает вопрос?
gung - Восстановить Монику
1
Итак, на каждой итерации вы сохраняете верхний и нижний пределы (подсказка)?
gung - Восстановить Монику
1

Насколько я понимаю, это домашнее задание заключается в том, что он просит вас провести симуляцию по методу Монте-Карло для определенной статистической техники. То есть вы моделируете несколько случайных наборов данных, применяете эту технику к этим наборам данных и сохраняете числа для последующего удобного суммирования (средние значения, моделируемые вероятности и т. Д.).

Теперь рассматриваемая методика - это бутстрап, который включает в себя симуляцию Монте-Карло внутри нее (если, как не показано, вас попросят выполнить точный бутстрап, что весьма маловероятно). Таким образом, в качестве результатов вашего моделирования вы можете хранить среднее значение выборки, стандартное отклонение выборки и пределы доверительного интервала для среднего значения, полученного при начальной загрузке.

n=10

Stask
источник
3
Одна вещь, которую я узнал, работая с точным бутстрапом, заключается в том, что стандартный КИ с нормальной теорией часто будет работать намного лучше с небольшими выборками, даже если они искажены. Бутстрап приходит в себя с большими выборками: теория асимптотическая, а не точная.
whuber
2
@ Whuber, это интересное наблюдение. Я обычно подчеркиваю асимптотический характер бутстрапа (см. Книгу Питера Холла «Расширения бутстрэпа и Эджворта», чтобы понять почему), но на этот раз не удалось.
StasK