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)`

- sim_gen
Either

`"simple"`

or`"general"`

.- di_dd
Either

`"di"`

or`"dd"`

.- det_stoch
Either

`"det"`

or`"stoch"`

. If this is`"det"`

, then`kern_param`

is ignored. If`"stoch"`

, then`kern_param`

must be specified.- kern_param
If

`det_stoch = "stoch"`

, then this should be either`"kern"`

or`"param"`

.- uses_age
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