<!-- Generated by pkgdown: do not edit by hand -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Predict x from y for a linear calibration — inverse.predict • chemCal</title>
<!-- jquery -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
<!-- Bootstrap -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" integrity="sha256-bZLfwXAP04zRMK2BjiO8iu9pf4FbLqX6zitd+tIvLhE=" crossorigin="anonymous" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=" crossorigin="anonymous"></script>
<!-- bootstrap-toc -->
<link rel="stylesheet" href="../bootstrap-toc.css">
<script src="../bootstrap-toc.js"></script>
<!-- Font Awesome icons -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css" integrity="sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=" crossorigin="anonymous" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css" integrity="sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=" crossorigin="anonymous" />
<!-- clipboard.js -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js" integrity="sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=" crossorigin="anonymous"></script>
<!-- headroom.js -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js" integrity="sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script>
<!-- pkgdown -->
<link href="../pkgdown.css" rel="stylesheet">
<script src="../pkgdown.js"></script>
<meta property="og:title" content="Predict x from y for a linear calibration — inverse.predict" />
<meta property="og:description" content="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." />
<!-- mathjax -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js" integrity="sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js" integrity="sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=" crossorigin="anonymous"></script>
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body data-spy="scroll" data-target="#toc">
<div class="container template-reference-topic">
<header>
<div class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<span class="navbar-brand">
<a class="navbar-link" href="../index.html">chemCal</a>
<span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Released version">0.2.2</span>
</span>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li>
<a href="../index.html">
<span class="fas fa-home fa-lg"></span>
</a>
</li>
<li>
<a href="../articles/chemCal.html">Get started</a>
</li>
<li>
<a href="../reference/index.html">Reference</a>
</li>
<li>
<a href="../news/index.html">Changelog</a>
</li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li>
<a href="http://github.com/jranke/chemCal/">
<span class="fab fa-github fa-lg"></span>
</a>
</li>
</ul>
</div><!--/.nav-collapse -->
</div><!--/.container -->
</div><!--/.navbar -->
</header>
<div class="row">
<div class="col-md-9 contents">
<div class="page-header">
<h1>Predict x from y for a linear calibration</h1>
<div class="hidden name"><code>inverse.predict.Rd</code></div>
</div>
<div class="ref-description">
<p>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.</p>
</div>
<pre class="usage"><span class='fu'>inverse.predict</span><span class='op'>(</span><span class='va'>object</span>, <span class='va'>newdata</span>, <span class='va'>...</span>,
<span class='va'>ws</span>, alpha<span class='op'>=</span><span class='fl'>0.05</span>, var.s <span class='op'>=</span> <span class='st'>"auto"</span><span class='op'>)</span></pre>
<h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a>Arguments</h2>
<table class="ref-arguments">
<colgroup><col class="name" /><col class="desc" /></colgroup>
<tr>
<th>object</th>
<td><p>A univariate model object of class <code><a href='https://rdrr.io/r/stats/lm.html'>lm</a></code> or
<code><a href='https://rdrr.io/pkg/MASS/man/rlm.html'>rlm</a></code>
with model formula <code>y ~ x</code> or <code>y ~ x - 1</code>.</p></td>
</tr>
<tr>
<th>newdata</th>
<td><p>A vector of observed y values for one sample.</p></td>
</tr>
<tr>
<th>...</th>
<td><p>Placeholder for further arguments that might be needed by
future implementations.</p></td>
</tr>
<tr>
<th>ws</th>
<td><p>The weight attributed to the sample. This argument is obligatory
if <code>object</code> has weights.</p></td>
</tr>
<tr>
<th>alpha</th>
<td><p>The error tolerance level for the confidence interval to be reported.</p></td>
</tr>
<tr>
<th>var.s</th>
<td><p>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</code>, if applicable. This means that <code>var.s</code>
overrides <code>ws</code>.</p></td>
</tr>
</table>
<h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
<p>A list containing the predicted x value, its standard error and a
confidence interval.</p>
<h2 class="hasAnchor" id="note"><a class="anchor" href="#note"></a>Note</h2>
<p>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.</p>
<h2 class="hasAnchor" id="references"><a class="anchor" href="#references"></a>References</h2>
<p>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</p>
<h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2>
<pre class="examples"><div class='input'><span class='co'># This is example 7 from Chapter 8 in Massart et al. (1997)</span>
<span class='va'>m</span> <span class='op'><-</span> <span class='fu'><a href='https://rdrr.io/r/stats/lm.html'>lm</a></span><span class='op'>(</span><span class='va'>y</span> <span class='op'>~</span> <span class='va'>x</span>, data <span class='op'>=</span> <span class='va'>massart97ex1</span><span class='op'>)</span>
<span class='fu'>inverse.predict</span><span class='op'>(</span><span class='va'>m</span>, <span class='fl'>15</span><span class='op'>)</span> <span class='co'># 6.1 +- 4.9</span>
</div><div class='output co'>#> $Prediction
#> [1] 6.09381
#>
#> $`Standard Error`
#> [1] 1.767278
#>
#> $Confidence
#> [1] 4.906751
#>
#> $`Confidence Limits`
#> [1] 1.187059 11.000561
#> </div><div class='input'><span class='fu'>inverse.predict</span><span class='op'>(</span><span class='va'>m</span>, <span class='fl'>90</span><span class='op'>)</span> <span class='co'># 43.9 +- 4.9</span>
</div><div class='output co'>#> $Prediction
#> [1] 43.93983
#>
#> $`Standard Error`
#> [1] 1.767747
#>
#> $Confidence
#> [1] 4.908053
#>
#> $`Confidence Limits`
#> [1] 39.03178 48.84788
#> </div><div class='input'><span class='fu'>inverse.predict</span><span class='op'>(</span><span class='va'>m</span>, <span class='fu'><a href='https://rdrr.io/r/base/rep.html'>rep</a></span><span class='op'>(</span><span class='fl'>90</span>,<span class='fl'>5</span><span class='op'>)</span><span class='op'>)</span> <span class='co'># 43.9 +- 3.2</span>
</div><div class='output co'>#> $Prediction
#> [1] 43.93983
#>
#> $`Standard Error`
#> [1] 1.141204
#>
#> $Confidence
#> [1] 3.168489
#>
#> $`Confidence Limits`
#> [1] 40.77134 47.10832
#> </div><div class='input'>
<span class='co'># For reproducing the results for replicate standard measurements in example 8,</span>
<span class='co'># we need to do the calibration on the means when using chemCal > 0.2</span>
<span class='va'>weights</span> <span class='op'><-</span> <span class='fu'><a href='https://rdrr.io/r/base/with.html'>with</a></span><span class='op'>(</span><span class='va'>massart97ex3</span>, <span class='op'>{</span>
<span class='va'>yx</span> <span class='op'><-</span> <span class='fu'><a href='https://rdrr.io/r/base/split.html'>split</a></span><span class='op'>(</span><span class='va'>y</span>, <span class='va'>x</span><span class='op'>)</span>
<span class='va'>ybar</span> <span class='op'><-</span> <span class='fu'><a href='https://rdrr.io/r/base/lapply.html'>sapply</a></span><span class='op'>(</span><span class='va'>yx</span>, <span class='va'>mean</span><span class='op'>)</span>
<span class='va'>s</span> <span class='op'><-</span> <span class='fu'><a href='https://rdrr.io/r/base/Round.html'>round</a></span><span class='op'>(</span><span class='fu'><a href='https://rdrr.io/r/base/lapply.html'>sapply</a></span><span class='op'>(</span><span class='va'>yx</span>, <span class='va'>sd</span><span class='op'>)</span>, digits <span class='op'>=</span> <span class='fl'>2</span><span class='op'>)</span>
<span class='va'>w</span> <span class='op'><-</span> <span class='fu'><a href='https://rdrr.io/r/base/Round.html'>round</a></span><span class='op'>(</span><span class='fl'>1</span> <span class='op'>/</span> <span class='op'>(</span><span class='va'>s</span><span class='op'>^</span><span class='fl'>2</span><span class='op'>)</span>, digits <span class='op'>=</span> <span class='fl'>3</span><span class='op'>)</span>
<span class='op'>}</span><span class='op'>)</span>
<span class='va'>massart97ex3.means</span> <span class='op'><-</span> <span class='fu'><a href='https://rdrr.io/r/stats/aggregate.html'>aggregate</a></span><span class='op'>(</span><span class='va'>y</span> <span class='op'>~</span> <span class='va'>x</span>, <span class='va'>massart97ex3</span>, <span class='va'>mean</span><span class='op'>)</span>
<span class='va'>m3.means</span> <span class='op'><-</span> <span class='fu'><a href='https://rdrr.io/r/stats/lm.html'>lm</a></span><span class='op'>(</span><span class='va'>y</span> <span class='op'>~</span> <span class='va'>x</span>, w <span class='op'>=</span> <span class='va'>weights</span>, data <span class='op'>=</span> <span class='va'>massart97ex3.means</span><span class='op'>)</span>
<span class='fu'>inverse.predict</span><span class='op'>(</span><span class='va'>m3.means</span>, <span class='fl'>15</span>, ws <span class='op'>=</span> <span class='fl'>1.67</span><span class='op'>)</span> <span class='co'># 5.9 +- 2.5</span>
</div><div class='output co'>#> $Prediction
#> [1] 5.865367
#>
#> $`Standard Error`
#> [1] 0.8926109
#>
#> $Confidence
#> [1] 2.478285
#>
#> $`Confidence Limits`
#> [1] 3.387082 8.343652
#> </div><div class='input'><span class='fu'>inverse.predict</span><span class='op'>(</span><span class='va'>m3.means</span>, <span class='fl'>90</span>, ws <span class='op'>=</span> <span class='fl'>0.145</span><span class='op'>)</span> <span class='co'># 44.1 +- 7.9</span>
</div><div class='output co'>#> $Prediction
#> [1] 44.06025
#>
#> $`Standard Error`
#> [1] 2.829162
#>
#> $Confidence
#> [1] 7.855012
#>
#> $`Confidence Limits`
#> [1] 36.20523 51.91526
#> </div><div class='input'>
</div></pre>
</div>
<div class="col-md-3 hidden-xs hidden-sm" id="pkgdown-sidebar">
<nav id="toc" data-toggle="toc" class="sticky-top">
<h2 data-toc-skip>Contents</h2>
</nav>
</div>
</div>
<footer>
<div class="copyright">
<p>Developed by Johannes Ranke.</p>
</div>
<div class="pkgdown">
<p>Site built with <a href="https://pkgdown.r-lib.org/">pkgdown</a> 1.6.1.</p>
</div>
</footer>
</div>
</body>
</html>