Hi. I’m new with stan and I’m trying to get used to the language by writing models and checking if they’re syntactically correct. I have a problem with the script below, and I couldn’t figure out what is going on. I’m really stuck with this, so I really appreciate your help!
// stan test 3.5
functions {
real[] sho(real t,
real[] y,
real[] theta,
real[] x_r,
int[] x_i) {
real dydt_1 = y[2];
real dydt_2 = -y[1] - theta[1] * y[2];
return {dydt_1, dydt_2};
}
}
data {
int T;
int N;
real y0[2];
real t0;
real ts[T];
real y[N, T, 2];
}
transformed data {
real x_r[0];
int x_i[0];
}
parameters {
real <lower=0> sigma;
real theta[1];
}
transformed parameters {
real y_hat[N, T, 2];
for (n in 1:N){
real y_hat[n, , ] = integrate_ode_rk45(sho, y0, t0, ts, theta, x_r, x_i);
}
}
model {
// priors
sigma ~ normal(0.2, 0.1);
//for (n in 1:N){
theta[1] ~ normal(1.2, 0.4);
//}
// noise
for(n in 1:N){
y[n , ,1] ~ normal(y_hat[n, ,1], sigma);
y[n , ,2] ~ normal(y_hat[n, ,2], sigma);
}
}
the error message I got was the following:
SYNTAX ERROR, MESSAGE(S) FROM PARSER:
error in ‘model37c66c4978_stan_test_3’ at line 38, column 18
36:
37: for (n in 1:N){
38: real y_hat[n, , ] = integrate_ode_rk45(sho, y0, t0, ts, theta, x_r, x_i);
^
39: }
PARSER EXPECTED: “]”
Error in stanc(filename, allow_undefined = TRUE) :
failed to parse Stan model ‘stan test 3’ due to the above error.
I tried to fix it by changing the line to :
real y_hat[n] = integrate_ode_rk45(sho, y0, t0, ts, theta, x_r, x_i);
but it didn’t work. I’m using rstan 2.21.2 on Rstudio (r version 4.1.0)
Thanks !