Learn R Programming

unmarked (version 0.11-0)

distsamp: Fit the hierarchical distance sampling model of Royle et al. (2004)

Description

Fit the hierarchical distance sampling model of Royle et al. (2004) to line or point transect data recorded in discrete distance intervals.

Usage

distsamp(formula, data, keyfun=c("halfnorm", "exp", "hazard", "uniform"), output=c("density", "abund"), unitsOut=c("ha", "kmsq"), starts, method="BFGS", se=TRUE, engine=c("C", "R"), rel.tol=0.001, ...)

Arguments

formula
Double right-hand formula describing detection covariates followed by abundance covariates. ~1 ~1 would be a null model.
data
object of class unmarkedFrameDS, containing response matrix, covariates, distance interval cut points, survey type ("line" or "point"), transect lengths (for survey = "line"), and units ("m" or "km") for cut points and transect lengths. See example for set up.
keyfun
One of the following detection functions: "halfnorm", "hazard", "exp", or "uniform." See details.
output
Model either "density" or "abund"
unitsOut
Units of density. Either "ha" or "kmsq" for hectares and square kilometers, respectively.
starts
Vector of starting values for parameters.
method
Optimization method used by optim.
se
logical specifying whether or not to compute standard errors.
engine
Use code written in C++ or R
rel.tol
Requested relative accuracy of the integral, see integrate
...
Additional arguments to optim, such as lower and upper bounds

Value

unmarkedFit-class) describing the model fit.

Details

Unlike conventional distance sampling, which uses the 'conditional on detection' likelihood formulation, this model is based upon the unconditional likelihood and allows for modeling both abundance and detection function parameters.

The latent transect-level abundance distribution $f(N | theta)$ assumed to be Poisson with mean $lambda$ (but see gdistsamp for alternatives).

The detection process is modeled as multinomial: $y_ij ~ Multinomial(N_i, pi_i1, pi_i2, ..., pi_iJ)$, where $pi_ij$ is the multinomial cell probability for transect i in distance class j. These are computed based upon a detection function $g(x | sigma)$, such as the half-normal, negative exponential, or hazard rate.

Parameters $lambda$ and $sigma$ can be vectors affected by transect-specific covariates using the log link.

References

Royle, J. A., D. K. Dawson, and S. Bates (2004) Modeling abundance effects in distance sampling. Ecology 85, pp. 1591-1597.

Sillett, S. and Chandler, R.B. and Royle, J.A. and Kery, M. and Morrison, S.A. In Press. Hierarchical distance sampling models to estimate population size and habitat-specific abundance of an island endemic. Ecological Applications

See Also

unmarkedFrameDS, unmarkedFit-class fitList, formatDistData, parboot, sight2perpdist, detFuns, gdistsamp, ranef. Also look at vignette("distsamp").

Examples

Run this code
## Line transect examples

data(linetran)

ltUMF <- with(linetran, {
   unmarkedFrameDS(y = cbind(dc1, dc2, dc3, dc4),
   siteCovs = data.frame(Length, area, habitat),
   dist.breaks = c(0, 5, 10, 15, 20),
   tlength = linetran$Length * 1000, survey = "line", unitsIn = "m")
   })

ltUMF
summary(ltUMF)
hist(ltUMF)

# Half-normal detection function. Density output (log scale). No covariates.
(fm1 <- distsamp(~ 1 ~ 1, ltUMF))

# Some methods to use on fitted model
summary(fm1)
backTransform(fm1, type="state")                # animals / ha
exp(coef(fm1, type="state", altNames=TRUE))     # same
backTransform(fm1, type="det")                  # half-normal SD
hist(fm1, xlab="Distance (m)")	# Only works when there are no det covars
# Empirical Bayes estimates of posterior distribution for N_i
plot(ranef(fm1, K=50))

# Effective strip half-width
(eshw <- integrate(gxhn, 0, 20, sigma=10.9)$value)

# Detection probability
eshw / 20 # 20 is strip-width


# Halfnormal. Covariates affecting both density and and detection.
(fm2 <- distsamp(~area + habitat ~ habitat, ltUMF))

# Hazard-rate detection function.
(fm3 <- distsamp(~ 1 ~ 1, ltUMF, keyfun="hazard"))

# Plot detection function.
fmhz.shape <- exp(coef(fm3, type="det"))
fmhz.scale <- exp(coef(fm3, type="scale"))
plot(function(x) gxhaz(x, shape=fmhz.shape, scale=fmhz.scale), 0, 25,
	xlab="Distance (m)", ylab="Detection probability")



## Point transect examples

# Analysis of the Island Scrub-jay data.
# See Sillett et al. (In press)

data(issj)
str(issj)

jayumf <- unmarkedFrameDS(y=as.matrix(issj[,1:3]),
 siteCovs=data.frame(scale(issj[,c("elevation","forest","chaparral")])),
 dist.breaks=c(0,100,200,300), unitsIn="m", survey="point")

(fm1jay <- distsamp(~chaparral ~chaparral, jayumf))




## Not run: 
# 
# data(pointtran)
# 
# ptUMF <- with(pointtran, {
# 	unmarkedFrameDS(y = cbind(dc1, dc2, dc3, dc4, dc5),
# 	siteCovs = data.frame(area, habitat),
# 	dist.breaks = seq(0, 25, by=5), survey = "point", unitsIn = "m")
# 	})
# 
# # Half-normal.
# (fmp1 <- distsamp(~ 1 ~ 1, ptUMF))
# hist(fmp1, ylim=c(0, 0.07), xlab="Distance (m)")
# 
# # effective radius
# sig <- exp(coef(fmp1, type="det"))
# ea <- 2*pi * integrate(grhn, 0, 25, sigma=sig)$value # effective area
# sqrt(ea / pi) # effective radius
# 
# # detection probability
# ea / (pi*25^2)
# 
# ## End(Not run)

Run the code above in your browser using DataLab