R 变量";cholesky“系数”;STAN模型块中不存在

R 变量";cholesky“系数”;STAN模型块中不存在,r,stan,rstan,R,Stan,Rstan,我试图从边缘化高斯混合模型的后验分布进行模拟。这是我的密码: data { int<lower=0> d; int<lower=0> n; int<lower=0> k; row_vector[d] y[n]; vector[d] mu0; cov_matrix[d] sig0; real<lower=0> alpha; } parameters { vector[d] mu[k]; cov_

我试图从边缘化高斯混合模型的后验分布进行模拟。这是我的密码:


data {
  int<lower=0> d;
  int<lower=0> n;         
  int<lower=0> k;
  row_vector[d] y[n];
  vector[d] mu0;
  cov_matrix[d] sig0;
  real<lower=0> alpha;
}
parameters {
  vector[d] mu[k];
  cov_matrix[d] sig[k];
  // simplex[k] pi;
}


model {
   cholesky_factor_cov[d] chol_sig[k];
  for(i in 1:k)
    chol_sig[i]=cholesky_decompose(sig[i]);

  vector[k] lps;

  for( i in 1:k){
    target+= multi_normal_cholesky_lpdf(mu[i] | mu0, chol_sig[i]);
    target+= inv_wishart_lpdf(sig[i] | d+10, sig0);
  }


  for (i in 1:n) {
    // lps = log_thet;
    for (j in 1:k)
      lps[j] = multi_normal_cholesky_lpdf(y[i] | mu[j], chol_sig[j]);
    target += log_sum_exp(lps);
  }
}

我不能在STAN模型中声明类型为“cholesky\u factor\u cov”的变量吗?请提供帮助。

您不能在STAN程序的
model
块中声明矩阵或向量的特殊化,因为它们没有经过有效性检查。但是您可以将其声明为一个方矩阵数组,如

model {
  matrix[d,d] chol_sig[k];
  ...
model {
  matrix[d,d] chol_sig[k];
  ...