an R package for Integral Projection Models

IPMpack logo

IPM'd species

 R-Forge Logo



C. Jessica E. Metcalf University of Oxford
Sean M. McMahon Smithsonian Tropical Research Institute
Roberto Salguero-Gómez University of Queensland
Eelke Jongejans Radboud University Nijmegen
Cory Merow STRI and University of Connecticut

Developed at:

Max Planck Institute for Demographic Research

Cite as:

Metcalf CJE, McMahon SM, Salguero-Gómez R & Jongejans E (2013) IPMpack: an R package for Integral Projection Models. Methods in Ecology and Evolution 4:195-200 PDF


Subscribe to the users email-list

A new IPM guide (Merow et al. 2014 Methods Ecol Evol DOI) includes appendices with detailed IPMpack examples.

Download the R package IPMpack (latest version: 2.1 (Mar'14). In v2.0 we have substantially streamlined IPMpack by homogenizing function naming and argument conventions and consolidating related functions in an effort to make functions easier to find and remember. Don't hesitate to contact us through the list serv to ask for tips.

Project summary

IPMpack is an R package (R Development Core Team 2013) that allows users to build and analyse Integral Projection Models. An IPM is a demographic tool to explore the dynamics of populations where individuals' fates depend on state variables that are continuous (e.g. weight, diameter at breast height, height, limb length, rosette diameter...) or quasi-continuous (number of leaves, age, number of reproductive structures) and may be a mixture of discrete (e.g. seedbank) and continuous. IPMs track the distribution of individuals n across these state variables between census times (e.g., year t and year t+1) by projecting from models that define the underlying vital rates (e.g., survival, growth, reproduction) as a function of the (quasi-)continuous state variables. Version 1.5 of IPMpack is now available on CRAN / R-Forge. For those who wish to try it, it can be installed by opening the R console and typing:

install.packages("IPMpack", repos = "http://R-Forge.R-project.org", type = "source")

Back to top

Fig. 1. IPMpack output examples.

We have set up a IPMpack users email-list so users can ask questions or provide comments, suggestions or criticism that can help us improve the package.

Package description

To use IPMpack's full capacities, it is helpful if the data are in a specific format in R, i.e., a dataframe with the following variables and column names, where each row represents one measurement in the population:

  • size of individuals in census time t.
  • sizeNext of individuals in census time t+1.
  • surv: survival of individuals from census time t to t+1 (a 0 or 1).
  • fec1,...: as many columns as desired relating size to sexual reproduction.
  • stage of individuals in census time t needs to be specified if you want to include discrete classes. For rows in the dataframe where size is not an NA, this must be the word continuous.
  • stageNext of individuals in census time t+1 (similar to stage).
  • number of individuals corresponding to each row in the dataframe.
  • covariate: value of a discrete covariate in census time t, such as light environment, age or patch type.
  • covariateNext: value of a discrete covariate in census time t+1.
  • ...any other covariates of interest, named as desired (precipition, habitat, temperature,...).

Back to top

Fig. 2. IPMpack usage flow-chart.

  • Fits a range of vital rate functions.
  • Constructs survival-growth and fecundity IPMs.
  • Provides diagnostics for contructed IPMs (see Fig1 above).
  • Offers a large and growing number of IPM analysis tools.

Future versions will include:

  • Clonality IPMs.
  • Multiple continuous state variables in the same IPM.
  • etc. (suggestions are very welcome)
Papers consulted when we built IPMpack:

Caswell H (2001) Matrix Population Models: Analysis, Construction and Interpretation. 2nd ed, Sinauer, Sunderland, Massachusetts

Childs DZ, Rees M, Rose KE, Grubb PJ & Ellner SP (2004) Evolution of size-dependent flowering in a variable environment: Construction and analysis of a stochastic integral projection model. Proc Roy Soc B 271:471–475 pdf

Cochran ME & Ellner SP (1992) Simple methods for calculating age-based life history parameters for stage-structured populations. Ecol Monogr 62:345–364 doi

Ellner SP & Rees M (2006) Integral projection models for species with complex life-histories. Am Nat 167:410-428

Metcalf CJE, Horvitz CC, Tuljapurkar S & Clark DA (2009) A time to grow and a time to die: a new way to analyze the dynamics of size, light, age and death of tropical trees. Ecology 90:2766–2778 doi

Rees M & Rose KE (2002) Evolution of flowering strategies in Oenothera glazioviana: an integral projection model approach. Proc Roy Soc B 269:1509-1515 pdf

Tuljapurkar S (1990) Population Dynamics in Variable Environments. Springer, Berlin

Zuidema PA, Jongejans E, Chien PD, During HJ & Schieving F (2010) Integral Projection Models for trees: a new parameterization method and a validation of model output. J Ecol 98:345-355 pdf

Back to top
Papers using IPMpack:

Metcalf CJE, McMahon SM, Salguero-Gómez R & Jongejans E (2013) IPMpack: an R package for Integral Projection Models. Methods Ecol Evol 4:195-200 PDF

Merow C, Dahlgren JP, Metcalf CJE, Childs DZ, Evans MEK, Jongejans E, Record S, Rees M, Salguero-Gómez R & McMahon SM (2014) Advancing population ecology with integral projection models: a practical guide. Methods Ecol Evol 5:99-110 DOI

Dauer JT & Jongejans E (2013) Elucidating the population dynamics of Japanese knotweed using integral projection models. PLOS ONE 8:e75181 PDF

Li S-L, Yu F-H, Werger MJA, Dong M, Ramula S & Zuidema PA (2013) Understanding the effects of a new grazing policy: the impact of seasonal grazing on shrub demography in the Inner Mongolian steppe. J Appl Ecol 50:1377-1386 DOI

Salguero-Gómez R, Siewert W, Casper BC & Tielbörger K (2012) A demographic approach to study effects of climate change in desert plants. Phil Trans Roy Soc B Biol Sci 367:3100-3114 DOI

A list of all known IPM papers can be downloaded here: IPMpublications. Please email us if we missed (a new) one.

Photo credits:
A backyard fox by Sean McMahon
crocs by Owen Jones
Succisa pratensis by Lidewij Keser

Webdesign credits:
Fernando Colchero

FAQs and other pointers
Here we list frequently asked questions, along with other pointers that we deem useful. Some of the answers are accompanied with links to R code on separate pages. If you have additional questions, please subscribe to the users email-list and post your questions there.

Can I perform bayesian analyses with IPMpack?

No, we do not include functions for bayesian analyses. However, some R code (from previous versions of IPMpack) can be found here.

How do I plot my matrices?

From version 2.0 IPMpack no longer contains the function countourPlot. Instead we recommend you use image.plot of the 'fields' package.

How do I compare my IPMs with matrix models?

The relationships stored in your vital rate objects can of course be used to parameterize matrix models as well as IPMs. On a separate page we provide some code to get you started building matrix models from the vital rate objects yourself (we decided to focus our efforts on good-running IPM code and not to continue developing code for matrix models within IPMpack.

Back to top