Continuous-Time Movement Modeling

Functions for identifying, fitting, and applying continuous-space, continuous-time stochastic movement models to animal tracking data. The package is described in Calabrese et al (2016) , with models and methods based on those introduced in Fleming & Calabrese et al (2014) , Fleming et al (2014) , Fleming et al (2015) , Fleming et al (2015) , Fleming et al (2016) , Péron & Fleming et al (2016) , Fleming & Calabrese (2017) , Péron et al (2017) , Fleming et al (2017) , Fleming et al (2018) , Winner & Noonan et al (2018) , Fleming et al (2019) , Noonan & Fleming et al (2019) , Fleming et al (2020) , and Noonan et al (2021) .

ctmm is an R package for analyzing animal tracking data as a continuous-time stochastic processes. Package features include FFT variogram and Lomb-Scargle periodogram analysis, Kalman-filter maximum-likelihood estimation, Kriging, simulation, and autocorrelated kernel-density home-range estimation. First-time users can start with the Methods in Ecology and Evolution paper and then move on to the up-to-date vignettes vignette('variogram') and vignette('akde').


ctmm 0.5.5 (2019-02-11)

  • bugfix in summary where timescale CIs were always (0,Inf)

  • default now level=1

  • summary on UERE lists now works with more than one axis

  • R dependency increased to >=3.5 for parallel functions

ctmm 0.5.4 (2019-02-07)

  • bugfix in where OU was not considered over the new OUO/OUf models introduced in v0.5.3

  • bugfix in ctmm.boot for heteroskedastic errors

  • multiplicative option depreciated from ctmm.boot

ctmm 0.5.3 (2019-01-29)

  • oscillatory (and critically damped) OUO/OUf models now supported, starting with omega option of ctmm()

  • summary() now works on lists of UERE objects for error model selection

  • MSPE slots & arguments restructured and fully utilized in both summary and

  • new method speeds() for estimating instantaneous speeds

  • speed() more efficient on very coarse data, slightly improved CIs

  • new complete argument in simulate() and predict() to calculate timestamps and geographic coordinates

  • now avoiding fastPOSIXct timezone and epoch issues in as.telemetry

  • outlie() now works on lists of telemetry objects

  • bugfixes in overlap() CIs

  • overlap() now robust to bad model fits

  • new as.telemetry() argument mark.rm to delete marked outliers

  • bugfix in predict() & occurrence() where eccentricity was dropped from covariances

  • projection information in Move & MoveStack objects now preserved if possible

  • identities preserved with newer MoveStack objects

  • ctmm.boot() better handles parameter estimation near boundaries

  • e-obs data with missing error/speed/altitude now importing correctly in as.telemetry

  • correlogram plots now cap estimates to appropriate range

  • beta optimizer now more aggressive in searching along boundaries

  • bugfix in with duplicate timestamps and IID processes without error

  • bugfix in with pREML & error

  • summary() on telemetry lists no longer fails on length-1 timeseries

  • years updated to tropical years and calendar days updated to stellar days

ctmm 0.5.2 (2018-09-10)

  • location classes (multiple UEREs) now supported by and uere()<-

  • uere() forked into separate uere() and methods

  • AICc slot included in UERE objects for error model selection

  • overlap() telemetry and CTMM arguments depreciated

  • fixed bug in as.telemetry() when importing ARGOS error ellipses

  • e-obs error calibration updated

  • numerical stability increased in when distance scales are extreme

ctmm 0.5.1 (2018-08-06)

  • Units of measurement down to microns and microseconds now supported

  • now builds up autocovariance features stepwise to help with fit convergence

  • residuals() can now be calculated from (calibrated) calibration data---diagnostic argument removed from uere()

  • summary.ctmm() now returns DOF[speed] information on individuals

  • MSPE of ctmm objects was previously w.r.t. in-sample times and is now time averaged

  • summary.list.ctmm() now returns MSPE when useful

  • new speed() argument robust for coarse data

  • options multiplicative & robust added to ctmm.boot to help with parameters near boundaries

  • E-OBS errors adjusted by empirical results of Scott LaPoint's calibration data

  • Telonics Gen4 errors estimates imported with results of Patricia Medici's calibration data --- Quick Fixes not yet fully supported

  • fixed critical bug in speed()

  • fixed bug in as.telemetry with projection argument

  • fixed bugs in ctmm.loglike when !isotropic && error && circle

  • fixed bug in emulate when fast=FALSE and error=TRUE

  • fixed bug in new variogram error calculations (v0.5.0) used for plotting

  • simultaneously fitted UERE's from ctmm slot "error" can now be assigned to data for plotting

ctmm 0.5.0 (2018-05-15)

  • Extensive re-write of the Kalman filter & smoother, now supporting an arbitrary number of spatial dimensions, necessary for ARGOS error ellipse support. (Previously, all multi-dimensional problems were transformed into multiple one-dimensional problems.) Many new models will be supported going forward, based on the v0.5.0 code.

  • telemetry error vignette "error"

  • ARGOS error ellipse support in and simulate()

  • plotted variogram errors now estimated from HDOP and no longer assumed to be homoskedastic

  • as.telemetry() default projections now use robust ellipsoidal statistics

  • new median.telemetry() method for help with projecting data

  • (anisotropic & circulation & error) models now exact with 2D Kalman filter & smoother

  • simulate() & predict() velocities now correct with mean="periodic"

  • units argument in speed()

  • REML and related methods fixed from 0.4.X 1/2 bug

  • ctmm.loglike COV[mu] bugfix for circular error & elliptical movement

  • summary() rotation % bugfix with circle=TRUE

  • parameter boundary bugfix in and ctmm.loglike()

  • fixed bandwidth() bug when weights=TRUE on IID process

  • manipulate more appropriate with calibrated errors

  • fixed bug in plot.variogram for isotropic model fits

  • fixed bug in with fitted errors and any(diff(t)==0)

  • fixed bug in plot.variogram() from stats::qchisq() with k<<1

ctmm 0.4.2 (2018-02-12)

  • new speed() method

  • new ctmm.boot() method

  • new outlie() method

  • new export functionality for telemetry class

  • overlap debias=TRUE option (approximate)

  • pHREML, pREML, HREML methods implemented and documented

  • IID pREML & REML AICc values implemented

  • MSPE values implemented

  • new uere()<- assignment method

  • velocity esimtates now included in predict() [fitting one model to multiple behaviors can result in wildly optimistic confidence intervals]

  • velocities now included in simulate()

  • simulate precompute option

  • as.telemetry drop=TRUE option

  • as.telemetry will no longer drop individuals with missing data columns

  • as.telemetry will try to approximate DOP values

  • as.telemetry imports velocity vectors

  • as.telemetry default projection orientation now robust with GmedianCOV

  • plot.UD resolution grid less obnoxious, NA/FALSE contour label option

  • plot.telemetry error=0:3 options for data with recorded error circles/ellipses

  • plot.telemetry velocity=TRUE option for data with recorded velocities

  • plot.variogram bugfixes with telemetry errors

  • fixed AIC bug in new parameterization code (0.4.0-0.4.1) where isotropic=TRUE model would never be selected

  • fixed rare endless loop in akde/bandwidth with weights=TRUE

  • outlier removed from buffalo$Cilla

ctmm 0.4.1 (2017-08-30)

  • projection method for ctmm objects

ctmm 0.4.0 (2017-08-29)

  • periodigram vignette

  • new utility function %#% for unit conversions

  • new model-fit sampling function "emulate"

  • summary now works on lists of telemetry objects

  • new extent method for variogram objects

  • bugfixes in plot.variogram with fit UERE, tau==0

  • bugfixes with near boundaries

  • resetting Polak–Ribiere formula in weighted AKDE conjugate gradient routine

  • read.table fallback in as.telmetry

  • R 3.4 compatibility fixes

  • various improvements to plot.variogram

  • plot.UD & export can now accept multiple level.UD values

  • increased numerical precision in ctmm.loglike

  • SI speeds & diffusion fixed with units=FALSE

ctmm 0.3.6 (2017-04-23)

  • AICc formulas updated from univariate to multivariate

  • more aggressive on small sample sizes where AICc >> AIC

  • new residuals and correlogram functions

  • now has unified options controling optimization & differentiation

  • Hessian and pREML calculations 2x faster

  • new writeRaster method for UD objects

  • better UD plot boxes with new extent methods

  • variogram fast=TRUE less biased for irregular data with new res>1 option

  • variogram fast=FALSE more robust to irregularity

  • akde() can now handle duplicate times (with an error model)

  • plot.variogram bugfix for fixed error models [still not quite correct]

  • Column name preferences in as.telemetry

  • as.telemetry faster with fread & fastPOSIXct

  • new trace option for

  • new labels option for plot.UD

  • more robust CIs for pREML, REML

  • chi-square CIs (area, semi-variance, etc.) more robust when DOF<1

ctmm 0.3.5 (2017-02-01)

  • added a FAQ page to the documentation help("ctmm-FAQ")

  • bugfix in occurrence method for BM & IOU models

  • unit conversion can now be disabled in summary with units=FALSE argument

  • added trace option to & bandwidth/akde

  • improved telemetry error support in summary.ctmm and plot.variogram

  • as.telemetry more robust to alternative column label capitalizations

  • ctmm.loglike & more robust when tau_velocity ~ tau_position

  • Kalman filter & smoother upgraded to Joseph form covariance updates

ctmm 0.3.4 (2016-11-28)

  • weighted AKDE implemented, fast option, covered in vignette

  • overlap arguments & ouput changed/generalized

  • method akde.bandwidth renamed to bandwidth inline with S3 standards

  • predict now returns covariance estimates

  • occurrence distributions now exportable

  • AKDE overlap bugfixes

  • summary.ctmm now returns correct RMS speed

  • bugfix for eccentricity errors

  • variogram CIs fixed for odd dimensions

  • can now accept OU models

  • periodogram rare index bugfix

  • fixed missing lag in dt-argumented variogram

  • as.telemetry column identification more robust

  • as.telemetry defined for MoveStack objects

ctmm 0.3.3 (2016-09-05)

  • improved import of 'move' objects

  • preliminary 3D AKDE support, debiased

  • new method predict for ctmm objects

  • akde now supports smoothing errors

  • and plot.variogram now support telemetry error

  • UERE fitting now possible simultaneous with tracking data

  • tag.local.identifier now used as backup to individual.local.identifier in as.telemetry

  • multiple bug fixes in uere

  • fixed in occurrence

ctmm 0.3.2 (2016-05-12)

  • new function overlap for stationary Gaussian distributions and KDEs

  • new function uere calculates UERE from calibration data

  • akde debias argument removes most bias from area estimtes, now default

  • akde CIs further improved

  • variogram, periodogram generalized to arbitrary dimensions

  • periodic mean function option for ctmm,,, plot.variogram, summary (not yet documented)

  • new method residuals for ctmm objects

  • now only considers likely model modifications

  • DOFs now returned in summary

  • new methods [.telemetry, [.variogram, [.periodogram, subset.periodogram

  • methods for zoom, raster, writeShapefile now properly assigned to generics

  • new plot.periodogram option max

  • new periodogram option res.time (with Lagrange interpolation). Old option res renamed to res.freq.

  • akde res argument is now relative to the bandwidth

  • occurrence argument is now relative to the average diffusion

  • plot.telemetry with data error now uses level.UD for error radius instead of one standard deviation

  • gridding function for fast=TRUE variogram and periodogram now always fast

  • bad location removed from buffalo "Pepper"

ctmm 0.3.1 (2016-02-23)

  • now stores global variables of any name

  • sliders now use pretty units

  • range argument depreciated in favor of a more general CTMM prototype argument

  • akde UD CIs significantly improved for high quality datasets

  • akde bugfix: subscript out of bounds

  • circulatory model introduced via circle ctmm argument

  • oscillatory CPF model introduced via CPF ctmm argument

  • as.telemetry now imports GPS.HDOP columns with a UERE argument

  • summary now works on arbitrary lists of ctmm objects

  • now tries to make sense of ML parameters that lie on boundaries

  • occurrence() now works when some timesteps are tiny

ctmm 0.3.0 (2015-11-26)

  • new function "occurrence" to estimate occurrence distributions

  • "akde" & "occurrence" class objects generalized to "UD" class

  • alpha & alpha.HR arguments simplified and generalized to level & level.UD

  • AKDE= and *.HR= arguments generalized to UD= and *.UD=

  • new basic telemetry error functionality in ctmm,

  • new function

  • new methods subset.telemetry and subset.variogram

  • fixed a bug in the uncertainty report of uncorrelated processes

  • is now much faster by specifying a reasonable parscale for optim

  • now has a backup for when Brent fails

ctmm 0.2.9 (2015-10-13)

  • fixed a rare condition in where solve would fail on correlated errors

  • multiscale variogram and mean variogram example in vignette

  • new data example Mongolian gazelle

  • new fast option for periodogram

  • improvements in plot.periodogram

  • bugfix in as.telemetry for numeric indentifiers

  • bugfix in dt array option of variogram

  • new resolution option and better estimation algorithms in akde

  • alpha, alpha.HR, res arguments made consistent across all functions

ctmm 0.2.8 (2015-08-25)

  • efficiency gains in as.telemetry with multiple animals

  • bugfix in plot.telemetry for multiple Gaussian PDFs

  • bugfix in variogram for rare condition when fast=TRUE

ctmm 0.2.7 (2015-07-27)

  • CRAN check compliance achieved.

  • all methods (plot, mean, summary, simulate) can and must be run without class extensions

  • argument names no longer clash with function names and are more explicit about their object class

ctmm 0.2.6 (2015-07-17)

  • export bugfixes

ctmm 0.2.5 (2015-07-14)

  • IOU bug fixes in and plot.variogram

ctmm 0.2.4 (2015-06-28)

  • cleaned up and labeled tau parameter arrays

  • implemented Workaround for when subset demotes S4 objects to S3 objects

  • plot.telemetry now enforces asp=1 even with xlim/ylim arguments

ctmm 0.2.3 (2015-06-19)

  • new function summary.telemetry

  • bugfix in as.telemetry for data$t

  • bugfix in ctmm.loglike for some cases with numeric underflow

  • periodogram and plot.periodogram can now check for spurious periodicities

  • minimal support for BM and IOU motion

ctmm 0.2.2 (2015-05-21)

  • new functions periodogram, plot.periodogram

ctmm 0.2.1 (2015-05-08)

  • new function SpatialPoints.telemetry returns SpatialPoints object from telemetry data

  • new function SpatialPolygonsDataFrame.akde returns akde home-range contour SpatialPolygons objects from akde object

  • new function writeShapefile.akde writes akde home-range contours to ESRI shapefile

  • new function raster.akde returns akde pdf raster object

  • new function summary.akde returns HR area of AKDE

  • fixed bad CI in plot.telemetry model option

  • as.telemetry now takes a timezone argument for as.POSIXct and defaults to UTC

  • telemetry, ctmm, and akde objects now have idenification and projection information slotted, with consistent naming throughout

ctmm 0.2.0 (2015-04-27)

  • vignettes "variogram" and "akde"

  • new function as.telemetry imports MoveBank formatted csv data and returns telemetry objects

  • new function variogram.zoom plots a variogram with zoom slider

  • and variogram.zoom default to a logarithmic-scale zoom slider, which requires much less fiddling

  • plot.variogram now takes multiple variogram, model, and color options

  • plot.telemetry now takes multiple data, model, akde, and color options

  • plot.telemetry can now make probability density plots for both Gaussian model and akde data

  • no longer screws up results with initial sigma guesstimates. ML parameter estimates now match closely with published Mathematica results. CIs are improved.

  • ks-package was producing incorrect home-range contours and has been replaced with custom code. ML home ranges now match published Mathematica results. CIs should be improved.

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.


0.6.1 by Christen H. Fleming, 3 months ago,

Browse source code at

Authors: Christen H. Fleming [aut, cre] , Justin M. Calabrese [aut] , Xianghui Dong [ctb] , Kevin Winner [ctb] , Guillaume Péron [ctb] , Michael J. Noonan [ctb] , Bart Kranstauber [ctb] , Eliezer Gurarie [ctb] , Kamran Safi [ctb] , Paul C. Cross [dtc] , Thomas Mueller [dtc] , Rogério C. de Paula [dtc] , Thomas Akre [dtc] , Jonathan Drescher-Lehman [dtc] , Autumn-Lynn Harrison [dtc] , Ronaldo G. Morato [dtc]

Documentation:   PDF Manual  

Task views: Handling and Analyzing Spatio-Temporal Data, Processing and Analysis of Tracking Data

GPL-3 license

Imports Bessel, data.table, digest, expm, fasttime, Gmedian, graphics, grDevices, gsl, manipulate, MASS, methods, numDeriv, pbivnorm, pracma, raster, rgdal, shape, sp, statmod, stats, utils

Suggests animation, bit64, fftw, knitr, move, parallel, parsedate, rmarkdown, sf, suncalc

Imported by amt.

Suggested by move, trackdf.

See at CRAN