Translate my website



Code and Courses


Beyond Science

MARSS R package

Download the MARSS R package here or directly from your R GUI using the install packages option. This is an R package to fit unconstrained and constrained multivariate autoregressive state-space models via maximum-likelihood (using an Expectation-Maximization algorithm). These models are called vector autoregressive state-space models in the economics literature. The MARSS package was developed by Eli Holmes, Eric Ward and Kellie Wills. It is fully documented with a user guide/manual: Analysis of multivariate time-series using the MARSS package, by E.E. Holmes and E.J. Ward. MARSS has bootstrap AICb and CIs and simulation features. Look on the left navbar for workshops that teach the use of multivariate state-space models for ecological analysis. The derivation of the EM algorithm for multivariate autoregressive state-space models with linear constraints is here: Derivation of the EM algorithm for constrained and unconstrained multivariate autoregressive state-space (MARSS) models.

The development site for MARSS is: MARSS Development Site. This is where bugs are fixed and new features are added before an update is submitted to CRAN. If you are interested in analyzing financial data, then you might want to look at SsfPack which was developed for financial data and models. The MARSS package is different in that is uses an EM algorithm for maximization (sensu Shumway and Stoffer 2000). This algorithm is better suited to the types of model selection research we do.

Kalman-EM in R

Note: The "Kalman-EM" code has been replaced by the MARSS R package (above). Kalman-EM algorithms for fitting MSSMs This is an R toolbox. Written by E.E. Holmes and E.J. Ward. The case-studies on the code website are the defacto help files and documentation. An on-line workshop on state-space modeling using the Kalman-EM R toolbox is available here: State-space modeling workshop. The current public 'release' is from Aug 2009, but Kalman-EM will shortly be replaced by the MARSS package, which does much more and is fully documented.


LAMBDA: Long-term Assemblage MAR(1)-Based Data Analysis LAMBDA is a MatLab toolkit designed to do MAR-1 based data analysis on long-term datasets (i.e., time series). LAMBDA is designed to allow the user to step through the entire modeling process, from transforming the data, to model selection, to fitting the MAR-1 regression model and obtaining output parameters with bootstrapped CIs (see Ives et al. 2003, Ecological Monographs 73:301-330). Developed by Steven Viscido and Eli Holmes. An on-line workshop on MAR-1 modeling of community data using LAMBDA is available here: MAR workshop


MixSIR download and manual page MixSIR is a Bayesian isotope mixing model that incorporates uncertainty in the estimates of mix and source isotope values. The model also provides the opportunity to incorporate prior information for the proportional contribution of each source to the mix. Developed by Brice Semmens and Jon Moore.


beast website BEAST provides a flexible modelling tool for theoretical biologists to evaluate population models in a Bayesian framework. A variety of models are supported: single stage / age models, stage-structured population models, and age-structured population models. All models support variable change points (broken stick models), time lags, and error may be incorporated in the form of either observation error or process error. A wide range of symmetric and asymmetric likelihoods are supported, and any one of the ~ 25 prior distributions may be placed on any parameter in the model. BEAST also allows the user to do MCMC parameter estimation, population projections, and to conduct formal Bayesian decision analyses. Developed by E.J. Ward.

Searchable code libraries

As part of our Iugo-Cafe project, we have developed searchable ecological code repositories:

Our code on FishBox and EcologyBox

Much of the work by Brice Semmens, Eric Ward, Steve Viscido and myself (Eli Holmes) has been focused on fitting multivariate autoregressive models (MARMs) and multivariate state-space models (MSSMs). We are developing code/algorithms for maximum-likelihood and Bayesian approaches using Kalman filter and EM, data-cloning, and Gibbs-sampler algorithms. You can use the code (with attribution), but contact us because this is research in progress and we may have bugs/problems/whatever to share. Also we like to collaborate with folks on an analyses of interesting ecological data (, so you should feel free to drop us a line.

The following is older code that I haven't worked on since 2005-2007. This include the "slope" method (Holmes 2001) approach which I don't use much for research much now (although I did use it in Holmes et al. 2007). But I do use it for applications. It is a bit ad hoc, but it consistently performs better than any other approach I know of on very corrupted data. And Steve Ellner and I showed recently (in Ecol Letters) that the slope methods produced estimates that are very close to the theoretical minimum uncertainty.