1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/inverse.predict.lm.R
\name{inverse.predict}
\alias{inverse.predict}
\alias{inverse.predict.lm}
\alias{inverse.predict.rlm}
\alias{inverse.predict.default}
\title{Predict x from y for a linear calibration}
\usage{
inverse.predict(
object,
newdata,
...,
ws = "auto",
alpha = 0.05,
var.s = "auto"
)
}
\arguments{
\item{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}.}
\item{newdata}{A vector of observed y values for one sample.}
\item{\dots}{Placeholder for further arguments that might be needed by
future implementations.}
\item{ws}{The weight attributed to the sample. This argument is obligatory
if \code{object} has weights.}
\item{alpha}{The error tolerance level for the confidence interval to be
reported.}
\item{var.s}{The estimated variance of the sample measurements. The default
is to take the residual standard error from the calibration and to adjust it
using \code{ws}, if applicable. This means that \code{var.s} overrides
\code{ws}.}
}
\value{
A list containing the predicted x value, its standard error and a
confidence interval.
}
\description{
This function predicts x values using a univariate linear model that has
been generated for the purpose of calibrating a measurement method.
Prediction intervals are given at the specified confidence level. The
calculation method was taken from Massart et al. (1997). In particular,
Equations 8.26 and 8.28 were combined in order to yield a general treatment
of inverse prediction for univariate linear models, taking into account
weights that have been used to create the linear model, and at the same time
providing the possibility to specify a precision in sample measurements
differing from the precision in standard samples used for the calibration.
This is elaborated in the package vignette.
}
\details{
This is an implementation of Equation (8.28) in the Handbook of Chemometrics
and Qualimetrics, Part A, Massart et al (1997), page 200, validated with
Example 8 on the same page, extended as specified in the package vignette
}
\note{
The function was validated with examples 7 and 8 from Massart et al.
(1997). Note that the behaviour of inverse.predict changed with chemCal
version 0.2.1. Confidence intervals for x values obtained from calibrations
with replicate measurements did not take the variation about the means into
account. Please refer to the vignette for details.
}
\examples{
# This is example 7 from Chapter 8 in Massart et al. (1997)
m <- lm(y ~ x, data = massart97ex1)
inverse.predict(m, 15) # 6.1 +- 4.9
inverse.predict(m, 90) # 43.9 +- 4.9
inverse.predict(m, rep(90,5)) # 43.9 +- 3.2
# For reproducing the results for replicate standard measurements in example 8,
# we need to do the calibration on the means when using chemCal > 0.2
weights <- with(massart97ex3, {
yx <- split(y, x)
ybar <- sapply(yx, mean)
s <- round(sapply(yx, sd), digits = 2)
w <- round(1 / (s^2), digits = 3)
})
massart97ex3.means <- aggregate(y ~ x, massart97ex3, mean)
m3.means <- lm(y ~ x, w = weights, data = massart97ex3.means)
inverse.predict(m3.means, 15, ws = 1.67) # 5.9 +- 2.5
inverse.predict(m3.means, 90, ws = 0.145) # 44.1 +- 7.9
}
\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, p. 200
}
|