Как ставить разные приоры с помощью rstanarm

Допустим, у меня есть модель формы y=a_{i} + b_{i,1}*x_{1} + b_{2}*x_{2}, где i=1,2,...,12, и я хотел бы оценить эту модель, используя rstanarm.

Можно ли установить разные приоритеты для каждого перехвата a_{i} (так, скажем, первые 4 имеют normal(location = 0, scale = 1, autoscale = TRUE), следующие 4 - normal(location = 1, scale = 2, autoscale = TRUE), а последние 4 student_t(df = 1, location = 0, scale = NULL, autoscale = TRUE)). Так же хотелось бы установить такие же приоры для b_{i,1} и на последок b_{2}~normal(location = 3, scale = 1, autoscale = TRUE).

Можно ли это сделать с помощью rstanarm?


person quant    schedule 07.08.2017    source источник


Ответы (1)


В моделях, поддерживаемых rstanarm, есть не более одного перехвата, но вы можете подавить перехват, включив в формулу -1 и рассматривая коэффициенты фиктивных переменных как коэффициенты. Для коэффициентов вы можете сделать что-то вроде prior = student_t(df = c(rep(Inf, 8), rep(1, 4)), location = c(rep(0, 4), rep(1, 4), rep(0, 4)), scale = c(rep(1, 4), rep(2, 4), rep(1, 4)), autoscale = TRUE) . Но кажется, что вы имеете в виду какую-то иерархическую модель, и в этом случае априор для отклонений от глобальных параметров может быть только многомерным нормальным. См. ?prior_decov.

person Ben Goodrich    schedule 07.08.2017
comment
Спасибо за ответ Бен. 1) Если я правильно понимаю, добавление -1 также не вызовет мультиколлинеарности, верно? Просто меняется интерпретация. 2) В своем примере я хотел сказать, что если вы можете вместо вектора с параметрами местоположения и масштаба, вы также можете передать вектор с другими распределениями (пожалуйста, поправьте меня, если я неправильно, но в своем ответе вы преобразуете распределение t в нормальное, манипулируя df) - person quant; 07.08.2017
comment
Да, наличие -1 или +0 в формуле R удаляет точку пересечения и, таким образом, может включать еще один уровень фактора в качестве фиктивной переменной. - person Ben Goodrich; 07.08.2017
comment
Нет, в пакете rstanarm нельзя передавать список или вектор символов функций в аргумент prior. Вы можете передавать векторы для location, scale, df и т. Д. Только одной функции, такой как student_t. Однако, поскольку student_t эквивалентно normal, когда степени свободы бесконечны, это равносильно использованию различных функций в примере, который вы дали изначально. С помощью функции brm в пакете brms R вы можете указать разные предшествующие семейства для разных параметров в модели, оцененной Стэном. - person Ben Goodrich; 07.08.2017
comment
В rstanarm вы не можете. Но если вы собираетесь использовать предварительную бета-версию с биномиальными данными, вы можете просто вычислить апостериорное распределение аналитически. - person Ben Goodrich; 30.12.2017
comment
Привет, Бен, я задаю кое-что здесь вкратце, и если вы можете ответить, я спрошу официально на SO. У меня есть дизайн до пост-контроля. То есть контрольная группа (c) подвергается предварительному тестированию (pre.c) и пост-тестированию (pos.c). Точно так же группа лечения (t) подвергается предварительному тестированию (pre.t) и последующему тестированию (pos.t). Итак, у нас есть две группы (фактор группы), протестированные в двух временных точках (фактор времени). Вопрос: Мне было интересно, используя rstanarm, мы можем подогнать многоуровневую регрессию с обоими факторами (т. е. время и группа ) и их взаимодействие можно оценить? - person rnorouzian; 07.03.2018
comment
Да, это тот же синтаксис, что и в пакете lme4; что-то вроде (1 | time \ group). - person Ben Goodrich; 08.03.2018