问题描述
我正在尝试从这个模型的后验中取样:enter image description here
x 是一个 10x1 的向量,mu 是一个 10x1 的向量,sigma 是一个 10x10 的矩阵,psi_0 是一个 10x10 的矩阵,粗体 1 是一个 5x1 的统一向量,其余的都是标量。 F 和 E 是我们分析中两组股票的下标(我们正在进行投资组合优化)。我尝试运行以下代码:
这是模型代码,位于单独的 .stan 文件 (finance_model.stan) 中:
data {
int<lower=1> T;
real k;
real<lower=0> sigma_squared;
real<lower=0> r_squared;
matrix[10,10] psi;
vector[10] x[T];
}
parameters {
vector[10] mu_var;
matrix[10,10] Sigma_var;
real alpha_energy_var;
real alpha_fin_var;
real beta;
}
transformed parameters {
vector[10] mu_mean;
mu_mean = [alpha_fin_var,alpha_fin_var,alpha_energy_var,alpha_energy_var]';
}
model {
target += normal_lpdf(beta | k,sqrt(r_squared));
target += inv_wishart_lpdf(Sigma_var | 12,psi);
target += normal_lpdf(alpha_energy_var | beta,sqrt(sigma_squared));
target += normal_lpdf(alpha_fin_var | beta,sqrt(sigma_squared));
target += multi_normal_lpdf(mu_var | mu_mean,Sigma_var);
target += multi_normal_lpdf(x | mu_var,Sigma_var);
}
finance_data <- list(
T = 574,x = data_estimation,sigma_squared = sigma_squared,k = k,r_squared = r_squared,psi = psi
)
fit1 <- stan(
file = "finance_model.stan",# Stan program
data = finance_data,# named list of data
chains = 4,# number of Markov chains
warmup = 1000,# number of warmup iterations per chain
iter = 2000,# total number of iterations per chain
cores = 1,# number of cores (Could use one per chain)
refresh = 0 # no progress shown
)
我收到一条奇怪的错误消息,我无法解释:
[1] "Error in sampler$call_sampler(args_list[[i]]) : Initialization Failed."
[2] "Inoltre: Warning message:"
[3] "In system(paste(CXX,ARGS),ignore.stdout = TRUE,ignore.stderr = TRUE) :"
[4] " 'C:/rtools40/usr/mingw_/bin/g++' not found"
[1] "error occurred during calling the sampler; sampling not done"
有人可以帮忙吗?我在网上找到的所有层次模型的例子都是单变量的,所以很难做逆向工程。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)