R stan返回变量";rhs“;不存在
我正在解决上的ODE函数,但它返回一个错误。我是Stan的新手,已经阅读了手册(版本2.23),我构建了一个变量函数,并尝试在后面的参数部分使用它。 错误消息如下: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 -------------------------------
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解决方法:
我现在正在编辑你的代码。不过,我希望这能有所帮助。这是答案吗?它看起来可能是一个评论(或者一个链接式的回答?)