Beginner Line-transect Analysis

Estimation of a simple distance function

R
Distance Analysis
Author

Trent McDonald

Published

January 21, 2023

In this post, I demonstrate how to estimate a distance function using Rdistance.

Estimation

library(Rdistance)
Rdistance (version 3.0.0)
data(sparrowDetectionData)

dfunc <- dfuncEstim( dist ~ 1
                   , detectionData = sparrowDetectionData
                   , likelihood = "halfnorm")

dfunc
Call: dfuncEstim(formula = dist ~ 1, detectionData =
   sparrowDetectionData, likelihood = "halfnorm")
Coefficients:
       Estimate  SE       z         p(>|z|)      
Sigma  52.39612  1.97278  26.55954  1.992907e-155

Convergence: Success
Function: HALFNORM  
Strip: 0 [m] to 207 [m] 
Effective strip width (ESW): 65.66368 [m] 
Probability of detection: 0.3172158 
Scaling: g(0 [m]) = 1
Negative log likelihood: 1667.639 
AICc: 3337.289

The dfunc output shows parameter estimates, convergence status, and effective strip width (i.e., 65.6637).

Plots

Plots of the estimated function are easy.

plot(dfunc)

The plot can be customized in a number of ways. For example, we can change the number of bars, color the bars, and the titles.

plot(dfunc
     , nbins = 40
     , col ="blue"
     , density = -1
     , col.dfunc = "orange"
     , main = "Sparrow detection")
rug(dfunc$detections$dist, col="red")

Abundance Estimates

Information on the transects (i.e., number and length of each) is contained in the sparrowSiteData data frame.

data("sparrowSiteData")
head(sparrowSiteData)
  siteID  length observer bare herb shrub height shrubclass
1     A1 500 [m]     obs4 36.7 15.9  20.1   26.4       High
2     A2 500 [m]     obs4 38.7 16.1  19.3   25.0       High
3     A3 500 [m]     obs5 37.7 18.8  19.8   27.0       High
4     A4 500 [m]     obs5 37.7 17.9  19.9   27.1       High
5     B1 500 [m]     obs3 58.5 17.6   5.2   19.6        Low
6     B2 500 [m]     obs3 56.6 18.1   5.2   19.0        Low

Let’s assume the study area on which these transects were collected was 300 ha. Estimates of sparrow density on the sampled transects and sparrow abundance in the study area are obtained by calling the abundEstim function with an estimate distance function, transect data frame, and study area size. Measurement units must be applied to study area size so that Rdistance computes density correctly. By default, Rdistance computes 95% confidence intervals by bootstrap resampling individual transects in the transect information data frame. Setting showProgress to FALSE shuts off the progress bar. Outside of markup documents, the bootstrap progress bar can improve sanity of the analyst.

abund <- abundEstim(dfunc
                    , detectionData = sparrowDetectionData
                    , siteData = sparrowSiteData
                    , area = units::set_units(300, "ha")
                    , showProgress = FALSE)
abund
Call: dfuncEstim(formula = dist ~ 1, detectionData =
   sparrowDetectionData, likelihood = "halfnorm")
Coefficients:
       Estimate  SE       z         p(>|z|)      
Sigma  52.39612  1.97278  26.55954  1.992907e-155

Convergence: Success
Function: HALFNORM  
Strip: 0 [m] to 207 [m] 
Effective strip width (ESW): 65.66368 [m] 
                     95% CI: 59.20046 [m] to 72.86502 [m]
Probability of detection: 0.3172158 
Scaling: g(0 [m]) = 1
Negative log likelihood: 1667.639 
AICc: 3337.289

     Surveyed Units: 36000 [m] 
   Individuals seen: 356 in 356 groups 
 Average group size: 1 
              Range: 1 to 1 

Density in sampled area: 7.529953e-05 [1/m^2]
                 95% CI: 5.823606e-05 [1/m^2] to 9.392443e-05 [1/m^2]

Abundance in 3e+06 [m^2] study area: 225.8986
                             95% CI: 174.7082 to 281.7733

Density and abundance estimates along with boostrap confidence intervals appear below the distance function we’ve already seen.