R STAN - 如何制定多元协方差矩阵

时间:2017-08-18 12:08:51

标签: r bayesian stan

我目前正在使用R stan来拟合多元正态分布。目前的模型是

b~MVN(0,Sigma)

,其中

b =(x1,x2,x3)
0 =(0,0,0)

Sigma =
enter image description here

我能够使用以下内容构建协方差矩阵:

parameters {
    row_vector b[3];    
    real<lower=0> b_sigma[3];
    real<lower=-1, upper=1> b_rho[3];
}

transformed parameters {
    matrix[3,3] b_SIGMA;

    b_SIGMA[1,1] = b_sigma[1] ^ 2;
    b_SIGMA[2,2] = b_sigma[2] ^ 2;
    b_SIGMA[3,3] = b_sigma[3] ^ 2;

    b_SIGMA[1,2] = b_rho[1] * b_sigma[1] * b_sigma[2] ;
    b_SIGMA[2,1] = b_rho[1] * b_sigma[1] * b_sigma[2] ;

    b_SIGMA[3,1] = b_rho[2] * b_sigma[1] * b_sigma[3];
    b_SIGMA[1,3] = b_rho[2] * b_sigma[1] * b_sigma[3];

    b_SIGMA[2,3] = b_rho[3] * b_sigma[2] * b_sigma[3];
    b_SIGMA[3,2] = b_rho[3] * b_sigma[2] * b_sigma[3];
}

然而,这对我来说似乎非常手动和低效。是否有适当或推荐的方法来构建这样的方差结构?

在高度相关的说明中PROC MIXED in SAS提供了各种各样的“开箱即用”方差结构,例如非结构化,复合对称性,自回归等。在STAN中是否存在等价物或我是否需要手动构造它们每一次 ?

注意:由于这个问题更具理论性,我认为数据+一个完全有效的例子并不是有益的。我很乐意提供数据+完整的工作示例,但是如果人们想要玩它或者不这么认为。

1 个答案:

答案 0 :(得分:2)

您的构造不能保证产生正定矩阵。有cov_matrix类型和cholesky_cov_matrix类型可以保证肯定。后者采用multi_normal_cholesky参数化。我们通常建议缩放相关矩阵,其中有并行类型。

斯坦没有开箱即用的差异结构。但是在RStanArm中有几个,这可能更像你正在寻找的东西。它是一种比Stan本身更高级的语言,允许您指定自回归和快速空间模型以及各种层次结构。它会通过QR分解自动进行预处理。