2016-06-21 3 views
2

Я строю иерархическую байесовскую линейную регрессионную модель с использованием RJAGS, и я хочу ограничить сумму значений трех параметров, которые обычно распределяются со средним значением 1.3. То есть:Ограничивающие параметры в байесовской линейной регрессии с использованием RJAGS

Модель:

Y = B1 * X1 + B2 * X2 + B3 * X3 + ... + BN * XN

И

B1 + B2 + B3 ~ dnorm (1,3, 1/(0,2)^2)

Можно ли это сделать? Использование строки кода для распределения суммы параметров, как в предыдущей строке, похоже, не работает.

Второй лучшей альтернативой было бы полное ограничение параметров (B1 + B2 + B3 = 1.3), но я не знаю, как это сделать.

Заранее благодарим за вашу помощь!

Cheers!

+1

Возможно ли повторное выражение 'B2' и' B3' в терминах 'B1'? Это упростит ограничение значений, так как нужно ограничиться только «B1» и, возможно, другим параметром разделения. – colin

ответ

2

Один подход по аналогии с иерархическими «ANOVA» -тильными моделями. В этих моделях каждая группа означает отклонение $ \ beta_j $ от базовой линии $ \ beta_0 $, а отклонения вынуждены суммировать до нуля. Аналогия с вашим случаем перекодирует три коэффициента регрессии как отклонения от суммы к нулю от базового коэффициента, а базовая линия исходит из нормального до среднего значения 1.3.

Вы можете увидеть примеры спецификаций модели зазубрины для ANOVA в главе 19 Doing Bayesian Data Analysis 2nd Ed. Идея для адаптации их здесь что-то вроде этого (я подавлял индекс I):

mu <- sum(b[1:3]*x[1:3]) 
# Prior on unconstrained baseline a0 and deflections a[j]: 
a0 ~ dnorm(1.3 , 1/0.2^2) 
for (j in 1:3) { a[j] ~ dnorm(0,1/10^2) } 
# Convert a0,a[j] to sum-to-zero b0,b[j]: 
for (j in 1:3) { m[j] <- a0 + a[j] } 
b0 <- mean(m[1:3]) 
for (j in 1:3) { b[j] <- m[j] - b0 } 

По крайней мере, это идея ...

Смежные вопросы