% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/integrateHuberLines.R
\name{integrateHuberLines}
\alias{integrateHuberLines}
\title{Integrate Line-transect Huber function}
\usage{
integrateHuberLines(
  object,
  newdata = NULL,
  w.lo = NULL,
  w.hi = NULL,
  Units = NULL
)
}
\arguments{
\item{object}{Either an Rdistance fitted distance function
(an object that inherits from class "dfunc"; usually produced 
by a call to \code{\link{dfuncEstim}}), or a matrix of canonical 
distance function parameters (e.g., \code{matrix(exp(fit$par),1)}). 
If a matrix, each row corresponds to a 
distance function and each column is a parameter. The first column is 
the parameter related to sighting covariates and must be transformed 
to the "real" space (i.e., inverse link, which is \eqn{exp()}, must 
be applied outside this routine).  If \code{object} is a matrix, 
it should not have measurement units because
only derived quantities (e.g., ESW) have units; Rdistance function 
parameters themselves never have units.}

\item{newdata}{A data frame containing new values for 
the distance function covariates. If NULL and 
\code{object} is a fitted distance function, the  
observed covariates stored in
\code{object} are used (behavior similar to \code{\link{predict.lm}}).
Argument \code{newdata} is ignored if \code{object} is a matrix.}

\item{w.lo}{Minimum sighting distance or left-truncation value
if \code{object} is a matrix.
Ignored if \code{object} 
is a fitted distance function. 
Must have physical measurement units.}

\item{w.hi}{Maximum sighting distance or right-truncation value
if \code{object} is a matrix.
Ignored if \code{object} 
is a fitted distance function.
Must have physical measurement units.}

\item{Units}{Physical units of sighting distances if 
\code{object} is a matrix. Sighting distance units can differ from units 
of \code{w.lo} or \code{w.hi}.   Ignored if \code{object}
is a fitted distance function.}
}
\value{
A vector of areas under the distance functions represented in 
\code{object}. 
If \code{object} is a distance function and 
\code{newdata} is specified, the returned vector's length is 
\code{nrow(newdata)}.  If \code{object} is a distance function and 
\code{newdata} is NULL, 
returned vector's length is \code{length(distances(object))}. If 
\code{object} is a matrix, return's length is 
\code{nrow(object)}.
}
\description{
Compute exact integral of the 'huber' distance function for line 
transects.
}
\section{Note}{

Users will not normally call this function. It is called 
internally by \code{\link{nLL}} and \code{\link{effectiveDistance}}.
}

\examples{

w <- 250
T1 <- 160
T2 <- 20
p <- 0.03
obj <- matrix(c(T1,T2,p), 1, 3)

integrateHuberLines(obj
  , w.lo = units::set_units(0,"m")
  , w.hi = units::set_units(w,"m")
  , Units = "m")
  
# same
huber.cumFunc(w,T1,T2,p,w)

# check by numeric integration
hubLike <- function(d, T1, T2, p, wl, wh) { 
  y <- huber.like(a = c(log(T1), T2, p)
           , dist = d - wl
           , covars = matrix(1, length(d))
           , w.hi = wh - wl)$L.unscaled
  y
}
integrate(hubLike, lower = 0, upper = w, T1 = T1
        , T2 = T2, p = p, wl = 0, wh = w)
  
}
\seealso{
\code{\link{integrateNumeric}}; \code{\link{integrateNegexpLines}}; 
\code{\link{integrateHalfnormLines}}
}
