问题描述
我正在求解一个 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
我目前正在编辑您的代码。不过,我希望这会有所帮助。