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.png Binary files differnew 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 +} |