Методы передискретизации / моделирования: Монте-Карло, начальная загрузка, джекнифинг, перекрестная проверка, рандомизированные тесты и тесты перестановки


75

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

Скажем, у меня следующая ситуация - я хочу выполнить ANOVA с переменной Y ( Yvar) и переменной X ( Xvar). Xvarкатегорически. Я заинтересован в следующих вещах:

(1) Значимость р-значений - частота ложных открытий

(2) эффект размер Xvarуровней

Yvar <- c(8,9,10,13,12, 14,18,12,8,9,   1,3,2,3,4)
Xvar <- c(rep("A", 5),  rep("B", 5),    rep("C", 5))
mydf <- data.frame (Yvar, Xvar)

Не могли бы вы объяснить мне различия выборки с помощью явных отработанных примеров того, как работает метод повторной выборки?

Редактирует: Вот мои попытки:

Bootstrap 10 образцов начальной загрузки, количество образцов с заменой, означает, что образцы могут быть повторены

boot.samples <- list()
for(i in 1:10) {
   t.xvar <- Xvar[ sample(length(Xvar), length(Xvar), replace=TRUE) ]
   t.yvar <- Yvar[ sample(length(Yvar), length(Yvar), replace=TRUE) ]
   b.df <- data.frame (t.xvar, t.yvar) 
   boot.samples[[i]] <- b.df 
}
str(boot.samples)
 boot.samples[1]

Перестановка: 10 образцов перестановок, количество образцов без замены

 permt.samples <- list()
    for(i in 1:10) {
       t.xvar <- Xvar[ sample(length(Xvar), length(Xvar), replace=FALSE) ]
       t.yvar <- Yvar[ sample(length(Yvar), length(Yvar), replace=FALSE) ]
       b.df <- data.frame (t.xvar, t.yvar) 
       permt.samples[[i]] <- b.df 
    }
    str(permt.samples)
    permt.samples[1]

Монте-Каро Моделирование

Хотя термин «повторная выборка» часто используется для обозначения любого повторного моделирования случайной или псевдослучайной выборки, когда «повторная выборка» выполняется из известного теоретического распределения, правильным термином является моделирование «Монте-Карло».

Я не уверен насчет всех вышеперечисленных условий и правильности моих изменений. Я нашел некоторую информацию о Джекнифе, но я не мог укротить ее в своей ситуации.


3
Jackknife - более простой предшественник начальной загрузки. en.wikipedia.org/wiki/Jackknife_(statistics)
EngrStudent

4
Точнее:
складной нож

Ответы:


123

Мы можем найти различные методы Resampling , или условно называемые методы « моделирования », которые зависят от повторной выборки или перетасовки образцов. Могут быть различия во мнениях относительно правильной терминологии, но следующее обсуждение пытается обобщить и упростить то, что доступно в соответствующей литературе:

Методы передискретизации используются в (1) оценке точности / точности выборочной статистики с использованием подмножества данных (например, Джекнифинг) или случайного рисования с заменой из набора точек данных (например, начальной загрузки) (2) Обмен метками на точках данных при выполнении значимости тесты ( тесты перестановки, также называемые точными тестами, тестами рандомизации или тестами повторной рандомизации) (3) Проверка моделей с использованием случайных подмножеств (начальной загрузки, перекрестной проверки) (см. википедию: методы повторной выборки )

BOOTSTRAPING

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

Основная идея начальной загрузки заключается в том, что вывод о совокупности из выборочных данных ( выборка → популяция ) можно смоделировать путем повторной выборки выборочных данных и выполнения вывода (повторная выборка → выборка). Поскольку совокупность неизвестна, истинная ошибка в выборочной статистике относительно ее значения численности неизвестна. В начальных загрузках «популяция» фактически является выборкой, и это известно; следовательно, качество вывода из данных повторной выборки → «истинная» выборка поддается измерению ». см. википедию

Yvar <- c(8,9,10,13,12, 14,18,12,8,9,   1,3,2,3,4)

#To generate a single bootstrap sample
sample(Yvar, replace = TRUE) 

 #generate 1000 bootstrap samples
boot <-list()
for (i in 1:1000) 
   boot[[i]] <- sample(Yvar,replace=TRUE)

В однофакторных задачах обычно приемлемо повторять выборку отдельных наблюдений с заменой («повторная выборка случая»). Здесь мы повторяем выборку данных с заменой, и размер повторной выборки должен быть равен размеру исходного набора данных.

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

Yvar <- c(8,9,10,13,12, 14,18,12,8,9,   1,3,2,3,4)
Xvar <- c(rep("A", 5),  rep("B", 5),    rep("C", 5))
mydf <- data.frame (Yvar, Xvar)    

boot.samples <- list()
for(i in 1:10) {
   b.samples.cases <- sample(length(Xvar), length(Xvar), replace=TRUE) 
   b.mydf <- mydf[b.samples.cases,] 
   boot.samples[[i]] <- b.mydf
}
str(boot.samples)
 boot.samples[1]

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

« Параметрическая начальная загрузка - параметрическая модель подгоняется к данным, часто по максимальной вероятности, и выборки случайных чисел берутся из этой подобранной модели . Обычно выборочная выборка имеет тот же размер выборки, что и исходные данные. Затем количество или оценка на основе этих данных рассчитывается интерес. Этот процесс выборки повторяется много раз, как и для других методов начальной загрузки. Использование параметрической модели на этапе выборки методики начальной загрузки приводит к процедурам, которые отличаются от процедур, полученных с применением базовой статистической теории. сделать вывод для той же модели. "(см. Википедия ). Ниже приводится параметрическая начальная загрузка с допущением нормального распределения со средним и стандартным отклонением параметров.

Yvar <- c(8,9,10,13,12, 14,18,12,8,9,   1,3,2,3,4)

# parameters for Yvar 
mean.y <- mean(Yvar)
sd.y <- sd(Yvar)

#To generate a single bootstrap sample with assumed normal distribution (mean, sd)
rnorm(length(Yvar), mean.y, sd.y)

 #generate 1000 bootstrap samples
boot <-list()
for (i in 1:1000) 
   boot[[i]] <- rnorm(length(Yvar), mean.y, sd.y)

Существуют и другие варианты начальной загрузки, пожалуйста, обратитесь к странице Википедии или любой хорошей статической книге по повторной выборке.

Jacknife

«Оценка параметра складного ножа для параметра определяется путем систематического исключения каждого наблюдения из набора данных и вычисления оценки и последующего нахождения среднего значения этих вычислений. Для выборки размера N оценка складного ножа определяется путем агрегирования оценок каждой N − 1оценки. в образце. " см .: википедия . Ниже показано, как складывать Yvar.

jackdf <- list()
jack <- numeric(length(Yvar)-1)

for (i in 1:length (Yvar)){

for (j in 1:length(Yvar)){
     if(j < i){ 
            jack[j] <- Yvar[j]
}  else if(j > i) { 
             jack[j-1] <- Yvar[j]
}
}
jackdf[[i]] <- jack
}
jackdf

«Обычный загрузчик и складной нож, оценивают изменчивость статистики по изменчивости этой статистики между подвыборками, а не из параметрических предположений . Для более общего складного ножа, ножа для наблюдения delete-m, загрузочный ловушку можно рассматривать как случайную Приближение этого. Оба дают одинаковые численные результаты, поэтому каждый может рассматриваться как приближение к другому. " Посмотрите этот вопрос на Bootstrap vs Jacknife.

Рандомизированные тесты

«В параметрических тестах мы случайным образом выбираем из одной или нескольких популяций. Мы делаем определенные предположения об этих популяциях, чаще всего о том, что они обычно распределены с равными дисперсиями. Мы устанавливаем нулевую гипотезу, которая сформулирована в терминах параметров, часто в форме m1 -m2 = 0. Мы используем нашу выборочную статистику в качестве оценки соответствующих параметров популяции и вычисляем статистику теста (например, при тестировании). Например: в t-тесте Стьюдента на различия в средних, когда отклонения неизвестны, но рассматриваются быть равным. Гипотеза интереса заключается в том, что H0: m1 = m2. Одна из альтернативных гипотез была бы сформулирована как:HA: m1 < m2, Учитывая две выборки, взятые из популяций 1 и 2, предполагая, что это нормально распределенные популяции с равными отклонениями, и что выборки были отобраны независимо и произвольно из каждой популяции, тогда можно разработать статистику, распределение которой известно, для проверки H0.

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

Другим альтернативным подходом является рандомизированный подход - «процесс случайного присвоения рангов наблюдениям, не зависящим от знания, членом которого является наблюдение. Рандомизирующий тест использует такую ​​процедуру, но делает это, воздействуя на наблюдения, а не на объединение». ранжирование наблюдений. По этой причине распределение аналогичной статистики (сумма наблюдений в одной выборке) не может быть легко сведено в таблицу, хотя теоретически можно перечислить такое распределение "( см. )

Рандомизационные тесты отличаются от параметрических тестов почти во всех отношениях. (1) Нет требования, чтобы у нас были случайные выборки из одной или нескольких популяций - фактически мы обычно не выбирали случайно. (2) Мы редко думаем с точки зрения групп населения, из которых получены данные, и нет необходимости предполагать что-либо о нормальности или гомоскедастичности. (3) Наша нулевая гипотеза не имеет ничего общего с параметрами, но сформулирована довольно расплывчато, так как например, гипотеза о том, что лечение не влияет на то, как участники выполняют. (4) Поскольку нас не интересуют группы населения, нас не интересует оценка (или даже тестирование) характеристик этих групп населения. (5) Мы рассчитываем некоторые своего рода тестовая статистика, однако мы не сравниваем эту статистику с табличными распределениями. Вместо, мы сравниваем его с результатами, которые мы получаем, когда мы неоднократно рандомизируем данные по группам, и вычисляем соответствующую статистику для каждой рандомизации. (6) Даже более, чем параметрические тесты, рандомизированные тесты подчеркивают важность случайного назначения участников на лечение ».см .

Тип рандомизированного теста, который очень популярен, является тестом перестановки. Если у нас размер выборки 12 и 5, возможна полная перестановка C(12,5) = 792. Если бы наши размеры выборки составляли 10 и 15, тогда было бы возможно более 3,2 миллиона мероприятий. Это вычислительная задача: что тогда? Пример . Когда вселенная возможных аранжировок слишком велика, чтобы перечислять, почему бы не выбрать выборки из этой вселенной независимо и произвольно? Распределение статистики теста по этой серии выборок может быть затем сведено в таблицу, вычислено ее среднее значение и дисперсия, а также оценена частота ошибок, связанных с проверкой гипотезы.

Тест на разогрев

Согласно википедии «А тест перестановки (также называемый тест рандомизации , тест повторной рандомизации , или точного критерия ) представляет собой тип статистического критерия значимости , в котором распределение тестовой статистики при нулевой гипотезе получается путем вычисления всех возможных значений тестовой статистики при перестановках меток на наблюдаемых точках данных. Тесты перестановок существуют для любой тестовой статистики, независимо от того, известно или нет ее распределение. Таким образом, всегда можно выбрать статистику, которая наилучшим образом различает гипотезу и альтернативу и что сводит к минимуму потери ".

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

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

См. Вопрос о перестановке и начальной загрузке: «Тест перестановки лучше всего подходит для проверки гипотез, а метод начальной загрузки лучше всего подходит для оценки доверительных интервалов ».

Таким образом, чтобы выполнить перестановку в этом случае, мы можем просто изменить replace = FALSEв приведенном выше примере начальной загрузки.

Yvar <- c(8,9,10,13,12, 14,18,12,8,9,   1,3,2,3,4)
     #generate 1000 bootstrap samples
       permutes <-list()
    for (i in 1:1000) 
       permutes[[i]] <- sample(Yvar,replace=FALSE)

В случае более чем одной переменной, просто выбор строк и изменение порядка не будет иметь никакого значения, так как данные останутся такими же. Таким образом, мы переставляем переменную y. Что-то, что вы сделали, но я не думаю, что нам не нужны двойные перетасовки обоих xи y variables(как вы сделали).

Yvar <- c(8,9,10,13,12, 14,18,12,8,9,   1,3,2,3,4)
Xvar <- c(rep("A", 5),  rep("B", 5),    rep("C", 5))
mydf <- data.frame (Yvar, Xvar)

 permt.samples <- list()
    for(i in 1:10) {
       t.yvar <- Yvar[ sample(length(Yvar), length(Yvar), replace=FALSE) ]
       b.df <- data.frame (Xvar, t.yvar) 
       permt.samples[[i]] <- b.df 
    }
    str(permt.samples)
    permt.samples[1]

МЕТОДЫ МОНТЕ-КАРЛО

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

«В прикладной статистике методы Монте-Карло обычно используются для двух целей:

(1) Сравнить конкурирующие статистические данные для небольших выборок в реальных условиях данных. Хотя погрешность типа I и энергетические свойства статистики можно рассчитать для данных, взятых из классических теоретических распределений (например, нормальная кривая, распределение Коши) для асимптотических условий (например, бесконечный размер выборки и бесконечно малый эффект обработки), реальные данные часто делают не имеют таких распределений.

(2) Предоставить реализации тестов гипотез, которые более эффективны, чем точные тесты, такие как тесты перестановок (которые часто невозможно вычислить), и в то же время более точные, чем критические значения для асимптотических распределений.

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

И MC, и тест перестановки иногда называются рандомизированными тестами . Разница в том, что в MC мы выбираем выборки перестановок, скорее, используя все возможные комбинации, см .

ПЕРЕКРЕСТНАЯ ПРОВЕРКА

Идея, выходящая за рамки перекрестной проверки, заключается в том, что модели следует тестировать с использованием данных, которые не использовались для соответствия модели. Перекрестная проверка, возможно, чаще всего используется в контексте прогнозирования .

«Перекрестная проверка - это статистический метод для проверки прогнозирующей модели. Подмножества данных сохраняются для использования в качестве проверочных наборов ; модель соответствует остальным данным (обучающему набору) и используется для прогнозирования для проверочного набора. Усреднение качество прогнозов по проверочным наборам дает общую меру точности прогнозирования.

Одна форма перекрестной проверки исключает одно наблюдение за раз; это похоже на складной нож. Другая, K-кратная перекрестная проверка, разбивает данные на K подмножеств; каждый из них поочередно используется в качестве набора для проверки. "см. Википедию . Перекрестная проверка обычно выполняется с количественными данными. Вы можете каким-то образом преобразовать ваши качественные (факторные данные) в количественные, чтобы соответствовать линейной модели и протестировать эту модель. стратегия удержания, при которой 50% данных используются для прогнозирования модели, а остальные - для тестирования. Предположим, что Xvarэто также количественная переменная.

    Yvar <- c(8,9,10,13,12, 14,18,12,8,9,   1,3,2,3,4)
    Xvar <- c(rep(1, 5),  rep(2, 5),    rep(3, 5))
    mydf <- data.frame (Yvar, Xvar)
    training.id <- sample(1:nrow(mydf), round(nrow(mydf)/2,0), replace = FALSE)
    test.id <- setdiff(1:nrow(mydf), training.id)
   # training dataset 
    mydf.train <- mydf[training.id]

    #testing dataset 
    mydf.test <- mydf[test.id]

В отличие от тестов начальной загрузки и перестановки, набор данных перекрестной проверки для обучения и тестирования отличается. На следующем рисунке показана сводная информация о передискретизации различными методами.

введите описание изображения здесь

Надеюсь это немного поможет.


23
Это впечатляет - и особенно так, поскольку это ваш первый ответ! Я надеюсь, что вы продолжите участвовать здесь, и я с нетерпением жду ваших будущих вкладов в наш сайт.
whuber

Этот ответ такой большой большой ответ. Тем не менее, некоторые ссылки, похоже, заброшены. Кто-нибудь знает, где находятся ссылки?
tintinthong

8

Вот мой вклад.

Данные

Yvar <- c(8,9,10,13,12,
          14,18,12,8,9,
          1,3,2,3,4)
Xvar <- rep(LETTERS[1:3], each=5)
mydf <- data.frame(Yvar, Xvar)

Монте-Карло

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

Бутстрапирование

Цель состоит в том, чтобы иметь представление о неопределенности статистики, рассчитанной по наблюдаемой выборке. Например: мы можем вычислить , что образец среднего Yvar составляет 8,4, но , как некоторые мы из населения означают для Yvar? Хитрость заключается в том, чтобы сделать так, как если бы выборка была популяцией, и многократно делать выборку из этой фальшивой популяции.

n <- 1000
bootstrap_means <- numeric(length=n)
for(i in 1:n){
   bootstrap_sample <- sample(x=Yvar, size=length(Yvar), replace=TRUE)
   bootstrap_means[i] <- mean(bootstrap_sample)
}
hist(bootstrap_means)

Мы просто взяли образцы и не предполагали никакого параметрического распределения. Это непараметрический бутстрап . Если вам удобнее предположить, например, что Xvar нормально распределен, вы также можете выбрать из нормального распределения ( rnorm(...)), используя приблизительное среднее значение и стандартное отклонение, это будет параметрическая начальная загрузка .

Другие пользователи могут, возможно, дать приложения начальной загрузки в отношении размеров эффекта Xvarуровней?

Jackknifing

Складной нож кажется немного устаревшим. Просто для полноты, вы можете сравнить его более или менее с начальной загрузкой, но стратегия здесь, чтобы увидеть, что произойдет, если мы пропустим одно наблюдение (и повторим это для каждого наблюдения).

Перекрестная проверка

При перекрестной проверке вы разделяете свой (обычно большой) набор данных на обучающий набор и проверочный набор, чтобы увидеть, насколько хорошо ваша оценочная модель способна прогнозировать значения в проверочном наборе. Лично я еще не видел заявления о перекрестной проверке ANOVA, поэтому я предпочитаю оставить эту часть другим.

Рандомизационные / перестановочные тесты

Будьте осторожны, терминология не согласована. См. Разница между рандомизированным тестом и тестом перестановки .

Нулевая гипотеза состояла бы в том, что между группами A, B и C не существует различий, поэтому не должно иметь значения, если мы случайно поменяем метки 15 значений Xvar. Если первоначально наблюдаемое значение F (или другая статистика) не совпадает с полученными после случайного обмена метками, то это, вероятно, имело значение, и нулевая гипотеза может быть отклонена.

observed_F_value <- anova(lm(Yvar ~ Xvar))$"F value"[1]

n <- 10000
permutation_F_values <- numeric(length=n)

for(i in 1:n){
   # note: the sample function without extra parameters defaults to a permutation
   temp_fit <- anova(lm(Yvar ~ sample(Xvar)))
   permutation_F_values[i] <- temp_fit$"F value"[1]
}

hist(permutation_F_values, xlim=range(c(observed_F_value, permutation_F_values)))
abline(v=observed_F_value, lwd=3, col="red")
cat("P value: ", sum(permutation_F_values >= observed_F_value), "/", n, "\n", sep="")

гистограмма

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

Здесь мы явно не прошли все возможные перестановки меток, это оценка P-значения по методу Монте-Карло . С небольшими наборами данных вы можете пройти через все возможные перестановки, но приведенный выше R-код немного проще для понимания.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.