用RJAGS约束贝叶斯线性回归中的参数

时间:2016-06-21 15:00:47

标签: r constraints bayesian jags

我正在使用RJAGS构建分层贝叶斯线性回归模型,我想约束三个参数值的总和,以正态分布1.3。那就是:

模型是:

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

而且,

B1 + B2 + B3~dnorm(1.3,1 /(0.2)^ 2)

有可能吗?使用一行代码来分配上一行中的参数总和似乎不起作用。

第二个最好的选择是完全约束参数(B1 + B2 + B3 = 1.3),但我不知道该怎么做。

提前感谢您的帮助!

干杯!

1 个答案:

答案 0 :(得分:2)

一种方法类似于等级的方差分析和方式模型。在这些模型中,每组意味着从基线$ \ beta_0 $偏转$ \ beta_j $并且偏转被迫总和为零。与您的情况类比,将三个回归系数重新编码为基线系数的总和为零的偏差,并使基线来自正态先验,平均值为1.3。

你可以在Doing Bayesian Data Analysis 2nd Ed.的第19章中看到ANOVA的JAGS模型规范的例子。在这里适应它们的想法是这样的(我已经压制了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 }

至少,这是一个想法......