From 20b9c584e7c43ecbb708459e531c24a1a4751e17 Mon Sep 17 00:00:00 2001
From: Johannes Ranke <jranke@uni-bremen.de>
Date: Sat, 9 Nov 2019 01:05:51 +0100
Subject: Add a lack-of-fit test

- Switch an example dataset in the test setup to a dataset with
replicates, adapt tests
- Skip the test for lrtest with an update specification as it does not
only fail when pkgdown generates static help pages, but also in testthat
---
 docs/news/index.html         |   1 +
 docs/reference/index.html    |   6 +
 docs/reference/loftest-1.png | Bin 0 -> 27354 bytes
 docs/reference/loftest-2.png | Bin 0 -> 27721 bytes
 docs/reference/loftest-3.png | Bin 0 -> 65409 bytes
 docs/reference/loftest-4.png | Bin 0 -> 64457 bytes
 docs/reference/loftest-5.png | Bin 0 -> 63057 bytes
 docs/reference/loftest.html  | 343 +++++++++++++++++++++++++++++++++++++++++++
 docs/sitemap.xml             |   3 +
 9 files changed, 353 insertions(+)
 create mode 100644 docs/reference/loftest-1.png
 create mode 100644 docs/reference/loftest-2.png
 create mode 100644 docs/reference/loftest-3.png
 create mode 100644 docs/reference/loftest-4.png
 create mode 100644 docs/reference/loftest-5.png
 create mode 100644 docs/reference/loftest.html

(limited to 'docs')

diff --git a/docs/news/index.html b/docs/news/index.html
index 48ba25e5..9aa2e18b 100644
--- a/docs/news/index.html
+++ b/docs/news/index.html
@@ -134,6 +134,7 @@
 <a href="#mkin-0-9-49-8-unreleased" class="anchor"></a>mkin 0.9.49.8 (unreleased)<small> Unreleased </small>
 </h1>
 <ul>
+<li><p>‘loftest’: Add a lack-of-fit test</p></li>
 <li><p>‘plot_res’, ‘plot_sep’ and ‘mkinerrplot’: Add the possibility to show standardized residuals and make it the default for fits with error models other than ‘const’</p></li>
 <li><p>‘lrtest.mkinfit’: Improve naming of the compared fits in the case of fixed parameters</p></li>
 <li><p>‘confint.mkinfit’: Make the quadratic approximation the default, as the likelihood profiling takes a lot of time, especially if the fit has more than three parameters</p></li>
diff --git a/docs/reference/index.html b/docs/reference/index.html
index 1c9975e0..0947ff94 100644
--- a/docs/reference/index.html
+++ b/docs/reference/index.html
@@ -214,6 +214,12 @@ more datasets</p></td>
         <td><p>Likelihood ratio test for mkinfit models</p></td>
       </tr><tr>
         
+        <td>
+          <p><code><a href="loftest.html">loftest()</a></code> </p>
+        </td>
+        <td><p>Lack-of-fit test for models fitted to data with replicates</p></td>
+      </tr><tr>
+        
         <td>
           <p><code><a href="mkinerrmin.html">mkinerrmin()</a></code> </p>
         </td>
diff --git a/docs/reference/loftest-1.png b/docs/reference/loftest-1.png
new file mode 100644
index 00000000..3d20f41e
Binary files /dev/null and b/docs/reference/loftest-1.png differ
diff --git a/docs/reference/loftest-2.png b/docs/reference/loftest-2.png
new file mode 100644
index 00000000..be8bf815
Binary files /dev/null and b/docs/reference/loftest-2.png differ
diff --git a/docs/reference/loftest-3.png b/docs/reference/loftest-3.png
new file mode 100644
index 00000000..c66c95f1
Binary files /dev/null and b/docs/reference/loftest-3.png differ
diff --git a/docs/reference/loftest-4.png b/docs/reference/loftest-4.png
new file mode 100644
index 00000000..da86d97f
Binary files /dev/null and b/docs/reference/loftest-4.png differ
diff --git a/docs/reference/loftest-5.png b/docs/reference/loftest-5.png
new file mode 100644
index 00000000..54b176e7
Binary files /dev/null and b/docs/reference/loftest-5.png differ
diff --git a/docs/reference/loftest.html b/docs/reference/loftest.html
new file mode 100644
index 00000000..757f0bbe
--- /dev/null
+++ b/docs/reference/loftest.html
@@ -0,0 +1,343 @@
+<!-- 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>Lack-of-fit test for models fitted to data with replicates — loftest • mkin</title>
+
+
+<!-- jquery -->
+<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
+<!-- Bootstrap -->
+
+<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha256-916EbMg70RQy9LHiGkXzG8hSg9EdNy97GazNG/aiY1w=" crossorigin="anonymous" />
+
+<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha256-U5ZEeKfGNOja007MMD3YBI0A3OSZOQbeG6z2f2Y0hu8=" crossorigin="anonymous"></script>
+
+<!-- Font Awesome icons -->
+<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.7.1/css/all.min.css" integrity="sha256-nAmazAk6vS34Xqo0BSrTb+abbtFlgsFK7NKSi6o7Y78=" crossorigin="anonymous" />
+<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.7.1/css/v4-shims.min.css" integrity="sha256-6qHlizsOWFskGlwVOKuns+D1nB6ssZrHQrNj1wGplHc=" crossorigin="anonymous" />
+
+<!-- clipboard.js -->
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js" integrity="sha256-FiZwavyI2V6+EXO1U+xzLG3IKldpiTFf3153ea9zikQ=" crossorigin="anonymous"></script>
+
+<!-- headroom.js -->
+<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.9.4/headroom.min.js" integrity="sha256-DJFC1kqIhelURkuza0AvYal5RxMtpzLjFhsnVIeuk+U=" crossorigin="anonymous"></script>
+<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.9.4/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="Lack-of-fit test for models fitted to data with replicates — loftest" />
+<meta property="og:description" content="This is a generic function with a method currently only defined for mkinfit
+objects. It fits an anova model to the data contained in the object and
+compares the likelihoods using the likelihood ratio test
+lrtest.default from the lmtest package." />
+<meta name="twitter:card" content="summary" />
+
+
+
+
+<!-- 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>
+    <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">mkin</a>
+        <span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Released version">0.9.49.8</span>
+      </span>
+    </div>
+
+    <div id="navbar" class="navbar-collapse collapse">
+      <ul class="nav navbar-nav">
+        <li>
+  <a href="../reference/index.html">Functions and data</a>
+</li>
+<li class="dropdown">
+  <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">
+    Articles
+     
+    <span class="caret"></span>
+  </a>
+  <ul class="dropdown-menu" role="menu">
+    <li>
+      <a href="../articles/mkin.html">Introduction to mkin</a>
+    </li>
+    <li>
+      <a href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a>
+    </li>
+    <li>
+      <a href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a>
+    </li>
+    <li>
+      <a href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a>
+    </li>
+    <li>
+      <a href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a>
+    </li>
+    <li>
+      <a href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a>
+    </li>
+    <li>
+      <a href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a>
+    </li>
+  </ul>
+</li>
+<li>
+  <a href="../news/index.html">News</a>
+</li>
+      </ul>
+      <ul class="nav navbar-nav navbar-right">
+        
+      </ul>
+      
+    </div><!--/.nav-collapse -->
+  </div><!--/.container -->
+</div><!--/.navbar -->
+
+      
+
+      </header>
+
+<div class="row">
+  <div class="col-md-9 contents">
+    <div class="page-header">
+    <h1>Lack-of-fit test for models fitted to data with replicates</h1>
+    
+    <div class="hidden name"><code>loftest.Rd</code></div>
+    </div>
+
+    <div class="ref-description">
+    <p>This is a generic function with a method currently only defined for mkinfit
+objects. It fits an anova model to the data contained in the object and
+compares the likelihoods using the likelihood ratio test
+<code><a href='https://rdrr.io/pkg/lmtest/man/lrtest.html'>lrtest.default</a></code> from the lmtest package.</p>
+    </div>
+
+    <pre class="usage"><span class='fu'>loftest</span>(<span class='no'>object</span>, <span class='no'>...</span>)
+
+<span class='co'># S3 method for mkinfit</span>
+<span class='fu'>loftest</span>(<span class='no'>object</span>, <span class='no'>...</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 model object with a defined loftest method</p></td>
+    </tr>
+    <tr>
+      <th>...</th>
+      <td><p>Not used</p></td>
+    </tr>
+    </table>
+
+    <h2 class="hasAnchor" id="details"><a class="anchor" href="#details"></a>Details</h2>
+
+    <p>The anova model is interpreted as the simplest form of an mkinfit model,
+assuming only a constant variance about the means, but not enforcing any
+structure of the means, so we have one model parameter for every mean
+of replicate samples.</p>
+    <h2 class="hasAnchor" id="see-also"><a class="anchor" href="#see-also"></a>See also</h2>
+
+    <div class='dont-index'><p>lrtest</p></div>
+
+    <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2>
+    <pre class="examples"><div class='input'><span class='co'># \dontrun{</span>
+<span class='no'>test_data</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/r/base/subset.html'>subset</a></span>(<span class='no'>synthetic_data_for_UBA_2014</span><span class='kw'>[[</span><span class='fl'>12</span>]]$<span class='no'>data</span>, <span class='no'>name</span> <span class='kw'>==</span> <span class='st'>"parent"</span>)
+<span class='no'>sfo_fit</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='mkinfit.html'>mkinfit</a></span>(<span class='st'>"SFO"</span>, <span class='no'>test_data</span>, <span class='kw'>quiet</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>)
+<span class='fu'><a href='plot.mkinfit.html'>plot_res</a></span>(<span class='no'>sfo_fit</span>) <span class='co'># We see a clear pattern in the residuals</span></div><div class='img'><img src='loftest-1.png' alt='' width='700' height='433' /></div><div class='input'><span class='fu'>loftest</span>(<span class='no'>sfo_fit</span>)  <span class='co'># We have a clear lack of fit</span></div><div class='output co'>#&gt; Likelihood ratio test
+#&gt; 
+#&gt; Model 1: ANOVA with error model const
+#&gt; Model 2: SFO with error model const
+#&gt;   #Df  LogLik Df  Chisq Pr(&gt;Chisq)    
+#&gt; 1  10 -40.710                         
+#&gt; 2   3 -63.954 -7 46.487  7.027e-08 ***
+#&gt; ---
+#&gt; Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1</div><div class='input'><span class='co'>#</span>
+<span class='co'># We try a different model (the one that was used to generate the data)</span>
+<span class='no'>dfop_fit</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='mkinfit.html'>mkinfit</a></span>(<span class='st'>"DFOP"</span>, <span class='no'>test_data</span>, <span class='kw'>quiet</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>)
+<span class='fu'><a href='plot.mkinfit.html'>plot_res</a></span>(<span class='no'>dfop_fit</span>) <span class='co'># We don't see systematic deviations, but heteroscedastic residuals</span></div><div class='img'><img src='loftest-2.png' alt='' width='700' height='433' /></div><div class='input'><span class='co'># therefore we should consider adapting the error model, although we have</span>
+<span class='fu'>loftest</span>(<span class='no'>dfop_fit</span>) <span class='co'># no lack of fit</span></div><div class='output co'>#&gt; Likelihood ratio test
+#&gt; 
+#&gt; Model 1: ANOVA with error model const
+#&gt; Model 2: DFOP with error model const
+#&gt;   #Df  LogLik Df Chisq Pr(&gt;Chisq)
+#&gt; 1  10 -40.710                    
+#&gt; 2   5 -42.453 -5 3.485     0.6257</div><div class='input'><span class='co'>#</span>
+<span class='co'># This is the anova model used internally for the comparison</span>
+<span class='no'>test_data_anova</span> <span class='kw'>&lt;-</span> <span class='no'>test_data</span>
+<span class='no'>test_data_anova</span>$<span class='no'>time</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/r/base/factor.html'>as.factor</a></span>(<span class='no'>test_data_anova</span>$<span class='no'>time</span>)
+<span class='no'>anova_fit</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/r/stats/lm.html'>lm</a></span>(<span class='no'>value</span> ~ <span class='no'>time</span>, <span class='kw'>data</span> <span class='kw'>=</span> <span class='no'>test_data_anova</span>)
+<span class='fu'><a href='https://rdrr.io/r/base/summary.html'>summary</a></span>(<span class='no'>anova_fit</span>)</div><div class='output co'>#&gt; 
+#&gt; Call:
+#&gt; lm(formula = value ~ time, data = test_data_anova)
+#&gt; 
+#&gt; Residuals:
+#&gt;     Min      1Q  Median      3Q     Max 
+#&gt; -6.1000 -0.5625  0.0000  0.5625  6.1000 
+#&gt; 
+#&gt; Coefficients:
+#&gt;             Estimate Std. Error t value Pr(&gt;|t|)    
+#&gt; (Intercept)  103.150      2.323  44.409 7.44e-12 ***
+#&gt; time1        -19.950      3.285  -6.073 0.000185 ***
+#&gt; time3        -50.800      3.285 -15.465 8.65e-08 ***
+#&gt; time7        -68.500      3.285 -20.854 6.28e-09 ***
+#&gt; time14       -79.750      3.285 -24.278 1.63e-09 ***
+#&gt; time28       -86.000      3.285 -26.181 8.35e-10 ***
+#&gt; time60       -94.900      3.285 -28.891 3.48e-10 ***
+#&gt; time90       -98.500      3.285 -29.986 2.49e-10 ***
+#&gt; time120     -100.450      3.285 -30.580 2.09e-10 ***
+#&gt; ---
+#&gt; Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+#&gt; 
+#&gt; Residual standard error: 3.285 on 9 degrees of freedom
+#&gt; Multiple R-squared:  0.9953,	Adjusted R-squared:  0.9912 
+#&gt; F-statistic: 240.5 on 8 and 9 DF,  p-value: 1.417e-09
+#&gt; </div><div class='input'><span class='fu'><a href='https://rdrr.io/r/stats/logLik.html'>logLik</a></span>(<span class='no'>anova_fit</span>) <span class='co'># We get the same likelihood and degrees of freedom</span></div><div class='output co'>#&gt; 'log Lik.' -40.71015 (df=10)</div><div class='input'><span class='co'>#</span>
+<span class='no'>test_data_2</span> <span class='kw'>&lt;-</span> <span class='no'>synthetic_data_for_UBA_2014</span><span class='kw'>[[</span><span class='fl'>12</span>]]$<span class='no'>data</span>
+<span class='no'>m_synth_SFO_lin</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='mkinmod.html'>mkinmod</a></span>(<span class='kw'>parent</span> <span class='kw'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/list.html'>list</a></span>(<span class='kw'>type</span> <span class='kw'>=</span> <span class='st'>"SFO"</span>, <span class='kw'>to</span> <span class='kw'>=</span> <span class='st'>"M1"</span>),
+  <span class='kw'>M1</span> <span class='kw'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/list.html'>list</a></span>(<span class='kw'>type</span> <span class='kw'>=</span> <span class='st'>"SFO"</span>, <span class='kw'>to</span> <span class='kw'>=</span> <span class='st'>"M2"</span>),
+  <span class='kw'>M2</span> <span class='kw'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/list.html'>list</a></span>(<span class='kw'>type</span> <span class='kw'>=</span> <span class='st'>"SFO"</span>), <span class='kw'>use_of_ff</span> <span class='kw'>=</span> <span class='st'>"max"</span>)</div><div class='output co'>#&gt; <span class='message'>Successfully compiled differential equation model from auto-generated C code.</span></div><div class='input'><span class='no'>sfo_lin_fit</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='mkinfit.html'>mkinfit</a></span>(<span class='no'>m_synth_SFO_lin</span>, <span class='no'>test_data_2</span>, <span class='kw'>quiet</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>)
+<span class='fu'><a href='plot.mkinfit.html'>plot_res</a></span>(<span class='no'>sfo_lin_fit</span>) <span class='co'># not a good model, we try parallel formation</span></div><div class='img'><img src='loftest-3.png' alt='' width='700' height='433' /></div><div class='input'><span class='fu'>loftest</span>(<span class='no'>sfo_lin_fit</span>)</div><div class='output co'>#&gt; Likelihood ratio test
+#&gt; 
+#&gt; Model 1: ANOVA with error model const
+#&gt; Model 2: m_synth_SFO_lin with error model const and fixed parameter(s) M1_0, M2_0
+#&gt;   #Df   LogLik  Df  Chisq Pr(&gt;Chisq)    
+#&gt; 1  28  -93.606                          
+#&gt; 2   7 -171.927 -21 156.64  &lt; 2.2e-16 ***
+#&gt; ---
+#&gt; Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1</div><div class='input'><span class='co'>#</span>
+<span class='no'>m_synth_SFO_par</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='mkinmod.html'>mkinmod</a></span>(<span class='kw'>parent</span> <span class='kw'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/list.html'>list</a></span>(<span class='kw'>type</span> <span class='kw'>=</span> <span class='st'>"SFO"</span>, <span class='kw'>to</span> <span class='kw'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/c.html'>c</a></span>(<span class='st'>"M1"</span>, <span class='st'>"M2"</span>)),
+  <span class='kw'>M1</span> <span class='kw'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/list.html'>list</a></span>(<span class='kw'>type</span> <span class='kw'>=</span> <span class='st'>"SFO"</span>),
+  <span class='kw'>M2</span> <span class='kw'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/list.html'>list</a></span>(<span class='kw'>type</span> <span class='kw'>=</span> <span class='st'>"SFO"</span>), <span class='kw'>use_of_ff</span> <span class='kw'>=</span> <span class='st'>"max"</span>)</div><div class='output co'>#&gt; <span class='message'>Successfully compiled differential equation model from auto-generated C code.</span></div><div class='input'><span class='no'>sfo_par_fit</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='mkinfit.html'>mkinfit</a></span>(<span class='no'>m_synth_SFO_par</span>, <span class='no'>test_data_2</span>, <span class='kw'>quiet</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>)
+<span class='fu'><a href='plot.mkinfit.html'>plot_res</a></span>(<span class='no'>sfo_par_fit</span>) <span class='co'># much better for metabolites</span></div><div class='img'><img src='loftest-4.png' alt='' width='700' height='433' /></div><div class='input'><span class='fu'>loftest</span>(<span class='no'>sfo_par_fit</span>)</div><div class='output co'>#&gt; Likelihood ratio test
+#&gt; 
+#&gt; Model 1: ANOVA with error model const
+#&gt; Model 2: m_synth_SFO_par with error model const and fixed parameter(s) M1_0, M2_0
+#&gt;   #Df   LogLik  Df  Chisq Pr(&gt;Chisq)    
+#&gt; 1  28  -93.606                          
+#&gt; 2   7 -156.331 -21 125.45  &lt; 2.2e-16 ***
+#&gt; ---
+#&gt; Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1</div><div class='input'><span class='co'>#</span>
+<span class='no'>m_synth_DFOP_par</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='mkinmod.html'>mkinmod</a></span>(<span class='kw'>parent</span> <span class='kw'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/list.html'>list</a></span>(<span class='kw'>type</span> <span class='kw'>=</span> <span class='st'>"DFOP"</span>, <span class='kw'>to</span> <span class='kw'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/c.html'>c</a></span>(<span class='st'>"M1"</span>, <span class='st'>"M2"</span>)),
+  <span class='kw'>M1</span> <span class='kw'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/list.html'>list</a></span>(<span class='kw'>type</span> <span class='kw'>=</span> <span class='st'>"SFO"</span>),
+  <span class='kw'>M2</span> <span class='kw'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/list.html'>list</a></span>(<span class='kw'>type</span> <span class='kw'>=</span> <span class='st'>"SFO"</span>), <span class='kw'>use_of_ff</span> <span class='kw'>=</span> <span class='st'>"max"</span>)</div><div class='output co'>#&gt; <span class='message'>Successfully compiled differential equation model from auto-generated C code.</span></div><div class='input'><span class='no'>dfop_par_fit</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='mkinfit.html'>mkinfit</a></span>(<span class='no'>m_synth_DFOP_par</span>, <span class='no'>test_data_2</span>, <span class='kw'>quiet</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>)
+<span class='fu'><a href='plot.mkinfit.html'>plot_res</a></span>(<span class='no'>dfop_par_fit</span>) <span class='co'># No visual lack of fit</span></div><div class='img'><img src='loftest-5.png' alt='' width='700' height='433' /></div><div class='input'><span class='fu'>loftest</span>(<span class='no'>dfop_par_fit</span>)  <span class='co'># no lack of fit found by the test</span></div><div class='output co'>#&gt; Likelihood ratio test
+#&gt; 
+#&gt; Model 1: ANOVA with error model const
+#&gt; Model 2: m_synth_DFOP_par with error model const and fixed parameter(s) M1_0, M2_0
+#&gt;   #Df   LogLik  Df  Chisq Pr(&gt;Chisq)
+#&gt; 1  28  -93.606                      
+#&gt; 2   9 -102.763 -19 18.313     0.5016</div><div class='input'><span class='co'>#</span>
+<span class='co'># The anova model used for comparison in the case of transformation products</span>
+<span class='no'>test_data_anova_2</span> <span class='kw'>&lt;-</span> <span class='no'>dfop_par_fit</span>$<span class='no'>data</span>
+<span class='no'>test_data_anova_2</span>$<span class='no'>variable</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/r/base/factor.html'>as.factor</a></span>(<span class='no'>test_data_anova_2</span>$<span class='no'>variable</span>)
+<span class='no'>test_data_anova_2</span>$<span class='no'>time</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/r/base/factor.html'>as.factor</a></span>(<span class='no'>test_data_anova_2</span>$<span class='no'>time</span>)
+<span class='no'>anova_fit_2</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/r/stats/lm.html'>lm</a></span>(<span class='no'>observed</span> ~ <span class='no'>time</span>:<span class='no'>variable</span> - <span class='fl'>1</span>, <span class='kw'>data</span> <span class='kw'>=</span> <span class='no'>test_data_anova_2</span>)
+<span class='fu'><a href='https://rdrr.io/r/base/summary.html'>summary</a></span>(<span class='no'>anova_fit_2</span>)</div><div class='output co'>#&gt; 
+#&gt; Call:
+#&gt; lm(formula = observed ~ time:variable - 1, data = test_data_anova_2)
+#&gt; 
+#&gt; Residuals:
+#&gt;     Min      1Q  Median      3Q     Max 
+#&gt; -6.1000 -0.5875  0.0000  0.5875  6.1000 
+#&gt; 
+#&gt; Coefficients: (2 not defined because of singularities)
+#&gt;                        Estimate Std. Error t value Pr(&gt;|t|)    
+#&gt; time0:variableparent    103.150      1.573  65.562  &lt; 2e-16 ***
+#&gt; time1:variableparent     83.200      1.573  52.882  &lt; 2e-16 ***
+#&gt; time3:variableparent     52.350      1.573  33.274  &lt; 2e-16 ***
+#&gt; time7:variableparent     34.650      1.573  22.024  &lt; 2e-16 ***
+#&gt; time14:variableparent    23.400      1.573  14.873 6.35e-14 ***
+#&gt; time28:variableparent    17.150      1.573  10.901 5.47e-11 ***
+#&gt; time60:variableparent     8.250      1.573   5.244 1.99e-05 ***
+#&gt; time90:variableparent     4.650      1.573   2.956 0.006717 ** 
+#&gt; time120:variableparent    2.700      1.573   1.716 0.098507 .  
+#&gt; time0:variableM1             NA         NA      NA       NA    
+#&gt; time1:variableM1         11.850      1.573   7.532 6.93e-08 ***
+#&gt; time3:variableM1         22.700      1.573  14.428 1.26e-13 ***
+#&gt; time7:variableM1         33.050      1.573  21.007  &lt; 2e-16 ***
+#&gt; time14:variableM1        31.250      1.573  19.863  &lt; 2e-16 ***
+#&gt; time28:variableM1        18.900      1.573  12.013 7.02e-12 ***
+#&gt; time60:variableM1         7.550      1.573   4.799 6.28e-05 ***
+#&gt; time90:variableM1         3.850      1.573   2.447 0.021772 *  
+#&gt; time120:variableM1        2.050      1.573   1.303 0.204454    
+#&gt; time0:variableM2             NA         NA      NA       NA    
+#&gt; time1:variableM2          6.700      1.573   4.259 0.000254 ***
+#&gt; time3:variableM2         16.750      1.573  10.646 8.93e-11 ***
+#&gt; time7:variableM2         25.800      1.573  16.399 6.89e-15 ***
+#&gt; time14:variableM2        28.600      1.573  18.178 6.35e-16 ***
+#&gt; time28:variableM2        25.400      1.573  16.144 9.85e-15 ***
+#&gt; time60:variableM2        21.600      1.573  13.729 3.81e-13 ***
+#&gt; time90:variableM2        17.800      1.573  11.314 2.51e-11 ***
+#&gt; time120:variableM2       14.100      1.573   8.962 2.79e-09 ***
+#&gt; ---
+#&gt; Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+#&gt; 
+#&gt; Residual standard error: 2.225 on 25 degrees of freedom
+#&gt; Multiple R-squared:  0.9979,	Adjusted R-squared:  0.9957 
+#&gt; F-statistic: 469.2 on 25 and 25 DF,  p-value: &lt; 2.2e-16
+#&gt; </div><div class='input'># }
+</div></pre>
+  </div>
+  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
+    <h2>Contents</h2>
+    <ul class="nav nav-pills nav-stacked">
+      <li><a href="#arguments">Arguments</a></li>
+      <li><a href="#details">Details</a></li>
+      <li><a href="#see-also">See also</a></li>
+      <li><a href="#examples">Examples</a></li>
+    </ul>
+
+  </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.4.1.</p>
+</div>
+
+      </footer>
+   </div>
+
+  
+
+
+  </body>
+</html>
+
+
diff --git a/docs/sitemap.xml b/docs/sitemap.xml
index 3a56fe49..66b776b2 100644
--- a/docs/sitemap.xml
+++ b/docs/sitemap.xml
@@ -66,6 +66,9 @@
   <url>
     <loc>https://pkgdown.jrwb.de/mkin/reference/ilr.html</loc>
   </url>
+  <url>
+    <loc>https://pkgdown.jrwb.de/mkin/reference/loftest.html</loc>
+  </url>
   <url>
     <loc>https://pkgdown.jrwb.de/mkin/reference/logLik.mkinfit.html</loc>
   </url>
-- 
cgit v1.2.1