
Functions to model a mixture of 2 random Poisson processes to histogram-like data of log frequency vs interval mid points. This follows Sibly et al. (1990) method.
bouts2.nlsFUN(x, a1, lambda1, a2, lambda2)
bouts2.nls(lnfreq, start, maxiter)
bouts2.nlsBEC(fit)
plotBouts2.nls(fit, lnfreq, bec.lty, …)
numeric vector with values to model.
numeric: parameters from the mixture of Poisson processes.
data.frame
with named components
lnfreq (log frequencies) and corresponding x (mid points
of histogram bins).
Arguments passed to nls
.
nls object.
Line type specification for drawing the BEC reference line.
Arguments passed to plot.default
.
bouts2.nlsFUN
returns a numeric vector evaluating the mixture of 2
Poisson process.
bouts2.nls
returns an nls object resulting from fitting this
model to data.
bouts2.nlsBEC
returns a number corresponding to the bout ending
criterion derived from the model.
plotBouts2.nls
plots the fitted model with the corresponding
data.
bouts2.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 bouts2.nls
.
bouts2.nls
fits the nonlinear least-squares model itself.
bouts2.nlsBEC
calculates the BEC from a list object, as the one
that is returned by nls
, representing a fit of the
model. plotBouts2.nls
plots such an object.
Sibly, R.; Nott, H. and Fletcher, D. (1990) Splitting behaviour into bouts Animal Behaviour 39, 63-69.
# NOT RUN {
# }
# NOT RUN {
## Too long for checks
## Using the Example from '?diveStats':
utils::example("diveStats", package="diveMove",
ask=FALSE, echo=FALSE, run.donttest=TRUE)
## Postdive durations
postdives <- tdrX.tab$postdive.dur[tdrX.tab$phase.no == 2]
postdives.diff <- abs(diff(postdives))
## Remove isolated dives
postdives.diff <- postdives.diff[postdives.diff < 2000]
## Construct histogram
lnfreq <- boutfreqs(postdives.diff, bw=0.1, plot=FALSE)
startval <- boutinit(lnfreq, 50)
## 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"]))
## Fit the 2 process model
bout.fit <- bouts2.nls(lnfreq, start=startval.l, maxiter=500)
summary(bout.fit)
plotBouts(bout.fit)
## Estimated BEC
bec2(bout.fit)
# }
# NOT RUN {
# }
Run the code above in your browser using DataLab