From 280d36230052de4f94e384648c1283031fbc9840 Mon Sep 17 00:00:00 2001 From: Johannes Ranke Date: Tue, 17 Jul 2018 17:29:14 +0200 Subject: Fix inverse predictions for replicate measurements For details, see NEWS.md --- docs/reference/massart97ex3.html | 63 +++++++++++++++++++++++----------------- 1 file changed, 36 insertions(+), 27 deletions(-) (limited to 'docs/reference/massart97ex3.html') diff --git a/docs/reference/massart97ex3.html b/docs/reference/massart97ex3.html index 434fc7b..e9fa06a 100644 --- a/docs/reference/massart97ex3.html +++ b/docs/reference/massart97ex3.html @@ -61,17 +61,26 @@ chemCal - 0.1.37.9001 + 0.2.1 -
data(massart97ex3)
+
massart97ex3

Format

@@ -115,18 +124,21 @@

Examples

-
data(massart97ex3) -attach(massart97ex3)
#> The following objects are masked from massart97ex3 (pos = 3): -#> -#> x, y
yx <- split(y, x) -ybar <- sapply(yx, mean) -s <- round(sapply(yx, sd), digits = 2) -w <- round(1 / (s^2), digits = 3) -weights <- w[factor(x)] -m <- lm(y ~ x, w = weights) -calplot(m)
#> Warning: Assuming constant prediction variance even though model fit is weighted
+
# 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) + # The following concords with the book p. 200 -inverse.predict(m, 15, ws = 1.67) # 5.9 +- 2.5
#> $Prediction +inverse.predict(m3.means, 15, ws = 1.67) # 5.9 +- 2.5
#> $Prediction #> [1] 5.865367 #> #> $`Standard Error` @@ -137,7 +149,7 @@ #> #> $`Confidence Limits` #> [1] 3.387082 8.343652 -#>
inverse.predict(m, 90, ws = 0.145) # 44.1 +- 7.9
#> $Prediction +#>
inverse.predict(m3.means, 90, ws = 0.145) # 44.1 +- 7.9
#> $Prediction #> [1] 44.06025 #> #> $`Standard Error` @@ -151,33 +163,30 @@ #>
# The LOD is only calculated for models from unweighted regression # with this version of chemCal -m0 <- lm(y ~ x) -lod(m0)
#> $x +m0 <- lm(y ~ x, data = massart97ex3) +lod(m0)
#> $x #> [1] 5.407085 #> #> $y -#> 1 -#> 13.63911 +#> [1] 13.63911 #>
# Limit of quantification from unweighted regression -loq(m0)
#> $x -#> [1] 13.97764 +loq(m0)
#> $x +#> [1] 9.627349 #> #> $y -#> 1 -#> 30.6235 +#> [1] 22.00246 #>
# For calculating the limit of quantification from a model from weighted # regression, we need to supply weights, internally used for inverse.predict # If we are not using a variance function, we can use the weight from # the above example as a first approximation (x = 15 is close to our # loq approx 14 from above). -loq(m, w.loq = 1.67)
#> $x +loq(m3.means, w.loq = 1.67)
#> $x #> [1] 7.346195 #> #> $y -#> 1 -#> 17.90777 +#> [1] 17.90777 #>
# The weight for the loq should therefore be derived at x = 7.3 instead # of 15, but the graphical procedure of Massart (p. 201) to derive the # variances on which the weights are based is quite inaccurate anyway. -- cgit v1.2.1