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

标签 r bayesian stan

我目前正在使用 R stan 来拟合多元正态分布。当前型号为

b ~ MVN(0,西格玛)

哪里

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

西格玛=
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 中是否有等效结构,或者我每次都需要手动构建它们?

注意:由于这个问题更具理论性,我认为数据+完整的示例没有好处。我很乐意提供数据+完整的工作示例,但如果人们想尝试它或认为不一样。

最佳答案

您的构造不能保证产生正定矩阵。有一个 cov_matrix 类型和一个 cholesky_cov_matrix 类型可以保证正定性。后者与multi_normal_cholesky参数化一起使用。我们通常建议缩放相关矩阵,该矩阵有并行类型。

Stan 中没有任何开箱即用的方差结构。但 RStanArm 中有几个,这可能更符合您的需求。它是一种比 Stan 本身更高级的语言,可让您指定自回归模型和空间模型以及各种层次结构。它会自动以 QR 分解为前提条件。

关于R STAN - 如何制定多元协方差矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45756308/

相关文章:

r - stan 中的多项式模型 - 如何拟合狄利克雷分布参数?

r - 记录 R 包给出警告 @example 不存在

r - R中按组的计数数据的条形图

r - 无法使用R中的循环和函数更新向量

python - 在贝叶斯优化包 Python 中迭代整数

r - stan 模型中生成的数量 block

r - 条形图中 x 轴变量的顺序

algorithm - 加权平均值和评级

python - Scikit-learn:半监督朴素贝叶斯实现可用吗?

python - stan 向量参数的漂亮 pystan 跟踪图