This is always the first step in constructing an IPM with ipmr. All you need for this is to know what type of IPM you want to construct - the rest comes later with define_kernel, make_ipm, and associated helper functions. See Details for complete overview of each option.

init_ipm(sim_gen, di_dd, det_stoch, kern_param = NULL, uses_age = FALSE)



Either "simple" or "general".


Either "di" or "dd".


Either "det" or "stoch". If this is "det", then kern_param is ignored. If "stoch", then kern_param must be specified.


If det_stoch = "stoch", then this should be either "kern" or "param".


A logical indicating whether the model has age structure. Default is FALSE


An object with classes "proto_ipm" and a combination of sim_gen, di_dd, det_stoch, and possibly kern_param. If uses_age = TRUE, then an "age_x_size" class is also added.


Combinations of simple or general, dd or di, and det or stoch are generated to create 1 of 12 unique IPM classes.

Within stoch model types, there are two additional options: "kern" or "param". These distinguish between models that use kernel resampling vs those that use parameter resampling (sensu Metcalf et al. 2015). Below are quick definitions. More detailed explanations can be found in the vignettes("ipmr-introduction", package = 'ipmr').

  • sim_gen

    • simple: an IPM with a single continuous state variable that does not include any discrete stages. Simple IPMs can still be stochastic and/or density dependent.

    • general: an IPM with more than one continuous state variable and/or a model that includes discrete stages.

  • di_dd

    • dd: used to denote a density dependent IPM.

    • di: used to denote a density independent IPM.

  • det_stoch

    • det: used to denote a deterministic IPM.

    • stoch: used to denote a stochastic IPM. Stochasticity can be implemented in two ways in ipmr: "kern" resampling, and "param" resampling.

  • kern_param - if using det, this should be omitted. If using stoch, then one of the following:

    • kern: used to denote an IPM that uses kernel resampling. Briefly, these models build all of the iteration kernels ahead of time and then choose one at random or in a user-specified order as they move from iteration to iteration. The user-specified population vector is multiplied by the chosen kernel and the result is multiplied by the next kernel for the desired number of iterations.

    • param: used to denote parameter resampling. This samples distributions for each parameter based on user-specified functions supplied to define_env_state(). This will be a bit slower than "kern" resampling because kernels need to be reconstructed from new parameters at every time step.


Metcalf et al. (2015). Statistical modelling of annual variation for inference on stochastic population dynamics using Integral Projection Models. Methods in Ecology and Evolution, 6: 1007-1017