diff options
author | ranke <ranke@5fad18fb-23f0-0310-ab10-e59a3bee62b4> | 2007-10-01 19:44:04 +0000 |
---|---|---|
committer | ranke <ranke@5fad18fb-23f0-0310-ab10-e59a3bee62b4> | 2007-10-01 19:44:04 +0000 |
commit | 14a5af60a36071f6a9b4471fdf183fd91e89e1cd (patch) | |
tree | 8c845109c3b3e7663b903f3a9d06f7094a4438d8 /trunk/R/loq.R | |
parent | 3dec3886b58f73427409d3ef9427c8440420cbc0 (diff) |
Moved everything into the trunk directory, in order to enable branching
git-svn-id: http://kriemhild.uft.uni-bremen.de/svn/chemCal@22 5fad18fb-23f0-0310-ab10-e59a3bee62b4
Diffstat (limited to 'trunk/R/loq.R')
-rw-r--r-- | trunk/R/loq.R | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/trunk/R/loq.R b/trunk/R/loq.R new file mode 100644 index 0000000..5776096 --- /dev/null +++ b/trunk/R/loq.R @@ -0,0 +1,40 @@ +loq <- function(object, ..., alpha = 0.05, k = 3, n = 1, w.loq = "auto", + var.loq = "auto") +{ + UseMethod("loq") +} + +loq.default <- function(object, ..., alpha = 0.05, k = 3, n = 1, w.loq = "auto", + var.loq = "auto") +{ + stop("loq is only implemented for univariate lm objects.") +} + +loq.lm <- function(object, ..., alpha = 0.05, k = 3, n = 1, w.loq = "auto", + var.loq = "auto") +{ + if (length(object$weights) > 0 && var.loq == "auto" && w.loq == "auto") { + stop(paste("If you are using a model from weighted regression,", + "you need to specify a reasonable approximation for the", + "weight (w.loq) or the variance (var.loq) at the", + "limit of quantification")) + } + xname <- names(object$model)[[2]] + yname <- names(object$model)[[1]] + f <- function(x) { + newdata <- data.frame(x = x) + names(newdata) <- xname + y <- predict(object, newdata) + p <- inverse.predict(object, rep(y, n), ws = w.loq, + var.s = var.loq, alpha = alpha) + (p[["Prediction"]] - k * p[["Confidence"]])^2 + } + tmp <- optimize(f,interval=c(0,max(object$model[[2]]))) + loq.x <- tmp$minimum + newdata <- data.frame(x = loq.x) + names(newdata) <- xname + loq.y <- predict(object, newdata) + loq <- list(loq.x, loq.y) + names(loq) <- c(xname, yname) + return(loq) +} |