Что такое репликация Bootstrap?

Для тех, кто догоняет здесь, бутстрап-выборка относится к процессу выборки данного набора данных «с заменой»… И именно здесь большинство людей теряются. Вы берете много образцов и строите распределение, чтобы отметить свой доверительный интервал.

Возьмем небольшой пример.

Крипто в колледже

Допустим, вы хотите узнать, как население колледжа относится к криптовалюте; ну, скорее всего, вы не сможете собрать ответы от всех в школе; что, вероятно, произойдет, так это то, что вы раздадите какой-нибудь опрос и получите несколько ответов, которые, как вы надеетесь, отражают общее мнение населения, хорошее или плохое.

Хотя у вас есть четкое представление о распределении среди ваших респондентов, вы хотите создать реалистичный доверительный интервал, который будет более показательным для всей школы. Вот тут-то и появляется ускоренная репликация!

Отбор проб с заменой

Пока мы знаем, что репликация начальной загрузки - это выборочный подход. Основная идея здесь в том, что когда выбран один сэмпл, его можно выбирать снова и снова. Это служит цели воссоздания случайного повторения типа респондента, которое на самом деле может быть вызвано случайной случайностью.

Каждый образец начальной загрузки называется репликацией. В этом случае допустим 1000 повторений.

Как только у нас есть 1000 повторов или образцов, у нас теперь есть 1000 значений для выборочного среднего.

Из этого распределения мы получим наш фактический доверительный интервал.

Допустим, нам нужен доверительный интервал 95%; мы бы получили это, посмотрев на наше начальное распределение и взяв 2,5-е и 97,5-е значения в качестве нашего интервала.

Давайте посмотрим на код!

library(infer) 
replicates <- crypto_opinions %>% 
    specify(response = opinion, success = "positive") %>% 
    generate(reps = 1, type = "bootstrap")
replicates %>% 
    summarize(prop_high = mean(response == 'positive')) %>% 
    pull()

Мы используем specify, чтобы изолировать переменную ответа, которая нам важна, и значение переменной, определяющее «успех». Оттуда мы используем generate для создания нашей первой репликации начальной загрузки. Вы также заметите, что мы указываем type как bootstrap. Затем мы используем суммирование и вытягивание, чтобы сгенерировать долю указанного уровня «положительный».

replicates <- crypto_opinions %>% 
    specify(response = opinion, success = "positive") %>%        generate(reps = 1000, type = "bootstrap")%>% calculate(stat = "prop")

Как и в предыдущем блоке кода, мы увеличили количество повторений до 1000 и теперь связываем функцию calculate. Функция calculate создает фрейм данных с одной записью для каждой «stat» реплики, которая соответствует этой реплике.

ggplot(replicates, aes(stat)) +
   geom_density()

На приведенной выше диаграмме показана диаграмма плотности или распределение среднего результата для каждой реплики.

Отсюда просто вычислить стандартное отклонение и использовать его для определения верхней и нижней границы вашего диапазона!

Lower_bound <- mean(replicates$stat) - sd(replicates$stat) * 2 upper_bound <- mean(replicates$stat) + sd(replicates$stat) * 2

Вывод

Надеюсь, вам понравился этот пост и он сэкономит вам время! Пожалуйста, поделитесь тем, что работает, а что нет!

Не стесняйтесь проверить некоторые из моих других сообщений на datasciencelessons.com

Поздравления с наукой о данных!