aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKen Kellner <ken@kenkellner.com>2024-01-19 15:54:46 -0500
committerKen Kellner <ken@kenkellner.com>2024-01-19 15:56:25 -0500
commit62ec0f1e8d7338f9f3919d8d9d5ddb82c730babf (patch)
tree5f358e169053fbda0aac85026cf605abf218802f
parent5d5842c88ec8856617949b4aa707822d425a3525 (diff)
Update residuals
-rw-r--r--R/gdistremoval.R2
-rw-r--r--R/occuCOP.R2
-rw-r--r--R/unmarkedFit.R18
-rw-r--r--man/residuals.Rd24
-rw-r--r--man/unmarkedFit-class.Rd9
5 files changed, 39 insertions, 16 deletions
diff --git a/R/gdistremoval.R b/R/gdistremoval.R
index a90f807..d4b1b39 100644
--- a/R/gdistremoval.R
+++ b/R/gdistremoval.R
@@ -586,7 +586,7 @@ setMethod("fitted_internal", "unmarkedFitGDR", function(object, na.rm = FALSE){
list(dist=ft_dist, rem=ft_rem)
})
-setMethod("residuals", "unmarkedFitGDR", function(object){
+setMethod("residuals_internal", "unmarkedFitGDR", function(object, ...){
ft <- fitted(object)
list(dist=object@data@yDistance - ft$dist, rem=object@data@yRemoval-ft$rem)
})
diff --git a/R/occuCOP.R b/R/occuCOP.R
index 339e077..d42ab07 100644
--- a/R/occuCOP.R
+++ b/R/occuCOP.R
@@ -396,7 +396,7 @@ setMethod("fitted_internal", "unmarkedFitOccuCOP", function(object, na.rm = FALS
## residuals ----
-setMethod("residuals", "unmarkedFitOccuCOP", function(object) {
+setMethod("residuals_internal", "unmarkedFitOccuCOP", function(object, ...) {
y <- getY(object@data)
e <- fitted(object)
r <- y - e
diff --git a/R/unmarkedFit.R b/R/unmarkedFit.R
index 4d49858..8c55d19 100644
--- a/R/unmarkedFit.R
+++ b/R/unmarkedFit.R
@@ -1300,13 +1300,21 @@ setMethod("plot", c("profile", "missing"), function(x) {
setMethod("residuals", "unmarkedFit", function(object, ...) {
+ residuals_internal(object, ...)
+})
+
+setGeneric("residuals_internal", function(object, ...){
+ standardGeneric("residuals_internal")
+})
+
+setMethod("residuals_internal", "unmarkedFit", function(object, ...) {
y <- getY(object@data)
e <- fitted(object, na.rm = FALSE)
r <- y - e
return(r)
})
-setMethod("residuals", "unmarkedFitOccu", function(object, ...) {
+setMethod("residuals_internal", "unmarkedFitOccu", function(object, ...) {
y <- getY(object@data)
y <- truncateToBinary(y)
e <- fitted(object, na.rm = FALSE)
@@ -1314,12 +1322,12 @@ setMethod("residuals", "unmarkedFitOccu", function(object, ...) {
return(r)
})
-setMethod("residuals", "unmarkedFitOccuFP", function(object, ...) {
+setMethod("residuals_internal", "unmarkedFitOccuFP", function(object, ...) {
cat("residuals is not implemented for occuFP at this time")
})
-setMethod("residuals", "unmarkedFitOccuRN", function(object, ...) {
+setMethod("residuals_internal", "unmarkedFitOccuRN", function(object, ...) {
y <- getY(object@data)
y <- truncateToBinary(y)
e <- fitted(object, na.rm = FALSE)
@@ -1327,7 +1335,7 @@ setMethod("residuals", "unmarkedFitOccuRN", function(object, ...) {
return(r)
})
-setMethod("residuals", "unmarkedFitOccuMulti", function(object, ...) {
+setMethod("residuals_internal", "unmarkedFitOccuMulti", function(object, ...) {
res_list <- list()
ylist <- object@data@ylist
fitlist <- fitted(object)
@@ -1339,7 +1347,7 @@ setMethod("residuals", "unmarkedFitOccuMulti", function(object, ...) {
res_list
})
-setMethod("residuals", "unmarkedFitOccuTTD", function(object, ...) {
+setMethod("residuals_internal", "unmarkedFitOccuTTD", function(object, ...) {
tmax <- object@data@surveyLength
yraw <- object@data@y
y <- ifelse(yraw<tmax,1,0)
diff --git a/man/residuals.Rd b/man/residuals.Rd
new file mode 100644
index 0000000..f5a8982
--- /dev/null
+++ b/man/residuals.Rd
@@ -0,0 +1,24 @@
+\name{residuals}
+\alias{residuals-methods}
+\alias{residuals,unmarkedFit-method}
+
+\title{Calculate residuals from a model}
+
+\description{Calculates residuals from a model. The approach varies based
+on the model type, but is usually the observed data (\code{y}) minus the
+fitted values. See \code{\link{fitted}}.}
+
+\usage{
+\S4method{residuals}{unmarkedFit}(object, ...)
+}
+
+\arguments{
+ \item{object}{A \code{unmarkedFit} object}
+ \item{...}{Other arguments, currently unused.}
+}
+
+\value{In most cases, \code{residuals} returns a matrix of residual values with the
+ same dimensions as the \code{y} matrix (M x J or M x JT). For some models with
+ multiple observation processes or multiple species, such as \code{gdistremoval}
+ or \code{occuMulti}, the output may be a named list of matrices.
+}
diff --git a/man/unmarkedFit-class.Rd b/man/unmarkedFit-class.Rd
index d8b1aea..e9d1c01 100644
--- a/man/unmarkedFit-class.Rd
+++ b/man/unmarkedFit-class.Rd
@@ -20,14 +20,6 @@
\alias{plot,unmarkedFitGDR,missing-method}
\alias{plot,unmarkedFitOccuCOP,missing-method}
\alias{profile,unmarkedFit-method}
-\alias{residuals,unmarkedFit-method}
-\alias{residuals,unmarkedFitOccu-method}
-\alias{residuals,unmarkedFitOccuFP-method}
-\alias{residuals,unmarkedFitOccuRN-method}
-\alias{residuals,unmarkedFitOccuMulti-method}
-\alias{residuals,unmarkedFitOccuTTD-method}
-\alias{residuals,unmarkedFitGDR-method}
-\alias{residuals,unmarkedFitOccuCOP-method}
\alias{update,unmarkedFit-method}
\alias{update,unmarkedFitColExt-method}
\alias{update,unmarkedFitGMM-method}
@@ -136,7 +128,6 @@ extracted using the methods described below.
data.frame }
\item{profile}{\code{signature(fitted = "unmarkedFit")}: used by confint
method='profile' }
- \item{residuals}{\code{signature(object = "unmarkedFit")}: returns residuals }
\item{sampleSize}{\code{signature(object = "unmarkedFit")}: returns number
of sites in sample }
\item{SE}{\code{signature(obj = "unmarkedFit")}: returns standard errors }