brownian.bridge {BBMM}R Documentation

Brownian bridge movement model


Estimate a Brownian bridge model of movement in which the probability of a mobile object being in an area is conditioned on starting and ending locations. The model provides an empirical estimate of a movement path using discrete location data obtained at relatively short time intervals. The Brownian bridge probability density connecting each pair of successive locations is an estimate of the relative time spent in an area during the time interval between those locations.


brownian.bridge(x, y, time.lag, location.error, area.grid = NULL, 
				cell.size = NULL, time.step = 10, max.lag = NULL)



Vector of x coordinates (in meters) of locations, ordered in time.


Vector of y coordinates (in meters) of locations, ordered in time.


Vector of time differences (in minutes) between successive locations where length(time.lag) is the same as length(x)-1. time.lag[1] is the length of time between locations 1 and 2, and time.lag[2] is the difference between locations 2 and 3, and so on.


The standard deviation of normally distributed location errors (single value or vector of 1 value for each observation).


(optional) Matrix or data frame of x and y coordinates of cell center ponts on a rectangular grid that defines the area in which to estimate probability of use. If missing, a grid is created by expanding the range of x and y by 1 standard deviation and using cell.size.


(optional) Cell size for area.grid, if area.grid not provided. Must specify either area.grid or cell.size.


(optional) The Brownian bridge probability density function must be integrated to find the fraction of time spent in each region. While the probability density function cannot be integrated, it can be approximated by discretizing time into arbitrarily small intervals according to time.step. The default is 10 units (same as time.lag). A longer time.step speeds up estimation, but reduces precision.


(optional) Maximum time lag (same units as time.lag) between successful locations to use in calculating the Brownian motion variance and probability of use. This can be important if some scheduled locations are missing, either via an unsuccessful fix attempt to locate the individual/object or because of a lack of effort. Including large time gaps in sequence of locations can artificially inflate/deflate the Brownian motion variance and potentially bias estimates of probability of use (to what degree is unknown). If two successive locations are >max.lag, then a Brownian bridge is not estimated between those two locations. The default sets the max.lag equal to the maximum time difference in time.lag+1.


This is the main routine for estimating a Brownian bridge. It calls brownian.motion.variance to estimate the Brownian motion variance via maximum likelihood and then calculates the probabilities of use across the area.grid. Larger data sets and larger grids require more computing time, which can be a few of hours on a 32-bit PC or just a fraction of an hour on a 64-bit PC running R x64.


An object (list) of class("bbmm") with four components.

Components of the returned object are as follows:

Brownian motion variance

Estimated Brownian motion variance.


Vector of x coordinates for grid cells.


Vector of y coordinates for grid cells.


Estimated proportion of time spent in each grid cell.


Ryan Nielson, Hall Sawyer, and Trent McDonald (WEST, Inc.,

Maintainer: Ryan Nielson


Horne, J. S., E. O. Garton, S. M. Krone, and J. S. Lewis. 2007. Analyzing animal movements using Brownian bridges. Ecology 88:2354-2363.

Sawyer, H., M. J. Kauffman, R. M. Nielson, and J. S. Horne. 2009. Identifying and prioritizing ungulate migration routes for landscpe-level conservation. Ecological Applications 19:2016-2025.

See Also

brownian.motion.variance, bbmm.summary, bbmm.contour


BBMM <- brownian.bridge(x=locations$x, y=locations$y, 
            time.lag=locations$time.lag[-1], location.error=20, 

# To export an Ascii grid with probabilities (UD).
# First delete any x and y coords that have probability of use < 0.00000001.
# 	This saves some computing time and reduces the size of the output Ascii file.
# Not run: x <- BBMM$x[BBMM$probability >= 0.00000001]
# Not run: y <- BBMM$y[BBMM$probability >= 0.00000001]
# Not run: z <- BBMM$probability[BBMM$probability >= 0.00000001]
# Not run: tmp <- data.frame(x, y, z) 
# Not run: library(maptools)
# Not run: m <- SpatialPixelsDataFrame(points = tmp[c("x", "y")], data=tmp)
# Not run: m <- as(m, "SpatialGridDataFrame")
# Not run: write.asciigrid(m, "BBMM.asc", attr=3)

[Package BBMM version 3.0 Index]