CINXE.COM

Calibration Functions for Analytical Chemistry • chemCal

<!DOCTYPE html> <!-- Generated by pkgdown: do not edit by hand --><html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <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>Calibration Functions for Analytical Chemistry • 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="Calibration Functions for Analytical Chemistry"> <meta property="og:description" content="Simple functions for plotting linear calibration functions and estimating standard errors for measurements according to the Handbook of Chemometrics and Qualimetrics: Part A by Massart et al. (1997) There are also functions estimating the limit of detection (LOD) and limit of quantification (LOQ). The functions work on model objects from - optionally weighted - linear regression (lm) or robust linear regression (rlm from the MASS package)."> <!-- 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-home"> <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="">0.2.3.9000</span> </span> </div> <div id="navbar" class="navbar-collapse collapse"> <ul class="nav navbar-nav"> <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="https://github.com/jranke/chemCal/" class="external-link"> <span class="fab fa-github fa-lg"></span> </a> </li> </ul> </div> <!--/.nav-collapse --> </div> <!--/.container --> </div> <!--/.navbar --> </header><div class="row"> <div class="contents col-md-9"> <div class="section level1"> <div class="page-header"><h1 id="chemcal---calibration-functions-for-analytical-chemistry">chemCal - Calibration functions for analytical chemistry<a class="anchor" aria-label="anchor" href="#chemcal---calibration-functions-for-analytical-chemistry"></a> </h1></div> <!-- badges: start --> <div class="section level2"> <h2 id="overview">Overview<a class="anchor" aria-label="anchor" href="#overview"></a> </h2> <p>chemCal is an R package providing some basic functions for conveniently working with linear calibration curves with one explanatory variable.</p> </div> <div class="section level2"> <h2 id="installation">Installation<a class="anchor" aria-label="anchor" href="#installation"></a> </h2> <p>From within <a href="https://www.r-project.org/" class="external-link">R</a>, get the official chemCal release using</p> <div class="sourceCode" id="cb1"><pre class="downlit sourceCode r"> <code class="sourceCode R"><span class="fu"><a href="https://rdrr.io/r/utils/install.packages.html" class="external-link">install.packages</a></span><span class="op">(</span><span class="st">"chemCal"</span><span class="op">)</span></code></pre></div> </div> <div class="section level2"> <h2 id="usage">Usage<a class="anchor" aria-label="anchor" href="#usage"></a> </h2> <p>chemCal works with univariate linear models of class <code>lm</code>. Working with one of the datasets coming with chemCal, we can produce a calibration plot using the <code>calplot</code> function:</p> <div class="section level3"> <h3 id="plotting-a-calibration">Plotting a calibration<a class="anchor" aria-label="anchor" href="#plotting-a-calibration"></a> </h3> <div class="sourceCode" id="cb2"><pre class="downlit sourceCode r"> <code class="sourceCode R"><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va"><a href="https://pkgdown.jrwb.de/chemCal/" class="external-link">chemCal</a></span><span class="op">)</span> <span class="va">m0</span> <span class="op">&lt;-</span> <span class="fu"><a href="https://rdrr.io/r/stats/lm.html" class="external-link">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">massart97ex3</span><span class="op">)</span> <span class="fu"><a href="reference/calplot.html">calplot</a></span><span class="op">(</span><span class="va">m0</span><span class="op">)</span></code></pre></div> <p><img src="reference/figures/README-calplot-1.png"><!-- --></p> </div> <div class="section level3"> <h3 id="lod-and-loq">LOD and LOQ<a class="anchor" aria-label="anchor" href="#lod-and-loq"></a> </h3> <p>If you use unweighted regression, as in the above example, we can calculate a Limit Of Detection (LOD) from the calibration data.</p> <div class="sourceCode" id="cb3"><pre class="downlit sourceCode r"> <code class="sourceCode R"><span class="fu"><a href="reference/lod.html">lod</a></span><span class="op">(</span><span class="va">m0</span><span class="op">)</span> <span class="co">#&gt; $x</span> <span class="co">#&gt; [1] 5.407085</span> <span class="co">#&gt; </span> <span class="co">#&gt; $y</span> <span class="co">#&gt; [1] 13.63911</span></code></pre></div> <p>This is the minimum detectable value (German: Erfassungsgrenze), i.e. the value where the probability that the signal is not detected although the analyte is present is below a specified error tolerance beta (default is 0.05 following the IUPAC recommendation).</p> <p>You can also calculate the decision limit (German: Nachweisgrenze), i.e. the value that is significantly different from the blank signal with an error tolerance alpha (default is 0.05, again following IUPAC recommendations) by setting beta to 0.5.</p> <div class="sourceCode" id="cb4"><pre class="downlit sourceCode r"> <code class="sourceCode R"><span class="fu"><a href="reference/lod.html">lod</a></span><span class="op">(</span><span class="va">m0</span>, beta <span class="op">=</span> <span class="fl">0.5</span><span class="op">)</span> <span class="co">#&gt; $x</span> <span class="co">#&gt; [1] 2.720388</span> <span class="co">#&gt; </span> <span class="co">#&gt; $y</span> <span class="co">#&gt; [1] 8.314841</span></code></pre></div> <p>Furthermore, you can calculate the Limit Of Quantification (LOQ), being defined as the value where the relative error of the quantification given the calibration model reaches a prespecified value (default is 1/3).</p> <div class="sourceCode" id="cb5"><pre class="downlit sourceCode r"> <code class="sourceCode R"><span class="fu"><a href="reference/loq.html">loq</a></span><span class="op">(</span><span class="va">m0</span><span class="op">)</span> <span class="co">#&gt; $x</span> <span class="co">#&gt; [1] 9.627349</span> <span class="co">#&gt; </span> <span class="co">#&gt; $y</span> <span class="co">#&gt; [1] 22.00246</span></code></pre></div> </div> <div class="section level3"> <h3 id="confidence-intervals-for-measured-values">Confidence intervals for measured values<a class="anchor" aria-label="anchor" href="#confidence-intervals-for-measured-values"></a> </h3> <p>Finally, you can get a confidence interval for the values measured using the calibration curve, i.e. for the inverse predictions using the function <code>inverse.predict</code>.</p> <div class="sourceCode" id="cb6"><pre class="downlit sourceCode r"> <code class="sourceCode R"><span class="fu"><a href="reference/inverse.predict.html">inverse.predict</a></span><span class="op">(</span><span class="va">m0</span>, <span class="fl">90</span><span class="op">)</span> <span class="co">#&gt; $Prediction</span> <span class="co">#&gt; [1] 43.93983</span> <span class="co">#&gt; </span> <span class="co">#&gt; $`Standard Error`</span> <span class="co">#&gt; [1] 1.576985</span> <span class="co">#&gt; </span> <span class="co">#&gt; $Confidence</span> <span class="co">#&gt; [1] 3.230307</span> <span class="co">#&gt; </span> <span class="co">#&gt; $`Confidence Limits`</span> <span class="co">#&gt; [1] 40.70952 47.17014</span></code></pre></div> <p>If you have replicate measurements of the same sample, you can also give a vector of numbers.</p> <div class="sourceCode" id="cb7"><pre class="downlit sourceCode r"> <code class="sourceCode R"><span class="fu"><a href="reference/inverse.predict.html">inverse.predict</a></span><span class="op">(</span><span class="va">m0</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">91</span>, <span class="fl">89</span>, <span class="fl">87</span>, <span class="fl">93</span>, <span class="fl">90</span><span class="op">)</span><span class="op">)</span> <span class="co">#&gt; $Prediction</span> <span class="co">#&gt; [1] 43.93983</span> <span class="co">#&gt; </span> <span class="co">#&gt; $`Standard Error`</span> <span class="co">#&gt; [1] 0.796884</span> <span class="co">#&gt; </span> <span class="co">#&gt; $Confidence</span> <span class="co">#&gt; [1] 1.632343</span> <span class="co">#&gt; </span> <span class="co">#&gt; $`Confidence Limits`</span> <span class="co">#&gt; [1] 42.30749 45.57217</span></code></pre></div> </div> </div> <div class="section level2"> <h2 id="reference">Reference<a class="anchor" aria-label="anchor" href="#reference"></a> </h2> <p>You can use the R help system to view documentation, or you can have a look at the <a href="https://pkgdown.jrwb.de/chemCal/" class="external-link">online documentation</a>.</p> </div> </div> </div> <div class="col-md-3 hidden-xs hidden-sm" id="pkgdown-sidebar"> <div class="links"> <h2 data-toc-skip>Links</h2> <ul class="list-unstyled"> <li><a href="https://cloud.r-project.org/package=chemCal" class="external-link">View on CRAN</a></li> <li><a href="https://github.com/jranke/chemCal/" class="external-link">Browse source code</a></li> <li><a href="https://github.com/jranke/chemCal/issues" class="external-link">Report a bug</a></li> </ul> </div> <div class="license"> <h2 data-toc-skip>License</h2> <ul class="list-unstyled"> <li>GPL (&gt;= 2)</li> </ul> </div> <div class="citation"> <h2 data-toc-skip>Citation</h2> <ul class="list-unstyled"> <li><a href="authors.html#citation">Citing chemCal</a></li> </ul> </div> <div class="developers"> <h2 data-toc-skip>Developers</h2> <ul class="list-unstyled"> <li>Johannes Ranke <br><small class="roles"> Author, maintainer, copyright holder </small> <a href="https://orcid.org/0000-0003-4371-6538" target="orcid.widget" aria-label="ORCID" class="external-link"><span class="fab fa-orcid orcid" aria-hidden="true"></span></a> </li> </ul> </div> <div class="dev-status"> <h2 data-toc-skip>Dev status</h2> <ul class="list-unstyled"> <li><a href="https://cran.r-project.org/package=chemCal" class="external-link"><img src="https://www.r-pkg.org/badges/version/chemCal"></a></li> <li><a href="https://app.travis-ci.com/github/jranke/chemCal" class="external-link"><img src="https://travis-ci.com/jranke/chemCal.svg?branch=master" alt="Build Status"></a></li> <li><a href="https://codecov.io/github/jranke/chemCal" class="external-link"><img src="https://codecov.io/github/jranke/chemCal/branch/master/graphs/badge.svg" alt="codecov"></a></li> </ul> </div> </div> </div> <footer><div class="copyright"> <p></p> <p>Developed by Johannes Ranke.</p> </div> <div class="pkgdown"> <p></p> <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.0.2.</p> </div> </footer> </div> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10