aboutsummaryrefslogtreecommitdiff
path: root/branches/0.1/chemCal/R/loq.R
diff options
context:
space:
mode:
authorranke <ranke@5fad18fb-23f0-0310-ab10-e59a3bee62b4>2007-10-01 19:49:20 +0000
committerranke <ranke@5fad18fb-23f0-0310-ab10-e59a3bee62b4>2007-10-01 19:49:20 +0000
commit8e511e8c4bb9b6077b667aea808091774b1b84a6 (patch)
tree66d9bec143f31bf227c9810391c059ff1fc3fd81 /branches/0.1/chemCal/R/loq.R
parent6865f34bfe02ceae7027fcb0bc7d074d84369cf1 (diff)
Imported revision 18, because this was last released on CRAN
with version number 0.1-18 git-svn-id: http://kriemhild.uft.uni-bremen.de/svn/chemCal@24 5fad18fb-23f0-0310-ab10-e59a3bee62b4
Diffstat (limited to 'branches/0.1/chemCal/R/loq.R')
-rw-r--r--branches/0.1/chemCal/R/loq.R40
1 files changed, 40 insertions, 0 deletions
diff --git a/branches/0.1/chemCal/R/loq.R b/branches/0.1/chemCal/R/loq.R
new file mode 100644
index 0000000..5776096
--- /dev/null
+++ b/branches/0.1/chemCal/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)
+}

Contact - Imprint