1

我正在尝试进行变分推理,以便我可以获得关于目标分布的最佳近似分布:Normal-Inverse-Wishart。

正态-逆-Wishart 分布

但是,当我使用模型代码编译 stan 文件时,它会给出错误:

stanc 中的错误(文件 = 文件,模型代码 = 模型代码,模型名称 = ?>模型名称,:0 '字符串'中的语法错误,第 16 行,第 14 列到第 15 列,解析 > 错误:预期的“生成数量 {”或文件结尾模型结束后>块。

我试图调查这是指什么,但我需要一些帮助。我的 R 代码是:

stan_file <- "RStan VI model.stan"
stan_model <- rstan::stan_model(file = stan_file) // Error occurs at this line

RStan 文件模型代码为:

data {
  int<lower=1> N; // number of assets
  real<lower=0> nu0; // prior confidence for sigma
  matrix[N, N] sigma_0; // prior sigma
  real<lower=0> T0; // prior confidence for mu
  vector[N] mu0; // prior mu
}
parameters {
  matrix[N, N] sigma;
  vector[N] mu; 
}
transformed parameters {
  matrix[N, N] a;
  matrix[N, N] b;
  a = sigma0*nu0;
  b = sigma/T0;
}
model {
  target += inv_wishart_lpdf(sigma | nu0, a);
  target += normal_lpdf(mu | mu0, b);
}

我什至尝试将模型代码的最后一部分更改为:

model {
  sigma ~ inv_wishart(nu0, a);
  mu ~ normal(mu0, b);
}

但仍然是同样的错误。有谁知道错误是什么以及我该如何解决?

非常感谢。

最好的,尼哈尔

4

0 回答 0