R stan返回变量";rhs“;不存在

R stan返回变量";rhs“;不存在,r,bayesian,ode,stan,R,Bayesian,Ode,Stan,我正在解决上的ODE函数,但它返回一个错误。我是Stan的新手,已经阅读了手册(版本2.23),我构建了一个变量函数,并尝试在后面的参数部分使用它。 错误消息如下: SYNTAX ERROR, MESSAGE(S) FROM PARSER: Variable "rhs" does not exist. error in 'model3f5c177424bb_pk' at line 30, column 40 -------------------------------

我正在解决上的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],0.0,t,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);}
函数{
向量rhs(实t,向量y,
真P,
真正的卡帕1,
真正的卡帕2,
真正的体育,
真正的三角洲,
真伽马,
实数单位(亩){
向量[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];
返回dydt;
}
}
资料{
int N;
向量[N]y;
实t[N];
实p;
真卡帕1;
真卡帕2;
真正的体育;
真实三角洲;
真实伽马;
实木;
}
参数{
实西格玛;
}
变换参数{
向量[N]μC;
{
向量[3]解[N]=ode_bdf(rhs[9600*1e-4,0.1,0],0.0,t,p,kappa1,kappa2,Pe,Delta,gamma,mu);
for(1:N中的i){
mu_C[i]=解[i,2];
}
}
}
模型{
y~正态(0,σ);
σ~normal(0,1);}

有人能帮我吗?谢谢。

很抱歉我来晚了。我目前很难正确使用ODE的索引系统。这个例子可能会解决我的问题:

在解决代码问题后,您可能希望稍后检查Stan的非线性ODE解决方法:


我现在正在编辑你的代码。不过,我希望这能有所帮助。

这是答案吗?它看起来可能是一个评论(或者一个链接式的回答?)