# Syntax error in two level Poisson model

Hi,
I am relatively new to Stan and I have not been able to solve this problem. I am modeling daily arrivals at a refugee camp (y) considering people are arriving from many areas in conflict (matrix X with each column a conflict zone, and each row a day). The parameter beta is the proportion of people contributing from each conflict zone but it depends on the distance from the conflict zone to the camp (if the camp is further away, the probability of going there would decrease because there are many other refugee camps). If I run the model just considering this, it works but if I add an autoregresive term with the arrivals at the camp the previous day (ylag with parameter eta), I get a compiling error. It must be a simple fix but I have not been able to figure it out.
Any thoughts would be greatly appreciated.

When including Stan code in your post it really helps if you make it as readable as possible by using Stan code chunks (```stan) with clear spacing and indentation. For example, use

``````data {
int N; //number of days of confict
int K; //number of conflict zones
int <lower=0> y[N]; //refugee arrivals at the camp
int <lower=0> ylag[N]; //refugee arrivals at the camp the previous day (t-1)
matrix[N,K] X; //daily departures of refugees from conflict zones
real dis[K]; //Distances from each conflict zone to the camp (in log km)
}
parameters {
real <lower=0> alpha;
real f; // for the estimation of beta based on distances
real eta; //for the autorregressive term
vector [K] c; // intercept for the estimation of beta based on distances
}
transformed parameters {
vector[K] beta; //Dependends on the distance to the camp

for (i in 1:K){
beta[i] = c[i] + f*(1-tanh(dis[i]));
}
}
model {
alpha ~ normal(4,10); //the mean set as mean(log(Y)) across all camps
f ~ uniform (0,10);
c ~ normal (0,2.5);
eta ~ normal (0,2.5);
y~poisson_log(alpha +X*beta +ylag*eta); //the error is here in ylag*eta

}

"

``````

Stan doesn’t allow mixing vectors and arrays and `ylag` is an array. You can coerce it to a vector with `to_vector`

``````y~poisson_log(alpha +X*beta + to_vector(ylag)*eta);
``````
1 Like

You made my day. Thank you so much! I knew it must be something simple but I couldn’t find how to bypass that error.