Простой пример, демонстрирующий преимущества Байесовского модельного усреднения (BMA)

12

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

Я думал о простом примере с двумя моделями, из которых можно выбирать, но истинная модель генерирования данных (DGM) находится где-то посередине, и доказательства на самом деле не поддерживают ни одну из них. Поэтому, если вы выберете один и продолжите их, вы проигнорируете неопределенность модели и сделаете ошибку, но BMA, хотя истинная модель не является частью набора моделей, по крайней мере дает правильную апостериорную плотность интересующего параметра. Например, каждый день есть два прогноза погоды (А и В), и один хочет предсказать погоду лучше всего, поэтому в классической статистике вы сначала попытаетесь найти лучшего синоптика между ними, но что, если истина находится где-то посередине (то есть иногда A прав, иногда B). Но я не мог формализовать это. Нечто подобное, но я очень открыт для идей. Надеюсь, этот вопрос достаточно конкретен!

В литературе я не нашел хороших примеров из того, что я прочитал до сих пор:

  • Kruschke (2011) , хотя и является отличным введением в байесовскую статистику, на самом деле не фокусируется на BMA, а пример с броском монеты, который он имеет в главе 4, отлично подходит для введения байесовской статистики, но на самом деле не убеждает коллег-исследователей использовать BMA. («Почему у меня опять три модели: одна говорит, что монета справедлива, а две - в каком-то направлении?»)
  • Все остальные материалы, которые я читал ( Koop 2003 , Koop / Poirier / Tobias (2007) , Hoeting и др. (1999) и множество других), являются отличными ссылками, но я не нашел в них простого игрушечного примера.

Но, может быть, я просто пропустил хороший источник здесь.

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

Christoph_J
источник
Короткое обновление: я только что натолкнулся на эту презентацию, которая ссылается на парадокс Фридмана в разделе 2. Есть краткий пример, в котором моделируется 39 случайных ковариат, и если кто-то просто ищет лучшую модель, в конечном итоге он находит значимые ковариаты. Усреднение модели, очевидно, является лекарством от этой проблемы. Я не публикую здесь решение с кодом, потому что, честно говоря, я не знаю, как там получены цифры.
Christoph_J
(Продолжение) Что именно они усредняют по? Лучший параметр? Все параметры (я думаю, что это имеет смысл только в этом конкретном примере). Тем не менее, я думаю, что диаграммы в сочетании с намеком на парадокс Фридмана весьма полезны. Может быть, это помогает некоторым.
Christoph_J

Ответы:

8

Я сделал нечто подобное недавно. Не столько пытаясь убедить других, но выполняя небольшой проект, который позволил мне почувствовать вкус BMA. Я создал генератор данных с двоичным ответом, тремя независимыми переменными, которые влияли на ответ, и семью переменными, которые не оказали никакого влияния на ответ. Затем я сравнил результаты BMA с частыми оценками логистической регрессии. Я думаю, что, по крайней мере, в этом случае подход БМА кажется довольно хорошим. Если вы хотите сделать его более доступным, вы всегда можете назвать переменные или что-то еще вместо того, чтобы называть их общими и .уXy

Код R, который я использовал для этого, представлен ниже. Надеюсь, что это может вдохновить вас!

# The sample size
n <- 100

# The 'true' coefficient vector
Beta <- cbind(c(-1.5, 0.45, -3))

# Generate the explanatory variables which have an effect on the outcome
set.seed(1)
X <- cbind(rnorm(n, 0, 1), rnorm(n, 4, 2), rnorm(n, 0.5, 1))

# Convert this into probabilities
prob <- 1/(1+exp(-X %*% Beta))

# Generate some uniform numbers. If the elements are smaller than the corresponding elements in the prob vector, then return 1.
set.seed(2)
runis <- runif(n, 0, 1)
y <- ifelse(runis < prob, 1, 0)

# Add the nonsense variables
X <- cbind(X, rpois(n, 3))        # Redundant variable 1 (x4)
X <- cbind(X, rexp(n, 10))        # Redundant variable 2 (x5)
X <- cbind(X, rbeta(n, 3, 10))    # Redundant variable 3 (x6)
X <- cbind(X, rbinom(n, 10, 0.5)) # Redundant variable 4 (x7)
X <- cbind(X, rpois(n, 40))       # Redundant variable 5 (x8)
X <- cbind(X, rgamma(n, 10, 20))  # Redundant variable 6 (x9)
X <- cbind(X, runif(n, 0, 1))     # Redundant variable 7 (x10)


# The BMA
library(BMA)
model <- bic.glm(X, y,  glm.family="binomial", factor.type=FALSE, thresProbne0 = 5, strict = FALSE)

# The frequentist model
model2 <- glm(y~X, family = "binomial")

old.par <- par()
par(mar=c(3,2,3,1.5))
plot(model, mfrow=c(2,5))
par(old.par)

summary(model)
summary(model2)
hejseb
источник
2
Это хороший пример, так что +1 за него. Однако, как вы уже отметили, это не очень помогает убедить других использовать BMA. На самом деле, я запускаю его, и даже потребовалось некоторое время, чтобы убедить меня, что BMA здесь лучше, чем классический подход: лучшая модель - это не истинная модель (лучшая модель включает только x2 и x3), а параметры для model2 - нет так много, по крайней мере для соответствующих параметров. Тем не менее, он показывает некоторые важные параметры x5 и x6, которых там быть не должно, и BMA отлично говорит вам, что это несущественно, так что это плюс для BMA.
Christoph_J
2

Хороший ресурс для этого:
Байесовская модель усреднения с помощью BMS. Автор Stefan Zeugner (2012)

Он использует R-пакет BMS , более подробную информацию можно найти здесь:
http://bms.zeugner.eu/

Два практических руководства по воспроизведению реальных примеров с пакетом можно найти здесь:

Более общее мотивационное и текущее введение в байесовские методы - следующая статья:

Время пришло: байесовские методы анализа данных в организационных науках Джона К. Крушке, Германа Агииниса и Гарри Джу

vonjd
источник
Спасибо за ссылки, но они не совсем то, что я после. Я действительно знал и использовал пакет раньше (это здорово), и я согласен, что их документация действительно поучительна. Но опять же, авторы намерены не убедить кого-то (надеюсь, менее чем за 5 минут), почему они должны использовать BMA, но, учитывая, что они хотят его использовать, как это сделать с их пакетом. Итак, они начинают с attitudeпримера, и если вы прокрутите свою первую ссылку, на самом деле не будет таблицы или фигуры, на которых вы бы кричали: «Черт, я рад, что использовал BMA!»
Christoph_J
Продолжение: Просто чтобы прояснить, это, конечно, ни в коем случае не критика их документации: это не их намерение в первую очередь. Может быть, привести пример, который я после. Предположим, вы хотите объяснить проблему выбросов в линейной регрессии. Вы, вероятно, начнете с чего-то вроде диаграмм здесь . Конечно, проблема с реальными данными никогда не будет такой простой. Это будет трудно, как вы определяете выбросы и т. Д. Но с такой диаграммой все знают, что происходит.
Christoph_J
3
@Christoph_J: Знаете ли вы эту статью: indiana.edu/~kruschke/articles/KruschkeAJ2012.pdf - речь идет не столько о BMA, сколько о том, чтобы убедить кого-либо использовать байесовские методы - возможно, это то, что полезно для Вы :-)
vonjd
1
Я не знал этого, и это действительно хорошая вводная статья о байесовских методах, так что +1 за ссылку. Спасибо.
Christoph_J
@Christoph_J: Я отредактировал сообщение соответствующим образом: ваш +1 за ответ не сработал, он все еще равен 0 (?!?), Поэтому не могли бы вы повторить это еще раз - Спасибо :-)
vonjd