Hi all, I’m trying to fit a model that includes a Poisson process
\begin{equation} \begin{split} X_t & = PoissonProcess(\lambda) \hspace{12pt} 0 \leq t \leq 100 \\ Y_i &\sim Normal(X_i, 0.05 ) \hspace{12pt} i = 1, \cdots 100 \end{split} \end{equation}
For illustration, see the picture below. The Poisson process X_t with rate \lambda generates 3 arrivals, at t=(20,50,80), which corresponds to dividing the timeline into 4 pieces. We observe only Y as noisy versions of the 4 means (0,1,2,3). Then given the data we want to do inference on at least \lambda, but X_t or the arrival times would be ideal.
Here’s what I have so far. It’s complaining about
- passing the array “int x[]” on line 3, and more importantly
- passing the poisson distribution to the normal distribution, near the end
Are these two insurmountable? Please let me know.
//Setting up the poisson model
functions {
real cusum(int n, int x[]){
int x2[n];
x2[1] = x[1];
for(i in 2:n){
x2[i] = x2[i-1] + x[i];
}
return x2;
}
}
data {
int<lower=0> T; // how long the time series is
real Y[T]; // the observed data
}
parameters {
real<lower=0> lambda; // poisson rate
}
model {
real lambda_vec[T];
lambda ~ gamma(0.08,1); //prior
lambda_vec = rep_array(lambda, T);
Y ~ normal(cusum(poisson(lambda_vec)), 0.05);
}