微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

R stan 返回变量“rhs”不存在

如何解决R stan 返回变量“rhs”不存在

我正在求解一个 ODE 函数,但它返回一个错误。我对 Stan 相当陌生,并且已经阅读了手册(2.23 版),我构建了一个变量函数并尝试在稍后的参数部分中使用它。 错误信息如下:

Syntax ERROR,MESSAGE(S) FROM PARSER:
Variable "rhs" does not exist.
 error in 'model3f5c177424bb_pk' at line 30,column 40
  -------------------------------------------------
    28:   vector[N] mu; // Outputted
    29:   { // Local computation - isn't saved or outputted!
    30:     vector[2] solution[N] = ode_rk45(rhs,[D,0.0]',0.0,t,ka,ke);
                                               ^
    31:     for(i in 1:N){
  -------------------------------------------------

和斯坦代码是:

functions {
  vector rhs(real t,vector y,real P,real kappa1,real kappa2,real Pe,real Delta,real gamma,real mu){
vector[3] dydt;
dydt[1] = Pe - Delta *y[1] - kappa1*y[2]*y[1];
dydt[2] = P*kappa2*y[3] - mu*y[2] - kappa1*y[2]*y[1];
dydt[3] = kappa1*y[2]*y[1]-gamma*y[3]-kappa2*y[3];
return dydt;
}
}
data {
  int <lower=0> N;
  vector[N] y;
  real t[N];
  real<lower = 0> p;
  real<lower = 0> kappa1;
  real<lower = 0> kappa2;
  real<lower = 0> Pe;
  real<lower = 0> Delta;
  real<lower = 0> gamma;
  real<lower = 0> mu;
}
parameters {
  real<lower = 0>  sigma;
}
transformed parameters{
  vector[N] mu_C;
{
vector[3] solution[N] = ode_bdf(rhs,[9600*1e-4,0.1,0],p,kappa1,kappa2,Pe,Delta,gamma,mu);
for (i in 1:N){
mu_C[i] = solution[i,2];
}
}
}
model {
  y ~ normal(0,sigma);
  sigma ~ normal(0,1);}

有人可以帮我解决这个问题吗?谢谢。

解决方法

对不起,我迟到了这篇文章。我目前在正确索引 ODE 系统时遇到困难。这个例子可能会解决我的问题:https://tbz533.blogspot.com/2019/11/using-constant-stan-functions-for.html

一旦您的代码问题得到解决,您可能想稍后查看 Stan 的非线性 ODE 求解方法:https://tbz533.blogspot.com/2020/01/generalized-profiling-with-stan.html

我目前正在编辑您的代码。不过,我希望这会有所帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。