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];
...