1 General.

1.1 How can I submit an effective request for help?

Before submitting a request, examine the error messages and try to figure out what they are telling you by reading the help pages and/or the package tutorials. Check to see if you are using the latest version of pomp: if not, check to see if the problem you have is solved by upgrading to the latest version. Read through the Frequently Asked Questions to see if the answer to your question is there.

If you still have a problem, then submit a request for help via the Issues page if possible or to Aaron King (kingaa at umich dot edu) if necessary. Include in your request—at a minimum—the code that you ran that produced the error, together with a transcript of the R session that gave the errors. Make sure to run sessionInfo() in your session, so that I can see what version of pomp you are using, what version of R, what kind of machine you have, etc. Better still, construct a minimal example that will reproduce the error: this allows for the most efficient solution of problems.

1.2 What’s the proper way to cite pomp?

To cite the package, please be so kind as to follow the instructions given by executing

citation("pomp")

in an R session.

If you use pomp in a publication, let us know! Send an email with the citation, and we’ll include it in the bibliography.

2 Installation problems

2.1 Why do I get an error message about gfortran when I try to install pomp from source on my Mac?

Compilation of pomp requires a FORTRAN compiler, which has not been installed (or not installed properly) on your system. See the installation instructions.

3 Implementing POMP models.

3.1 How can I include a vector of variables in a C snippet?

A C snippet can make use of any feature of the C language. In particular, we can use pointers to give access to arrays. For example, consider the following, which implement a simple chain of random variables.

rSim <- Csnippet("
  double *x = &X1;
  int i, n = (int) N;
  for (i = 0; i < n-1; i++) x[i] = x[i+1];
  x[n-1] = rnorm(0,1);
")
       
rInit <- Csnippet("
  double *x = &X1;
  int i, n = (int) N;
  for (i=0; i < n; i++) x[i] = 0.0;
")

The following simulates and plots using the above.

require(magrittr)
require(reshape2)
require(ggplot2)
        
data.frame(Y1=NA,t=1:20) %>% 
  pomp(times="t",t0=0,
       rprocess=euler.sim(rSim,delta.t=1),
       initializer=rInit,
       statenames=sprintf("X%d",1:5),
       paramnames="N",params=c(N=5),
       measurement.model=Y1~norm(-X1,2)
  ) %>%
  simulate(as.data.frame=TRUE) %>%
  melt(id=c('time','sim')) %>%
  ggplot(aes(x=time,y=value,group=variable,color=variable))+
  geom_line()+theme_bw()