Указание априоров для каждого предиктора в rstanarm - PullRequest
2 голосов
/ 04 апреля 2019

Я разрабатываю байесовскую модель регрессии с помощью rstanarm, которая объединяет полиномиальные, биномиальные и масштабные предикторы в зависимости от масштаба. Как обычная модель, моя модель будет выглядеть так, как показано ниже:

````
 *
 deaths - scale
 gender - binomial
 hours - scale
 time - multinomial (i.e., morning, night, afternoon)
 *
lm(deaths ~ gender + hours + time)

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

````
For example, lets say:
1. gender follows a beta prior
2. hours follows a normal prior
3. time follows a student_t

Как мне реализовать эту информацию?

Любая помощь приветствуется, Спасибо!

1 Ответ

1 голос
/ 04 апреля 2019

β1 ∈ (−15, −5) означает (на основе предварительной информации), что мы ожидаем, что коэффициент x1 будет в диапазоне от -15 до -5, поэтому мы выбираем нормальное со средним = -10 и сд = 5. Аналогично, β2 ∈ (−1,1) означает, что мы ожидаем, что коэффициент x2 будет в диапазоне от -1 до 1, поэтому мы выбираем нормальный априор со средним значением = 0 и sd = 2. Эти предыдущие варианты обозначаются в виньетке как β∼Normal ((- 10,0), (5,0,0,2)) (матричная форма среднего значения и дисперсия / ковариация).

Для конкретного примера, скажем, мы хотим согласовать следующую модель с фреймом данных mtcars:

mpg ~  wt + hp + cyl

Мы хотим указать априоры для трех переменных-предикторов. Допустим, мы хотим получить гауссовы априоры со средними значениями -1, 0, 1 и стандартными отклонениями 4, 2, 3. Мы создадим их следующим образом:

my_prior <- normal(location = c(-1, 0, 1), scale = c(4, 2, 3), autoscale = FALSE)

Аналогичным образом, мы можем создать априоры для перехвата и стандартного отклонения ошибки (в данном случае это prior_aux):

my_prior_intercept <- student_t(4, 0, 10, autoscale=FALSE)
my_prior_aux <- cauchy(0, 3, autoscale=FALSE)

Тогда функция модели:

m1 = stan_glm(mpg ~  wt + hp + cyl, data = mtcars, 
              prior = my_prior, 
              prior_intercept=my_prior_intercept,
              prior_aux=my_prior_aux)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...