Learn R Programming

diveMove (version 1.3.2)

bouts3NLS: Fit mixture of 3 Poisson Processes to Log Frequency data

Description

Functions to model a mixture of 3 random Poisson processes to histogram-like data of log frequency vs interval mid points. This follows Sibly et al. (1990) method, adapted for a three-process model by Berdoy (1993).

Usage

bouts3.nlsFUN(x, a1, lambda1, a2, lambda2, a3, lambda3)
bouts3.nls(lnfreq, start, maxiter)
bouts3.nlsBEC(fit)
plotBouts3.nls(fit, lnfreq, bec.lty, ...)

Arguments

x
numeric vector with values to model.
a1, lambda1, a2, lambda2, a3, lambda3
numeric: parameters from the mixture of Poisson processes.
lnfreq
data.frame with named components lnfreq (log frequencies) and corresponding x (mid points of histogram bins).
start, maxiter
Arguments passed to nls.
fit
nls object.
bec.lty
Line type specification for drawing the BEC reference line.
...
Arguments passed to plot.default.

Value

  • bouts3.nlsFUN returns a numeric vector evaluating the mixture of 3 Poisson process.

    bouts3.nls returns an nls object resulting from fitting this model to data.

    bouts3.nlsBEC returns a number corresponding to the bout ending criterion derived from the model.

    plotBouts3.nls plots the fitted model with the corresponding data.

Details

bouts3.nlsFUN is the function object defining the nonlinear least-squares relationship in the model. It is not meant to be used directly, but is used internally by bouts3.nls.

bouts3.nls fits the nonlinear least-squares model itself.

bouts3.nlsBEC calculates the BEC from a list object, as the one that is returned by nls, representing a fit of the model. plotBouts3.nls plots such an object.

References

Sibly, R.; Nott, H. and Fletcher, D. (1990) Splitting behaviour into bouts. Animal Behaviour 39, 63-69.

Berdoy, M. (1993) Defining bouts of behaviour: a three-process model. Animal Behaviour 46, 387-396.

See Also

bouts.mle for a better approach; boutfreqs; boutinit

Examples

Run this code
## Using the Example from '?diveStats':
utils::example("diveStats", package="diveMove",
               ask=FALSE, echo=FALSE)
## Postdive durations
postdives <- tdrX.tab$postdive.dur
postdives.diff <- abs(diff(postdives))
## Remove isolated dives
postdives.diff <- postdives.diff[postdives.diff < 4000]

## Construct histogram
lnfreq <- boutfreqs(postdives.diff, bw=0.1, plot=FALSE)

startval <- boutinit(lnfreq, c(50, 400))
## Drop names by wrapping around as.vector()
startval.l <- list(a1=as.vector(startval[[1]]["a"]),
                   lambda1=as.vector(startval[[1]]["lambda"]),
                   a2=as.vector(startval[[2]]["a"]),
                   lambda2=as.vector(startval[[2]]["lambda"]),
                   a3=as.vector(startval[[3]]["a"]),
                   lambda3=as.vector(startval[[3]]["lambda"]))

## Fit the 3 process model
bout.fit <- bouts3.nls(lnfreq, start=startval.l, maxiter=500)
summary(bout.fit)
plotBouts(bout.fit)

## Estimated BEC
bec3(bout.fit)

Run the code above in your browser using DataLab