如何解决R stan积分integrate_1d的差异
全部。
我想在for循环的rstan中使用integration_1d函数。 即使它正在工作,但最终仍无法收敛。 由于它是直接集成的,例如$ \ int_ {0} ^ {\ mBox {observed_failure} [i]} \ mBox {exp}(\ rho * \ beta_2 * Treat [i] * x)dx $,因此我也尝试了使用积分值$(\ mBox {exp}(\ rho * \ beta_2 * Treat [i] * \ mBox {observed_failure} [i])-1)/(\ rho * \ beta_2 * Treat [i]) $,它通常可以正常工作并收敛。出于这个原因,我可以说我唯一更改过的集成_1d代码存在问题。
functions {
real func(real x,real xc,real[] theta,real[] x_r,int[] x_i){
real beta2 = theta[1];
real rho = theta[2];
int d = x_i[1];
return(exp(rho *beta2 * d * x ));
}
}
data {
...
int treat[new_N];
...
}
transformed data {
real x_r[0]; // I do not have real data
int x_i[1]; // I only have integer data
}
parameters {
real beta0;
real beta1;
real beta2;
real rho;
...
}
model {
...
for (i in 1:new_N) {
h[i] = h0 * exp(eta*age[i] + rho*( beta1*treat[i] + beta2 * treat[i] * observed_failure[i] + U[i]));
integ[i] = integrate_1d(func,observed_failure[i],{beta2,rho},x_r,{treat[i]},1e-8);
S[i] = exp(- h0 * exp(eta * age[i]) * exp(rho * (beta0 + beta1 * treat[i]) + U[i]) * integ[i]);
}
...
}
fit = stan(data = data1,model_code = stan_codes,iter = 2000,预热= 1000, 薄= 1,链=链,pars = pars,init = inits,control = list(adapt_delta = 0.99))
当我在上面跑步时,它正在工作但没有收敛,显示“预热后出现了1191个发散的过渡”。
我尝试过...
这是我的R版本:
R 4.0.2 x86_64-apple-darwin17.0 stan_version 2.21.0
谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。