I try to fit a population time-series model in stan/rstan(2.7.0) where the death rate depends on the generation before (n-1) but the reproduction depends on a unknown generation (n-x). I haven't found a way to estimate x since stan has no options for integer distributions and the floor function returns reals that cannot be used as indices to arrays. Does anyone know a good workaround to estimate integer time lags in stan?

  • $\begingroup$ (+1) The title could be edited to be more specific, such as 'Fit a time series model with unknown lag in Stan' - since for some integer parameters there exist workarounds and thus it would be useful to have a different question for each specific case instead of a general 'fit integer in Stan' question. $\endgroup$ – Juho Kokkala Jul 28 '15 at 14:37
  • $\begingroup$ @Julian I am tagging this post analysis since it concerns the analysis of a specific dataset. Please reformat your question in compliance with the suggested rules outlined in the wiki here $\endgroup$ – AdamO Jul 28 '15 at 18:42

Estimating integer parameters in STAN is impossible. HMC depends on gradient computations of the posterior density. Integer parameters aren't suitable for those computations. Rounding or truncating a real number to an integer won't help because the posterior surface will be flat in a region along that axis, so there will be no information for the sampler about where to go next.

Several alterntatives exist, though.

  1. Specify the number of lags as data for a range of plausible lags and compare the posterior probabilities of these models. Note that you will have to use the functions which compute the complete posterior probability, rather than the posterior probability up to a constant of proportionality. Please see the STAN manual for more deails.
  2. Use a standard Metropolis/Gibbs sampling routine.
  • 1
    $\begingroup$ For the second sollution; how would you perform something like this in jags? I can't find ways to sample integers there as well. $\endgroup$ – Julian Jul 28 '15 at 15:53
  • $\begingroup$ @Julian I'm not an expert in JAGS, but perhaps you could sample a real number and truncate it. $\endgroup$ – Sycorax Jul 28 '15 at 15:58
  • 1
    $\begingroup$ Another alternative is to estimate a mixture of autoregressive models with different lag lengths, including estimating the simplex vector of mixing weights. $\endgroup$ – Ben Goodrich Jul 28 '15 at 18:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.