aboutsummaryrefslogtreecommitdiff
path: root/R/lod.R
diff options
context:
space:
mode:
Diffstat (limited to 'R/lod.R')
-rw-r--r--R/lod.R61
1 files changed, 61 insertions, 0 deletions
diff --git a/R/lod.R b/R/lod.R
index bccdf3e..bf6e928 100644
--- a/R/lod.R
+++ b/R/lod.R
@@ -1,13 +1,74 @@
+#' Estimate a limit of detection (LOD)
+#'
+#' The decision limit (German: Nachweisgrenze) is defined as the signal or
+#' analyte concentration that is significantly different from the blank signal
+#' with a first order error alpha (one-sided significance test). The detection
+#' limit, or more precise, the minimum detectable value (German:
+#' Erfassungsgrenze), is then defined as the signal or analyte concentration
+#' where the probability that the signal is not detected although the analyte
+#' is present (type II or false negative error), is beta (also a one-sided
+#' significance test).
+#'
+#' @aliases lod lod.lm lod.rlm lod.default
+#' @param object A univariate model object of class \code{\link{lm}} or
+#' \code{\link[MASS:rlm]{rlm}} with model formula \code{y ~ x} or \code{y ~ x -
+#' 1}, optionally from a weighted regression.
+#' @param \dots Placeholder for further arguments that might be needed by
+#' future implementations.
+#' @param alpha The error tolerance for the decision limit (critical value).
+#' @param beta The error tolerance beta for the detection limit.
+#' @param method The \dQuote{default} method uses a prediction interval at the
+#' LOD for the estimation of the LOD, which obviously requires iteration. This
+#' is described for example in Massart, p. 432 ff. The \dQuote{din} method
+#' uses the prediction interval at x = 0 as an approximation.
+#' @param tol When the \dQuote{default} method is used, the default tolerance
+#' for the LOD on the x scale is the value of the smallest non-zero standard
+#' divided by 1000. Can be set to a numeric value to override this.
+#' @return A list containig the corresponding x and y values of the estimated
+#' limit of detection of a model used for calibration.
+#' @note
+#' * The default values for alpha and beta are the ones recommended by IUPAC.
+#' * The estimation of the LOD in terms of the analyte amount/concentration xD
+#' from the LOD in the signal domain SD is done by simply inverting the
+#' calibration function (i.e. assuming a known calibration function).
+#' * The calculation of a LOD from weighted calibration models requires a
+#' weights argument for the internally used \code{\link{predict.lm}}
+#' function, which is currently not supported in R.
+#' @seealso Examples for \code{\link{din32645}}
+#' @references Massart, L.M, Vandenginste, B.G.M., Buydens, L.M.C., De Jong,
+#' S., Lewi, P.J., Smeyers-Verbeke, J. (1997) Handbook of Chemometrics and
+#' Qualimetrics: Part A, Chapter 13.7.8
+#'
+#' J. Inczedy, T. Lengyel, and A.M. Ure (2002) International Union of Pure and
+#' Applied Chemistry Compendium of Analytical Nomenclature: Definitive Rules.
+#' Web edition.
+#'
+#' Currie, L. A. (1997) Nomenclature in evaluation of analytical methods
+#' including detection and quantification capabilities (IUPAC Recommendations
+#' 1995). Analytica Chimica Acta 391, 105 - 126.
+#' @importFrom stats optimize predict
+#' @examples
+#'
+#' m <- lm(y ~ x, data = din32645)
+#' lod(m)
+#'
+#' # The critical value (decision limit, German Nachweisgrenze) can be obtained
+#' # by using beta = 0.5:
+#' lod(m, alpha = 0.01, beta = 0.5)
+#'
+#' @export
lod <- function(object, ..., alpha = 0.05, beta = 0.05, method = "default", tol = "default")
{
UseMethod("lod")
}
+#' @export
lod.default <- function(object, ..., alpha = 0.05, beta = 0.05, method = "default", tol = "default")
{
stop("lod is only implemented for univariate lm objects.")
}
+#' @export
lod.lm <- function(object, ..., alpha = 0.05, beta = 0.05, method = "default", tol = "default")
{
if (length(object$weights) > 0) {

Contact - Imprint