diff options
| -rw-r--r-- | NAMESPACE | 2 | ||||
| -rw-r--r-- | NEWS.md | 2 | ||||
| -rw-r--r-- | R/nlme.mmkin.R | 9 | ||||
| -rw-r--r-- | R/plot.nlme.mmkin.R | 103 | ||||
| -rw-r--r-- | _pkgdown.yml | 5 | ||||
| -rw-r--r-- | check.log | 102 | ||||
| -rw-r--r-- | docs/news/index.html | 1 | ||||
| -rw-r--r-- | docs/reference/index.html | 23 | ||||
| -rw-r--r-- | docs/reference/nlme.html | 32 | ||||
| -rw-r--r-- | docs/reference/nlme.mmkin.html | 301 | ||||
| -rw-r--r-- | docs/reference/plot.nlme.mmkin-1.png | bin | 0 -> 32297 bytes | |||
| -rw-r--r-- | docs/reference/plot.nlme.mmkin.html | 252 | ||||
| -rw-r--r-- | docs/sitemap.xml | 6 | ||||
| -rw-r--r-- | man/nlme.Rd | 2 | ||||
| -rw-r--r-- | man/nlme.mmkin.Rd | 11 | ||||
| -rw-r--r-- | man/plot.nlme.mmkin.Rd | 67 | 
16 files changed, 800 insertions, 118 deletions
| @@ -18,6 +18,7 @@ S3method(parms,mkinfit)  S3method(plot,mkinfit)  S3method(plot,mmkin)  S3method(plot,nafta) +S3method(plot,nlme.mmkin)  S3method(print,mkinds)  S3method(print,mkinmod)  S3method(print,nafta) @@ -87,6 +88,7 @@ importFrom(stats,AIC)  importFrom(stats,BIC)  importFrom(stats,aggregate)  importFrom(stats,coef) +importFrom(stats,coefficients)  importFrom(stats,cov2cor)  importFrom(stats,dist)  importFrom(stats,dnorm) @@ -1,5 +1,7 @@  # mkin 0.9.49.10 (unreleased) +- 'nlme.mmkin': An nlme method for mmkin row objects and an associated class with plot method +  - 'mean_degparms, nlme_data, nlme_function': Three new functions to facilitate building nlme models from mmkin row objects  - 'endpoints': Don't return the SFORB list component if it's empty. This reduces distraction and complies with the documentation diff --git a/R/nlme.mmkin.R b/R/nlme.mmkin.R index 784ba609..2ee46f33 100644 --- a/R/nlme.mmkin.R +++ b/R/nlme.mmkin.R @@ -22,8 +22,8 @@  #' @param control passed to nlme  #' @param verbose passed to nlme  #' @importFrom stats na.fail -#' @return Upon success, a fitted nlme.mmkin object, which is -#'   an nlme object with additional elements +#' @return Upon success, a fitted nlme.mmkin object, which is an nlme object +#'   with additional elements  #' @export  #' @seealso \code{\link{nlme_function}}  #' @examples @@ -54,7 +54,7 @@ nlme.mmkin <- function(model, data = sys.frame(sys.parent()),    }    deg_func <- nlme_function(model) -  assign("deg_func", deg_func, parent.frame()) +  assign("deg_func", deg_func, globalenv())    # specify the model formula    this_model_text <- paste0("value ~ deg_func(", @@ -79,7 +79,8 @@ nlme.mmkin <- function(model, data = sys.frame(sys.parent()),    }    val <- do.call("nlme.formula", thisCall) -  return(val) +  val$mmkin_orig <- model    class(val) <- c("nlme.mmkin", "nlme", "lme") +  return(val)  } diff --git a/R/plot.nlme.mmkin.R b/R/plot.nlme.mmkin.R new file mode 100644 index 00000000..ef6d100a --- /dev/null +++ b/R/plot.nlme.mmkin.R @@ -0,0 +1,103 @@ +#' Plot a fitted nonlinear mixed model obtained via an mmkin row object +#' +#' @param x An object of class \code{\link{nlme.mmkin}} +#' @param i A numeric index to select datasets for which to plot the nlme fit, +#'   in case plots get too large +#' @param main The main title placed on the outer margin of the plot. +#' @param legends An index for the fits for which legends should be shown. +#' @param resplot Should the residuals plotted against time, using +#'   \code{\link{mkinresplot}}, or as squared residuals against predicted +#'   values, with the error model, using \code{\link{mkinerrplot}}. +#' @param standardized Should the residuals be standardized? This option +#'   is passed to \code{\link{mkinresplot}}, it only takes effect if +#'   `resplot = "time"`. +#' @param cex Passed to the plot functions and \code{\link{mtext}}. +#' @param rel.height.middle The relative height of the middle plot, if more +#'   than two rows of plots are shown. +#' @param ymax Maximum y axis value for \code{\link{plot.mkinfit}}. +#' @param \dots Further arguments passed to \code{\link{plot.mkinfit}} and +#'   \code{\link{mkinresplot}}. +#' @importFrom stats coefficients +#' @return The function is called for its side effect. +#' @author Johannes Ranke +#' @examples +#' ds <- lapply(experimental_data_for_UBA_2019[6:10], +#'  function(x) subset(x$data[c("name", "time", "value")], name == "parent")) +#' f <- mmkin("SFO", ds, quiet = TRUE, cores = 1) +#' #plot(f) # too many panels for pkgdown +#' library(nlme) +#' f_nlme <- nlme(f) +#' +#' #plot(f_nlme) # too many panels for pkgdown +#' plot(f_nlme, 1:2) +#' @export +plot.nlme.mmkin <- function(x, i = 1:ncol(x$mmkin_orig), +  main = "auto", legends = 1, +  resplot = c("time", "errmod"), +  standardized = FALSE, +  cex = 0.7, rel.height.middle = 0.9, +  ymax = "auto", ...) +{ + +  degparms_optim_nlme <- coefficients(x) +  degparms_optim_names <- names(degparms_optim_nlme) + +  odeini_optim_names <- grep("_0$", degparms_optim_names, value = TRUE) +  odeparms_optim_names <- setdiff(degparms_optim_names, odeini_optim_names) + +  fit_1 <- x$mmkin_orig[[1]] + +  mkinfit_call <- as.list(fit_1$call)[-1] +  mkinfit_call[["mkinmod"]] <- fit_1$mkinmod + +  ds <- lapply(x$mmkin_orig, function(x) { +    data.frame(name = x$data$variable, +      time = x$data$time, +      value = x$data$observed) +  }) + +  # This takes quite some time. This could be greatly reduced +  # if the plot.mkinfit code would be imported and adapted, +  # allowing also to overly plots of mmkin fits and nlme fits +  mmkin_nlme <- lapply(i, function(a) { + +    degparms_optim <- as.numeric(degparms_optim_nlme[a, ]) +    names(degparms_optim) <- degparms_optim_names + +    odeini_optim <- degparms_optim[odeini_optim_names] +    names(odeini_optim) <- gsub("_0$", "", names(odeini_optim)) + +    odeparms_optim_trans <- degparms_optim[odeparms_optim_names] +    odeparms_optim <- backtransform_odeparms(odeparms_optim_trans, +      fit_1$mkinmod, +      transform_rates = fit_1$transform_rates, +      transform_fractions = fit_1$transform_fractions) + +    fit_a <- x$mmkin_orig[[a]] + +    state_ini <- fit_a$bparms.state +    state_ini[names(odeini_optim)] <- odeini_optim + +    odeparms <- fit_a$bparms.ode +    odeparms[names(odeparms)] <- odeparms_optim + +    mkinfit_call[["observed"]] <- ds[[a]] +    mkinfit_call[["parms.ini"]] <- odeparms +    mkinfit_call[["state.ini"]] <- state_ini + +    mkinfit_call[["control"]] <- list(iter.max = 1) + +    res <- suppressWarnings(do.call("mkinfit", mkinfit_call)) +    return(res) +  }) + +  # Set dimensions with names and the class (mmkin) +  attributes(mmkin_nlme) <- attributes(x$mmkin_orig[, i]) + +  plot(mmkin_nlme[, i], main = main, legends = legends, +    resplot = resplot, standardized = standardized, +    show_errmin = FALSE, cex = cex, +    rel.height.middle = rel.height.middle, +    ymax = ymax, ...) + +} diff --git a/_pkgdown.yml b/_pkgdown.yml index 0cecdc30..2ede6857 100644 --- a/_pkgdown.yml +++ b/_pkgdown.yml @@ -33,6 +33,11 @@ reference:        - "`[.mmkin`"        - plot.mmkin        - AIC.mmkin +  - title: Mixed models +    desc: Create and work with nonlinear mixed models +    contents: +      - nlme.mmkin +      - plot.nlme.mmkin        - nlme_function    - title: Datasets and known results      contents: @@ -41,14 +41,7 @@ Maintainer: ‘Johannes Ranke <jranke@uni-bremen.de>’  * checking S3 generic/method consistency ... OK  * checking replacement functions ... OK  * checking foreign function calls ... OK -* checking R code for possible problems ... NOTE -nlme.mmkin: no visible binding for global variable ‘na.fail’ -nlme.mmkin: no visible binding for global variable ‘f’ -Undefined global functions or variables: -  f na.fail -Consider adding -  importFrom("stats", "na.fail") -to your NAMESPACE file. +* checking R code for possible problems ... OK  * checking Rd files ... OK  * checking Rd metadata ... OK  * checking Rd line widths ... OK @@ -63,91 +56,11 @@ to your NAMESPACE file.  * checking data for ASCII and uncompressed saves ... OK  * checking installed files from ‘inst/doc’ ... OK  * checking files in ‘vignettes’ ... OK -* checking examples ... ERROR -Running examples in ‘mkin-Ex.R’ failed -The error most likely occurred in: - -> base::assign(".ptime", proc.time(), pos = "CheckExEnv") -> ### Name: nlme_function -> ### Title: Estimation of parameter distributions from mmkin row objects -> ### Aliases: nlme_function mean_degparms nlme_data ->  -> ### ** Examples ->  -> sampling_times = c(0, 1, 3, 7, 14, 28, 60, 90, 120) -> m_SFO <- mkinmod(parent = mkinsub("SFO")) -> d_SFO_1 <- mkinpredict(m_SFO, -+   c(k_parent_sink = 0.1), -+   c(parent = 98), sampling_times) -> d_SFO_1_long <- mkin_wide_to_long(d_SFO_1, time = "time") -> d_SFO_2 <- mkinpredict(m_SFO, -+   c(k_parent_sink = 0.05), -+   c(parent = 102), sampling_times) -> d_SFO_2_long <- mkin_wide_to_long(d_SFO_2, time = "time") -> d_SFO_3 <- mkinpredict(m_SFO, -+   c(k_parent_sink = 0.02), -+   c(parent = 103), sampling_times) -> d_SFO_3_long <- mkin_wide_to_long(d_SFO_3, time = "time") ->  -> d1 <- add_err(d_SFO_1, function(value) 3, n = 1) -> d2 <- add_err(d_SFO_2, function(value) 2, n = 1) -> d3 <- add_err(d_SFO_3, function(value) 4, n = 1) -> ds <- c(d1 = d1, d2 = d2, d3 = d3) ->  -> f <- mmkin("SFO", ds, cores = 1, quiet = TRUE) -> mean_dp <- mean_degparms(f) -> grouped_data <- nlme_data(f) -> nlme_f <- nlme_function(f) -> # These assignments are necessary for these objects to be -> # visible to nlme and augPred when evaluation is done by -> # pkgdown to generated the html docs. -> assign("nlme_f", nlme_f, globalenv()) -> assign("grouped_data", grouped_data, globalenv()) ->  -> library(nlme) -> m_nlme <- nlme(value ~ nlme_f(name, time, parent_0, log_k_parent_sink), -+   data = grouped_data, -+   fixed = parent_0 + log_k_parent_sink ~ 1, -+   random = pdDiag(parent_0 + log_k_parent_sink ~ 1), -+   start = mean_dp) -> summary(m_nlme) -Nonlinear mixed-effects model fit by maximum likelihood -  Model: value ~ nlme_f(name, time, parent_0, log_k_parent_sink)  - Data: grouped_data  -       AIC      BIC    logLik -  253.6377 262.9937 -121.8188 - -Random effects: - Formula: list(parent_0 ~ 1, log_k_parent_sink ~ 1) - Level: ds - Structure: Diagonal -        parent_0 log_k_parent_sink Residual -StdDev: 2.486822         0.6481355 2.368137 - -Fixed effects: parent_0 + log_k_parent_sink ~ 1  -                      Value Std.Error DF  t-value p-value -parent_0          101.43096 1.5960157 44 63.55261       0 -log_k_parent_sink  -3.07614 0.3827294 44 -8.03737       0 - Correlation:  -                  prnt_0 -log_k_parent_sink 0.011  - -Standardized Within-Group Residuals: -       Min         Q1        Med         Q3        Max  --1.9643731 -0.5430765  0.1659516  0.6160408  1.8082871  - -Number of Observations: 48 -Number of Groups: 3  -> plot(augPred(m_nlme, level = 0:1), layout = c(3, 1)) ->  -> m_nlme <- nlme(nlme_formula, -+   data = grouped_data, -+   fixed = parent_0 + log_k_parent_sink ~ 1, -+   random = pdDiag(parent_0 + log_k_parent_sink ~ 1), -+   start = mean_dp) -Error in nlme(nlme_formula, data = grouped_data, fixed = parent_0 + log_k_parent_sink ~  :  -  object 'nlme_formula' not found -Execution halted +* checking examples ... NOTE +Examples with CPU or elapsed time > 5s +                 user system elapsed +nlme.mmkin      4.801  1.040   4.497 +plot.nlme.mmkin 4.751  0.285   4.680  * checking for unstated dependencies in ‘tests’ ... OK  * checking tests ... SKIPPED  * checking for unstated dependencies in vignettes ... OK @@ -157,8 +70,9 @@ Execution halted  * checking for detritus in the temp directory ... OK  * DONE -Status: 1 ERROR, 1 NOTE +Status: 1 NOTE  See    ‘/home/jranke/git/mkin/mkin.Rcheck/00check.log’  for details. + diff --git a/docs/news/index.html b/docs/news/index.html index c8d7ce3d..5fd97344 100644 --- a/docs/news/index.html +++ b/docs/news/index.html @@ -134,6 +134,7 @@  <a href="#mkin-0-9-49-10-unreleased" class="anchor"></a>mkin 0.9.49.10 (unreleased)<small> Unreleased </small>  </h1>  <ul> +<li><p>‘nlme.mmkin’: An nlme method for mmkin row objects and an associated class with plot method</p></li>  <li><p>‘mean_degparms, nlme_data, nlme_function’: Three new functions to facilitate building nlme models from mmkin row objects</p></li>  <li><p>‘endpoints’: Don’t return the SFORB list component if it’s empty. This reduces distraction and complies with the documentation</p></li>  <li><p>Article in compiled models: Add some platform specific code and suppress warnings about zero values being removed from the FOCUS D dataset</p></li> diff --git a/docs/reference/index.html b/docs/reference/index.html index 31f7678c..3c5f1b38 100644 --- a/docs/reference/index.html +++ b/docs/reference/index.html @@ -270,12 +270,32 @@ of an mmkin object</p></td>            <p><code><a href="AIC.mmkin.html">AIC(<i><mmkin></i>)</a></code> <code><a href="AIC.mmkin.html">BIC(<i><mmkin></i>)</a></code> </p>          </td>          <td><p>Calculate the AIC for a column of an mmkin object</p></td> +      </tr> +    </tbody><tbody> +      <tr> +        <th colspan="2"> +          <h2 id="section-mixed-models" class="hasAnchor"><a href="#section-mixed-models" class="anchor"></a>Mixed models</h2> +          <p class="section-desc"><p>Create and work with nonlinear mixed models</p></p> +        </th> +      </tr> +      <tr> +         +        <td> +          <p><code><a href="nlme.mmkin.html">nlme(<i><mmkin></i>)</a></code> </p> +        </td> +        <td><p>Create an nlme model for an mmkin row object</p></td> +      </tr><tr> +         +        <td> +          <p><code><a href="plot.nlme.mmkin.html">plot(<i><nlme.mmkin></i>)</a></code> </p> +        </td> +        <td><p>Plot a fitted nonlinear mixed model obtained via an mmkin row object</p></td>        </tr><tr>          <td>            <p><code><a href="nlme.html">nlme_function()</a></code> <code><a href="nlme.html">mean_degparms()</a></code> <code><a href="nlme.html">nlme_data()</a></code> </p>          </td> -        <td><p>Estimation of parameter distributions from mmkin row objects</p></td> +        <td><p>Helper functions to create nlme models from mmkin row objects</p></td>        </tr>      </tbody><tbody>        <tr> @@ -576,6 +596,7 @@ kinetic models fitted with mkinfit</p></td>        <li><a href="#section-main-functions">Main functions</a></li>        <li><a href="#section-show-results">Show results</a></li>        <li><a href="#section-work-with-mmkin-objects">Work with mmkin objects</a></li> +      <li><a href="#section-mixed-models">Mixed models</a></li>        <li><a href="#section-datasets-and-known-results">Datasets and known results</a></li>        <li><a href="#section-nafta-guidance">NAFTA guidance</a></li>        <li><a href="#section-helper-functions-mainly-used-internally">Helper functions mainly used internally</a></li> diff --git a/docs/reference/nlme.html b/docs/reference/nlme.html index 1b05f882..981845fe 100644 --- a/docs/reference/nlme.html +++ b/docs/reference/nlme.html @@ -6,7 +6,7 @@  <meta http-equiv="X-UA-Compatible" content="IE=edge">  <meta name="viewport" content="width=device-width, initial-scale=1.0"> -<title>Estimation of parameter distributions from mmkin row objects — nlme_function • mkin</title> +<title>Helper functions to create nlme models from mmkin row objects — nlme_function • mkin</title>  <!-- jquery --> @@ -35,7 +35,7 @@ -<meta property="og:title" content="Estimation of parameter distributions from mmkin row objects — nlme_function" /> +<meta property="og:title" content="Helper functions to create nlme models from mmkin row objects — nlme_function" />  <meta property="og:description" content="These functions facilitate setting up a nonlinear mixed effects model for  an mmkin row object. An mmkin row object is essentially a list of mkinfit  objects that have been obtained by fitting the same model to a list of @@ -130,7 +130,7 @@ datasets." />  <div class="row">    <div class="col-md-9 contents">      <div class="page-header"> -    <h1>Estimation of parameter distributions from mmkin row objects</h1> +    <h1>Helper functions to create nlme models from mmkin row objects</h1>      <div class="hidden name"><code>nlme.Rd</code></div>      </div> @@ -255,37 +255,39 @@ datasets.</p>    <span class='no'>nlme_f_sfo_sfo</span> <span class='kw'><-</span> <span class='fu'>nlme_function</span>(<span class='no'>f_2</span>[<span class='st'>"SFO-SFO"</span>, ])    <span class='no'>nlme_f_sfo_sfo_ff</span> <span class='kw'><-</span> <span class='fu'>nlme_function</span>(<span class='no'>f_2</span>[<span class='st'>"SFO-SFO-ff"</span>, ])    <span class='no'>nlme_f_fomc_sfo</span> <span class='kw'><-</span> <span class='fu'>nlme_function</span>(<span class='no'>f_2</span>[<span class='st'>"FOMC-SFO"</span>, ]) +  <span class='fu'><a href='https://rdrr.io/r/base/assign.html'>assign</a></span>(<span class='st'>"nlme_f_sfo_sfo"</span>, <span class='no'>nlme_f_sfo_sfo</span>, <span class='fu'><a href='https://rdrr.io/r/base/environment.html'>globalenv</a></span>()) +  <span class='fu'><a href='https://rdrr.io/r/base/assign.html'>assign</a></span>(<span class='st'>"nlme_f_sfo_sfo_ff"</span>, <span class='no'>nlme_f_sfo_sfo_ff</span>, <span class='fu'><a href='https://rdrr.io/r/base/environment.html'>globalenv</a></span>()) +  <span class='fu'><a href='https://rdrr.io/r/base/assign.html'>assign</a></span>(<span class='st'>"nlme_f_fomc_sfo"</span>, <span class='no'>nlme_f_fomc_sfo</span>, <span class='fu'><a href='https://rdrr.io/r/base/environment.html'>globalenv</a></span>()) -  <span class='co'># Allowing for correlations between random effects leads to non-convergence</span> +  <span class='co'># Allowing for correlations between random effects (not shown)</span> +  <span class='co'># leads to non-convergence</span>    <span class='no'>f_nlme_sfo_sfo</span> <span class='kw'><-</span> <span class='fu'><a href='https://rdrr.io/pkg/nlme/man/nlme.html'>nlme</a></span>(<span class='no'>value</span> ~ <span class='fu'>nlme_f_sfo_sfo</span>(<span class='no'>name</span>, <span class='no'>time</span>,         <span class='no'>parent_0</span>, <span class='no'>log_k_parent_sink</span>, <span class='no'>log_k_parent_A1</span>, <span class='no'>log_k_A1_sink</span>),       <span class='kw'>data</span> <span class='kw'>=</span> <span class='no'>grouped_data_2</span>,       <span class='kw'>fixed</span> <span class='kw'>=</span> <span class='no'>parent_0</span> + <span class='no'>log_k_parent_sink</span> + <span class='no'>log_k_parent_A1</span> + <span class='no'>log_k_A1_sink</span> ~ <span class='fl'>1</span>,       <span class='kw'>random</span> <span class='kw'>=</span> <span class='fu'><a href='https://rdrr.io/pkg/nlme/man/pdDiag.html'>pdDiag</a></span>(<span class='no'>parent_0</span> + <span class='no'>log_k_parent_sink</span> + <span class='no'>log_k_parent_A1</span> + <span class='no'>log_k_A1_sink</span> ~ <span class='fl'>1</span>), -     <span class='kw'>start</span> <span class='kw'>=</span> <span class='no'>mean_dp_sfo_sfo</span>)</div><div class='output co'>#> <span class='error'>Error in nlme_f_sfo_sfo(name, time, parent_0, log_k_parent_sink, log_k_parent_A1,     log_k_A1_sink): konnte Funktion "nlme_f_sfo_sfo" nicht finden</span></div><div class='input'> +     <span class='kw'>start</span> <span class='kw'>=</span> <span class='no'>mean_dp_sfo_sfo</span>) +   <span class='co'># augPred does not see to work on this object, so no plot is shown</span> +    <span class='co'># The same model fitted with transformed formation fractions does not converge</span>    <span class='no'>f_nlme_sfo_sfo_ff</span> <span class='kw'><-</span> <span class='fu'><a href='https://rdrr.io/pkg/nlme/man/nlme.html'>nlme</a></span>(<span class='no'>value</span> ~ <span class='fu'>nlme_f_sfo_sfo_ff</span>(<span class='no'>name</span>, <span class='no'>time</span>,         <span class='no'>parent_0</span>, <span class='no'>log_k_parent</span>, <span class='no'>log_k_A1</span>, <span class='no'>f_parent_ilr_1</span>),       <span class='kw'>data</span> <span class='kw'>=</span> <span class='no'>grouped_data_2</span>,       <span class='kw'>fixed</span> <span class='kw'>=</span> <span class='no'>parent_0</span> + <span class='no'>log_k_parent</span> + <span class='no'>log_k_A1</span> + <span class='no'>f_parent_ilr_1</span> ~ <span class='fl'>1</span>,       <span class='kw'>random</span> <span class='kw'>=</span> <span class='fu'><a href='https://rdrr.io/pkg/nlme/man/pdDiag.html'>pdDiag</a></span>(<span class='no'>parent_0</span> + <span class='no'>log_k_parent</span> + <span class='no'>log_k_A1</span> + <span class='no'>f_parent_ilr_1</span> ~ <span class='fl'>1</span>), -     <span class='kw'>start</span> <span class='kw'>=</span> <span class='no'>mean_dp_sfo_sfo_ff</span>)</div><div class='output co'>#> <span class='error'>Error in nlme_f_sfo_sfo_ff(name, time, parent_0, log_k_parent, log_k_A1,     f_parent_ilr_1): konnte Funktion "nlme_f_sfo_sfo_ff" nicht finden</span></div><div class='input'> -  <span class='co'># It does converge with this version of reduced random effects</span> -  <span class='no'>f_nlme_sfo_sfo_ff</span> <span class='kw'><-</span> <span class='fu'><a href='https://rdrr.io/pkg/nlme/man/nlme.html'>nlme</a></span>(<span class='no'>value</span> ~ <span class='fu'>nlme_f_sfo_sfo_ff</span>(<span class='no'>name</span>, <span class='no'>time</span>, -       <span class='no'>parent_0</span>, <span class='no'>log_k_parent</span>, <span class='no'>log_k_A1</span>, <span class='no'>f_parent_ilr_1</span>), -     <span class='kw'>data</span> <span class='kw'>=</span> <span class='no'>grouped_data_2</span>, -     <span class='kw'>fixed</span> <span class='kw'>=</span> <span class='no'>parent_0</span> + <span class='no'>log_k_parent</span> + <span class='no'>log_k_A1</span> + <span class='no'>f_parent_ilr_1</span> ~ <span class='fl'>1</span>, -     <span class='kw'>random</span> <span class='kw'>=</span> <span class='fu'><a href='https://rdrr.io/pkg/nlme/man/pdDiag.html'>pdDiag</a></span>(<span class='no'>parent_0</span> + <span class='no'>log_k_parent</span> ~ <span class='fl'>1</span>), -     <span class='kw'>start</span> <span class='kw'>=</span> <span class='no'>mean_dp_sfo_sfo_ff</span>)</div><div class='output co'>#> <span class='error'>Error in nlme_f_sfo_sfo_ff(name, time, parent_0, log_k_parent, log_k_A1,     f_parent_ilr_1): konnte Funktion "nlme_f_sfo_sfo_ff" nicht finden</span></div><div class='input'> +     <span class='kw'>start</span> <span class='kw'>=</span> <span class='no'>mean_dp_sfo_sfo_ff</span>)</div><div class='output co'>#> <span class='error'>Error in nlme.formula(value ~ nlme_f_sfo_sfo_ff(name, time, parent_0,     log_k_parent, log_k_A1, f_parent_ilr_1), data = grouped_data_2,     fixed = parent_0 + log_k_parent + log_k_A1 + f_parent_ilr_1 ~         1, random = pdDiag(parent_0 + log_k_parent + log_k_A1 +         f_parent_ilr_1 ~ 1), start = mean_dp_sfo_sfo_ff): step halving factor reduced below minimum in PNLS step</span></div><div class='input'>    <span class='no'>f_nlme_fomc_sfo</span> <span class='kw'><-</span> <span class='fu'><a href='https://rdrr.io/pkg/nlme/man/nlme.html'>nlme</a></span>(<span class='no'>value</span> ~ <span class='fu'>nlme_f_fomc_sfo</span>(<span class='no'>name</span>, <span class='no'>time</span>,         <span class='no'>parent_0</span>, <span class='no'>log_alpha</span>, <span class='no'>log_beta</span>, <span class='no'>log_k_A1</span>, <span class='no'>f_parent_ilr_1</span>),       <span class='kw'>data</span> <span class='kw'>=</span> <span class='no'>grouped_data_2</span>,       <span class='kw'>fixed</span> <span class='kw'>=</span> <span class='no'>parent_0</span> + <span class='no'>log_alpha</span> + <span class='no'>log_beta</span> + <span class='no'>log_k_A1</span> + <span class='no'>f_parent_ilr_1</span> ~ <span class='fl'>1</span>,       <span class='kw'>random</span> <span class='kw'>=</span> <span class='fu'><a href='https://rdrr.io/pkg/nlme/man/pdDiag.html'>pdDiag</a></span>(<span class='no'>parent_0</span> + <span class='no'>log_alpha</span> + <span class='no'>log_beta</span> + <span class='no'>log_k_A1</span> + <span class='no'>f_parent_ilr_1</span> ~ <span class='fl'>1</span>), -     <span class='kw'>start</span> <span class='kw'>=</span> <span class='no'>mean_dp_fomc_sfo</span>)</div><div class='output co'>#> <span class='error'>Error in nlme_f_fomc_sfo(name, time, parent_0, log_alpha, log_beta, log_k_A1,     f_parent_ilr_1): konnte Funktion "nlme_f_fomc_sfo" nicht finden</span></div><div class='input'> +     <span class='kw'>start</span> <span class='kw'>=</span> <span class='no'>mean_dp_fomc_sfo</span>) +    <span class='co'># DFOP-SFO and SFORB-SFO did not converge with full random effects</span> -  <span class='fu'><a href='https://rdrr.io/r/stats/anova.html'>anova</a></span>(<span class='no'>f_nlme_fomc_sfo</span>, <span class='no'>f_nlme_sfo_sfo</span>)</div><div class='output co'>#> <span class='error'>Error in anova(f_nlme_fomc_sfo, f_nlme_sfo_sfo): Objekt 'f_nlme_fomc_sfo' nicht gefunden</span></div><div class='input'># } +  <span class='fu'><a href='https://rdrr.io/r/stats/anova.html'>anova</a></span>(<span class='no'>f_nlme_fomc_sfo</span>, <span class='no'>f_nlme_sfo_sfo</span>)</div><div class='output co'>#>                 Model df       AIC       BIC    logLik   Test  L.Ratio p-value +#> f_nlme_fomc_sfo     1 11  932.5817  967.0755 -455.2909                         +#> f_nlme_sfo_sfo      2  9 1089.2492 1117.4714 -535.6246 1 vs 2 160.6675  <.0001</div><div class='input'># }  </div></pre>    </div>    <div class="col-md-3 hidden-xs hidden-sm" id="sidebar"> diff --git a/docs/reference/nlme.mmkin.html b/docs/reference/nlme.mmkin.html new file mode 100644 index 00000000..e1b1ff77 --- /dev/null +++ b/docs/reference/nlme.mmkin.html @@ -0,0 +1,301 @@ +<!-- 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>Create an nlme model for an mmkin row object — nlme.mmkin • 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="Create an nlme model for an mmkin row object — nlme.mmkin" /> +<meta property="og:description" content="This functions sets up a nonlinear mixed effects model for an mmkin row +object. An mmkin row object is essentially a list of mkinfit objects that +have been obtained by fitting the same model to a list of datasets." /> +<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.10</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>Create an nlme model for an mmkin row object</h1> +     +    <div class="hidden name"><code>nlme.mmkin.Rd</code></div> +    </div> + +    <div class="ref-description"> +    <p>This functions sets up a nonlinear mixed effects model for an mmkin row +object. An mmkin row object is essentially a list of mkinfit objects that +have been obtained by fitting the same model to a list of datasets.</p> +    </div> + +    <pre class="usage"><span class='co'># S3 method for mmkin</span> +<span class='fu'>nlme</span>( +  <span class='no'>model</span>, +  <span class='kw'>data</span> <span class='kw'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/sys.parent.html'>sys.frame</a></span>(<span class='fu'><a href='https://rdrr.io/r/base/sys.parent.html'>sys.parent</a></span>()), +  <span class='no'>fixed</span>, +  <span class='kw'>random</span> <span class='kw'>=</span> <span class='no'>fixed</span>, +  <span class='no'>groups</span>, +  <span class='no'>start</span>, +  <span class='kw'>correlation</span> <span class='kw'>=</span> <span class='kw'>NULL</span>, +  <span class='kw'>weights</span> <span class='kw'>=</span> <span class='kw'>NULL</span>, +  <span class='no'>subset</span>, +  <span class='kw'>method</span> <span class='kw'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/c.html'>c</a></span>(<span class='st'>"ML"</span>, <span class='st'>"REML"</span>), +  <span class='kw'>na.action</span> <span class='kw'>=</span> <span class='no'>na.fail</span>, +  <span class='no'>naPattern</span>, +  <span class='kw'>control</span> <span class='kw'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/list.html'>list</a></span>(), +  <span class='kw'>verbose</span> <span class='kw'>=</span> <span class='fl'>FALSE</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>model</th> +      <td><p>An <code><a href='mmkin.html'>mmkin</a></code> row object.</p></td> +    </tr> +    <tr> +      <th>data</th> +      <td><p>Ignored, data are taken from the mmkin model</p></td> +    </tr> +    <tr> +      <th>fixed</th> +      <td><p>Ignored, all degradation parameters fitted in the +mmkin model are used as fixed parameters</p></td> +    </tr> +    <tr> +      <th>random</th> +      <td><p>If not specified, all fixed effects are complemented +with uncorrelated random effects</p></td> +    </tr> +    <tr> +      <th>groups</th> +      <td><p>See the documentation of nlme</p></td> +    </tr> +    <tr> +      <th>start</th> +      <td><p>If not specified, mean values of the fitted degradation +parameters taken from the mmkin object are used</p></td> +    </tr> +    <tr> +      <th>correlation</th> +      <td><p>See the documentation of nlme</p></td> +    </tr> +    <tr> +      <th>weights</th> +      <td><p>passed to nlme</p></td> +    </tr> +    <tr> +      <th>subset</th> +      <td><p>passed to nlme</p></td> +    </tr> +    <tr> +      <th>method</th> +      <td><p>passed to nlme</p></td> +    </tr> +    <tr> +      <th>na.action</th> +      <td><p>passed to nlme</p></td> +    </tr> +    <tr> +      <th>naPattern</th> +      <td><p>passed to nlme</p></td> +    </tr> +    <tr> +      <th>control</th> +      <td><p>passed to nlme</p></td> +    </tr> +    <tr> +      <th>verbose</th> +      <td><p>passed to nlme</p></td> +    </tr> +    </table> + +    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2> + +    <p>Upon success, a fitted nlme.mmkin object, which is an nlme object +  with additional elements</p> +    <h2 class="hasAnchor" id="see-also"><a class="anchor" href="#see-also"></a>See also</h2> + +    <div class='dont-index'><p><code><a href='nlme.html'>nlme_function</a></code></p></div> + +    <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2> +    <pre class="examples"><div class='input'><span class='no'>ds</span> <span class='kw'><-</span> <span class='fu'><a href='https://rdrr.io/r/base/lapply.html'>lapply</a></span>(<span class='no'>experimental_data_for_UBA_2019</span>[<span class='fl'>6</span>:<span class='fl'>10</span>], + <span class='kw'>function</span>(<span class='no'>x</span>) <span class='fu'><a href='https://rdrr.io/r/base/subset.html'>subset</a></span>(<span class='no'>x</span>$<span class='no'>data</span>[<span class='fu'><a href='https://rdrr.io/r/base/c.html'>c</a></span>(<span class='st'>"name"</span>, <span class='st'>"time"</span>, <span class='st'>"value"</span>)], <span class='no'>name</span> <span class='kw'>==</span> <span class='st'>"parent"</span>)) +<span class='no'>f</span> <span class='kw'><-</span> <span class='fu'><a href='mmkin.html'>mmkin</a></span>(<span class='st'>"SFO"</span>, <span class='no'>ds</span>, <span class='kw'>quiet</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>, <span class='kw'>cores</span> <span class='kw'>=</span> <span class='fl'>1</span>) +<span class='fu'><a href='https://rdrr.io/r/base/library.html'>library</a></span>(<span class='no'>nlme</span>) +<span class='no'>f_nlme</span> <span class='kw'><-</span> <span class='fu'><a href='https://rdrr.io/pkg/nlme/man/nlme.html'>nlme</a></span>(<span class='no'>f</span>) +<span class='fu'><a href='https://rdrr.io/pkg/nlme/man/nlme.html'>nlme</a></span>(<span class='no'>f</span>, <span class='kw'>random</span> <span class='kw'>=</span> <span class='no'>parent_0</span> ~ <span class='fl'>1</span>)</div><div class='output co'>#> Nonlinear mixed-effects model fit by maximum likelihood +#>   Model: value ~ deg_func(name, time, parent_0, log_k_parent_sink)  +#>   Data: structure(list(ds = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,  1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L,  2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L,  3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L,  4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,  4L, 4L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,  5L, 5L), .Label = c("1", "2", "3", "4", "5"), class = c("ordered",  "factor")), name = c("parent", "parent", "parent", "parent",  "parent", "parent", "parent", "parent", "parent", "parent", "parent",  "parent", "parent", "parent", "parent", "parent", "parent", "parent",  "parent", "parent", "parent", "parent", "parent", "parent", "parent",  "parent", "parent", "parent", "parent", "parent", "parent", "parent",  "parent", "parent", "parent", "parent", "parent", "parent", "parent",  "parent", "parent", "parent", "parent", "parent", "parent", "parent",  "parent", "parent", "parent", "parent", "parent", "parent", "parent",  "parent", "parent", "parent", "parent", "parent", "parent", "parent",  "parent", "parent", "parent", "parent", "parent", "parent", "parent",  "parent", "parent", "parent", "parent", "parent", "parent", "parent",  "parent", "parent", "parent", "parent", "parent", "parent", "parent",  "parent", "parent", "parent", "parent", "parent", "parent", "parent",  "parent", "parent"), time = c(0, 0, 3, 3, 6, 6, 10, 10, 20, 20,  34, 34, 55, 55, 90, 90, 112, 112, 132, 132, 0, 0, 3, 3, 7, 7,  14, 14, 30, 30, 60, 60, 90, 90, 120, 120, 180, 180, 0, 0, 1,  1, 3, 3, 8, 8, 14, 14, 27, 27, 48, 48, 70, 70, 0, 0, 1, 1, 3,  3, 8, 8, 14, 14, 27, 27, 48, 48, 70, 70, 91, 91, 120, 120, 0,  0, 8, 8, 14, 14, 21, 21, 41, 41, 63, 63, 91, 91, 120, 120), value = c(97.2,  96.4, 71.1, 69.2, 58.1, 56.6, 44.4, 43.4, 33.3, 29.2, 17.6, 18,  10.5, 9.3, 4.5, 4.7, 3, 3.4, 2.3, 2.7, 93.6, 92.3, 87, 82.2,  74, 73.9, 64.2, 69.5, 54, 54.6, 41.1, 38.4, 32.5, 35.5, 28.1,  29, 26.5, 27.6, 91.9, 90.8, 64.9, 66.2, 43.5, 44.1, 18.3, 18.1,  10.2, 10.8, 4.9, 3.3, 1.6, 1.5, 1.1, 0.9, 99.8, 98.3, 77.1, 77.2,  59, 58.1, 27.4, 29.2, 19.1, 29.6, 10.1, 18.2, 4.5, 9.1, 2.3,  2.9, 2, 1.8, 2, 2.2, 96.1, 94.3, 73.9, 73.9, 69.4, 73.1, 65.6,  65.3, 55.9, 54.4, 47, 49.3, 44.7, 46.7, 42.1, 41.3)), row.names = c(NA,  -90L), class = c("nfnGroupedData", "nfGroupedData", "groupedData",  "data.frame"), formula = value ~ time | ds, FUN = function (x)  max(x, na.rm = TRUE), order.groups = FALSE)  +#>   Log-likelihood: -394.4901 +#>   Fixed: list(parent_0 ~ 1, log_k_parent_sink ~ 1)  +#>          parent_0 log_k_parent_sink  +#>         73.985522         -3.869079  +#>  +#> Random effects: +#>  Formula: parent_0 ~ 1 | ds +#>         parent_0 Residual +#> StdDev:  18.6134 18.22029 +#>  +#> Number of Observations: 90 +#> Number of Groups: 5 </div><div class='input'><span class='no'>f_nlme</span> <span class='kw'><-</span> <span class='fu'><a href='https://rdrr.io/pkg/nlme/man/nlme.html'>nlme</a></span>(<span class='no'>f</span>, <span class='kw'>start</span> <span class='kw'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/c.html'>c</a></span>(<span class='kw'>parent_0</span> <span class='kw'>=</span> <span class='fl'>100</span>, <span class='kw'>log_k_parent_sink</span> <span class='kw'>=</span> <span class='fl'>0.1</span>)) +<span class='fu'><a href='https://rdrr.io/r/stats/update.html'>update</a></span>(<span class='no'>f_nlme</span>, <span class='kw'>random</span> <span class='kw'>=</span> <span class='no'>parent_0</span> ~ <span class='fl'>1</span>)</div><div class='output co'>#> Nonlinear mixed-effects model fit by maximum likelihood +#>   Model: value ~ deg_func(name, time, parent_0, log_k_parent_sink)  +#>   Data: structure(list(ds = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,  1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L,  2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L,  3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L,  4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,  4L, 4L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,  5L, 5L), .Label = c("1", "2", "3", "4", "5"), class = c("ordered",  "factor")), name = c("parent", "parent", "parent", "parent",  "parent", "parent", "parent", "parent", "parent", "parent", "parent",  "parent", "parent", "parent", "parent", "parent", "parent", "parent",  "parent", "parent", "parent", "parent", "parent", "parent", "parent",  "parent", "parent", "parent", "parent", "parent", "parent", "parent",  "parent", "parent", "parent", "parent", "parent", "parent", "parent",  "parent", "parent", "parent", "parent", "parent", "parent", "parent",  "parent", "parent", "parent", "parent", "parent", "parent", "parent",  "parent", "parent", "parent", "parent", "parent", "parent", "parent",  "parent", "parent", "parent", "parent", "parent", "parent", "parent",  "parent", "parent", "parent", "parent", "parent", "parent", "parent",  "parent", "parent", "parent", "parent", "parent", "parent", "parent",  "parent", "parent", "parent", "parent", "parent", "parent", "parent",  "parent", "parent"), time = c(0, 0, 3, 3, 6, 6, 10, 10, 20, 20,  34, 34, 55, 55, 90, 90, 112, 112, 132, 132, 0, 0, 3, 3, 7, 7,  14, 14, 30, 30, 60, 60, 90, 90, 120, 120, 180, 180, 0, 0, 1,  1, 3, 3, 8, 8, 14, 14, 27, 27, 48, 48, 70, 70, 0, 0, 1, 1, 3,  3, 8, 8, 14, 14, 27, 27, 48, 48, 70, 70, 91, 91, 120, 120, 0,  0, 8, 8, 14, 14, 21, 21, 41, 41, 63, 63, 91, 91, 120, 120), value = c(97.2,  96.4, 71.1, 69.2, 58.1, 56.6, 44.4, 43.4, 33.3, 29.2, 17.6, 18,  10.5, 9.3, 4.5, 4.7, 3, 3.4, 2.3, 2.7, 93.6, 92.3, 87, 82.2,  74, 73.9, 64.2, 69.5, 54, 54.6, 41.1, 38.4, 32.5, 35.5, 28.1,  29, 26.5, 27.6, 91.9, 90.8, 64.9, 66.2, 43.5, 44.1, 18.3, 18.1,  10.2, 10.8, 4.9, 3.3, 1.6, 1.5, 1.1, 0.9, 99.8, 98.3, 77.1, 77.2,  59, 58.1, 27.4, 29.2, 19.1, 29.6, 10.1, 18.2, 4.5, 9.1, 2.3,  2.9, 2, 1.8, 2, 2.2, 96.1, 94.3, 73.9, 73.9, 69.4, 73.1, 65.6,  65.3, 55.9, 54.4, 47, 49.3, 44.7, 46.7, 42.1, 41.3)), row.names = c(NA,  -90L), class = c("nfnGroupedData", "nfGroupedData", "groupedData",  "data.frame"), formula = value ~ time | ds, FUN = function (x)  max(x, na.rm = TRUE), order.groups = FALSE)  +#>   Log-likelihood: -404.3729 +#>   Fixed: list(parent_0 ~ 1, log_k_parent_sink ~ 1)  +#>          parent_0 log_k_parent_sink  +#>         75.933480         -3.555983  +#>  +#> Random effects: +#>  Formula: parent_0 ~ 1 | ds +#>            parent_0 Residual +#> StdDev: 0.002416792 21.63027 +#>  +#> Number of Observations: 90 +#> Number of Groups: 5 </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="#value">Value</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/reference/plot.nlme.mmkin-1.png b/docs/reference/plot.nlme.mmkin-1.pngBinary files differ new file mode 100644 index 00000000..0717f30d --- /dev/null +++ b/docs/reference/plot.nlme.mmkin-1.png diff --git a/docs/reference/plot.nlme.mmkin.html b/docs/reference/plot.nlme.mmkin.html new file mode 100644 index 00000000..d5b7c00c --- /dev/null +++ b/docs/reference/plot.nlme.mmkin.html @@ -0,0 +1,252 @@ +<!-- 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>Plot a fitted nonlinear mixed model obtained via an mmkin row object — plot.nlme.mmkin • 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="Plot a fitted nonlinear mixed model obtained via an mmkin row object — plot.nlme.mmkin" /> +<meta property="og:description" content="Plot a fitted nonlinear mixed model obtained via an mmkin row object" /> +<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.10</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>Plot a fitted nonlinear mixed model obtained via an mmkin row object</h1> +     +    <div class="hidden name"><code>plot.nlme.mmkin.Rd</code></div> +    </div> + +    <div class="ref-description"> +    <p>Plot a fitted nonlinear mixed model obtained via an mmkin row object</p> +    </div> + +    <pre class="usage"><span class='co'># S3 method for nlme.mmkin</span> +<span class='fu'><a href='https://rdrr.io/r/graphics/plot.html'>plot</a></span>( +  <span class='no'>x</span>, +  <span class='kw'>i</span> <span class='kw'>=</span> <span class='fl'>1</span>:<span class='fu'><a href='https://rdrr.io/r/base/nrow.html'>ncol</a></span>(<span class='no'>x</span>$<span class='no'>mmkin_orig</span>), +  <span class='kw'>main</span> <span class='kw'>=</span> <span class='st'>"auto"</span>, +  <span class='kw'>legends</span> <span class='kw'>=</span> <span class='fl'>1</span>, +  <span class='kw'>resplot</span> <span class='kw'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/c.html'>c</a></span>(<span class='st'>"time"</span>, <span class='st'>"errmod"</span>), +  <span class='kw'>standardized</span> <span class='kw'>=</span> <span class='fl'>FALSE</span>, +  <span class='kw'>cex</span> <span class='kw'>=</span> <span class='fl'>0.7</span>, +  <span class='kw'>rel.height.middle</span> <span class='kw'>=</span> <span class='fl'>0.9</span>, +  <span class='kw'>ymax</span> <span class='kw'>=</span> <span class='st'>"auto"</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>x</th> +      <td><p>An object of class <code><a href='nlme.mmkin.html'>nlme.mmkin</a></code></p></td> +    </tr> +    <tr> +      <th>i</th> +      <td><p>A numeric index to select datasets for which to plot the nlme fit, +in case plots get too large</p></td> +    </tr> +    <tr> +      <th>main</th> +      <td><p>The main title placed on the outer margin of the plot.</p></td> +    </tr> +    <tr> +      <th>legends</th> +      <td><p>An index for the fits for which legends should be shown.</p></td> +    </tr> +    <tr> +      <th>resplot</th> +      <td><p>Should the residuals plotted against time, using +<code><a href='mkinresplot.html'>mkinresplot</a></code>, or as squared residuals against predicted +values, with the error model, using <code><a href='mkinerrplot.html'>mkinerrplot</a></code>.</p></td> +    </tr> +    <tr> +      <th>standardized</th> +      <td><p>Should the residuals be standardized? This option +is passed to <code><a href='mkinresplot.html'>mkinresplot</a></code>, it only takes effect if +`resplot = "time"`.</p></td> +    </tr> +    <tr> +      <th>cex</th> +      <td><p>Passed to the plot functions and <code><a href='https://rdrr.io/r/graphics/mtext.html'>mtext</a></code>.</p></td> +    </tr> +    <tr> +      <th>rel.height.middle</th> +      <td><p>The relative height of the middle plot, if more +than two rows of plots are shown.</p></td> +    </tr> +    <tr> +      <th>ymax</th> +      <td><p>Maximum y axis value for <code><a href='plot.mkinfit.html'>plot.mkinfit</a></code>.</p></td> +    </tr> +    <tr> +      <th>...</th> +      <td><p>Further arguments passed to <code><a href='plot.mkinfit.html'>plot.mkinfit</a></code> and +<code><a href='mkinresplot.html'>mkinresplot</a></code>.</p></td> +    </tr> +    </table> + +    <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2> + +    <p>The function is called for its side effect.</p> + +    <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2> +    <pre class="examples"><div class='input'><span class='no'>ds</span> <span class='kw'><-</span> <span class='fu'><a href='https://rdrr.io/r/base/lapply.html'>lapply</a></span>(<span class='no'>experimental_data_for_UBA_2019</span>[<span class='fl'>6</span>:<span class='fl'>10</span>], + <span class='kw'>function</span>(<span class='no'>x</span>) <span class='fu'><a href='https://rdrr.io/r/base/subset.html'>subset</a></span>(<span class='no'>x</span>$<span class='no'>data</span>[<span class='fu'><a href='https://rdrr.io/r/base/c.html'>c</a></span>(<span class='st'>"name"</span>, <span class='st'>"time"</span>, <span class='st'>"value"</span>)], <span class='no'>name</span> <span class='kw'>==</span> <span class='st'>"parent"</span>)) +<span class='no'>f</span> <span class='kw'><-</span> <span class='fu'><a href='mmkin.html'>mmkin</a></span>(<span class='st'>"SFO"</span>, <span class='no'>ds</span>, <span class='kw'>quiet</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>, <span class='kw'>cores</span> <span class='kw'>=</span> <span class='fl'>1</span>) +<span class='co'>#plot(f) # too many panels for pkgdown</span> +<span class='fu'><a href='https://rdrr.io/r/base/library.html'>library</a></span>(<span class='no'>nlme</span>) +<span class='no'>f_nlme</span> <span class='kw'><-</span> <span class='fu'><a href='https://rdrr.io/pkg/nlme/man/nlme.html'>nlme</a></span>(<span class='no'>f</span>) + +<span class='co'>#plot(f_nlme) # too many panels for pkgdown</span> +<span class='fu'><a href='https://rdrr.io/r/graphics/plot.html'>plot</a></span>(<span class='no'>f_nlme</span>, <span class='fl'>1</span>:<span class='fl'>2</span>)</div><div class='img'><img src='plot.nlme.mmkin-1.png' alt='' width='700' height='433' /></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="#value">Value</a></li> +      <li><a href="#examples">Examples</a></li> +    </ul> + +    <h2>Author</h2> +    <p>Johannes Ranke</p> +  </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 8ba032de..d1c86707 100644 --- a/docs/sitemap.xml +++ b/docs/sitemap.xml @@ -133,6 +133,9 @@      <loc>https://pkgdown.jrwb.de/mkin/reference/nlme.html</loc>    </url>    <url> +    <loc>https://pkgdown.jrwb.de/mkin/reference/nlme.mmkin.html</loc> +  </url> +  <url>      <loc>https://pkgdown.jrwb.de/mkin/reference/nobs.mkinfit.html</loc>    </url>    <url> @@ -148,6 +151,9 @@      <loc>https://pkgdown.jrwb.de/mkin/reference/plot.nafta.html</loc>    </url>    <url> +    <loc>https://pkgdown.jrwb.de/mkin/reference/plot.nlme.mmkin.html</loc> +  </url> +  <url>      <loc>https://pkgdown.jrwb.de/mkin/reference/print.mkinds.html</loc>    </url>    <url> diff --git a/man/nlme.Rd b/man/nlme.Rd index 971ba3f5..f31c7a4f 100644 --- a/man/nlme.Rd +++ b/man/nlme.Rd @@ -4,7 +4,7 @@  \alias{nlme_function}  \alias{mean_degparms}  \alias{nlme_data} -\title{Estimation of parameter distributions from mmkin row objects} +\title{Helper functions to create nlme models from mmkin row objects}  \usage{  nlme_function(object) diff --git a/man/nlme.mmkin.Rd b/man/nlme.mmkin.Rd index 5f937488..1fecb5dd 100644 --- a/man/nlme.mmkin.Rd +++ b/man/nlme.mmkin.Rd @@ -54,11 +54,13 @@ parameters taken from the mmkin object are used}  \item{verbose}{passed to nlme}  }  \value{ -Upon success, a fitted nlme.mmkin object, which is -  an nlme object with additional elements +Upon success, a fitted nlme.mmkin object, which is an nlme object +  with additional elements  }  \description{ -Create an nlme model for an mmkin row object +This functions sets up a nonlinear mixed effects model for an mmkin row +object. An mmkin row object is essentially a list of mkinfit objects that +have been obtained by fitting the same model to a list of datasets.  }  \examples{  ds <- lapply(experimental_data_for_UBA_2019[6:10], @@ -70,3 +72,6 @@ nlme(f, random = parent_0 ~ 1)  f_nlme <- nlme(f, start = c(parent_0 = 100, log_k_parent_sink = 0.1))  update(f_nlme, random = parent_0 ~ 1)  } +\seealso{ +\code{\link{nlme_function}} +} diff --git a/man/plot.nlme.mmkin.Rd b/man/plot.nlme.mmkin.Rd new file mode 100644 index 00000000..c0e749aa --- /dev/null +++ b/man/plot.nlme.mmkin.Rd @@ -0,0 +1,67 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/plot.nlme.mmkin.R +\name{plot.nlme.mmkin} +\alias{plot.nlme.mmkin} +\title{Plot a fitted nonlinear mixed model obtained via an mmkin row object} +\usage{ +\method{plot}{nlme.mmkin}( +  x, +  i = 1:ncol(x$mmkin_orig), +  main = "auto", +  legends = 1, +  resplot = c("time", "errmod"), +  standardized = FALSE, +  cex = 0.7, +  rel.height.middle = 0.9, +  ymax = "auto", +  ... +) +} +\arguments{ +\item{x}{An object of class \code{\link{nlme.mmkin}}} + +\item{i}{A numeric index to select datasets for which to plot the nlme fit, +in case plots get too large} + +\item{main}{The main title placed on the outer margin of the plot.} + +\item{legends}{An index for the fits for which legends should be shown.} + +\item{resplot}{Should the residuals plotted against time, using +\code{\link{mkinresplot}}, or as squared residuals against predicted +values, with the error model, using \code{\link{mkinerrplot}}.} + +\item{standardized}{Should the residuals be standardized? This option +is passed to \code{\link{mkinresplot}}, it only takes effect if +`resplot = "time"`.} + +\item{cex}{Passed to the plot functions and \code{\link{mtext}}.} + +\item{rel.height.middle}{The relative height of the middle plot, if more +than two rows of plots are shown.} + +\item{ymax}{Maximum y axis value for \code{\link{plot.mkinfit}}.} + +\item{\dots}{Further arguments passed to \code{\link{plot.mkinfit}} and +\code{\link{mkinresplot}}.} +} +\value{ +The function is called for its side effect. +} +\description{ +Plot a fitted nonlinear mixed model obtained via an mmkin row object +} +\examples{ +ds <- lapply(experimental_data_for_UBA_2019[6:10], + function(x) subset(x$data[c("name", "time", "value")], name == "parent")) +f <- mmkin("SFO", ds, quiet = TRUE, cores = 1) +#plot(f) # too many panels for pkgdown +library(nlme) +f_nlme <- nlme(f) + +#plot(f_nlme) # too many panels for pkgdown +plot(f_nlme, 1:2) +} +\author{ +Johannes Ranke +} | 
