diff options
Diffstat (limited to 'man')
-rw-r--r-- | man/confint.mkinfit.Rd | 8 | ||||
-rw-r--r-- | man/logLik.mkinfit.Rd | 6 | ||||
-rw-r--r-- | man/mkinresplot.Rd | 2 | ||||
-rw-r--r-- | man/mmkin.Rd | 7 | ||||
-rw-r--r-- | man/nlme.mmkin.Rd | 37 | ||||
-rw-r--r-- | man/print.mmkin.Rd | 16 | ||||
-rw-r--r-- | man/transform_odeparms.Rd | 18 |
7 files changed, 44 insertions, 50 deletions
diff --git a/man/confint.mkinfit.Rd b/man/confint.mkinfit.Rd index fd2890ff..b19e78c2 100644 --- a/man/confint.mkinfit.Rd +++ b/man/confint.mkinfit.Rd @@ -82,20 +82,20 @@ confint(f, method = "profile") if (identical(Sys.getenv("NOT_CRAN"), "true")) { n_cores <- parallel::detectCores() - 1 } else { - n_cores <- 1 + n_cores <- 1 } if (Sys.getenv("TRAVIS") != "") n_cores = 1 if (Sys.info()["sysname"] == "Windows") n_cores = 1 -SFO_SFO <- mkinmod(parent = mkinsub("SFO", "m1"), m1 = mkinsub("SFO"), quiet = TRUE) +SFO_SFO <- mkinmod(parent = mkinsub("SFO", "m1"), m1 = mkinsub("SFO"), + use_of_ff = "min", quiet = TRUE) SFO_SFO.ff <- mkinmod(parent = mkinsub("SFO", "m1"), m1 = mkinsub("SFO"), use_of_ff = "max", quiet = TRUE) f_d_1 <- mkinfit(SFO_SFO, subset(FOCUS_2006_D, value != 0), quiet = TRUE) system.time(ci_profile <- confint(f_d_1, method = "profile", cores = 1, quiet = TRUE)) # Using more cores does not save much time here, as parent_0 takes up most of the time # If we additionally exclude parent_0 (the confidence of which is often of -# minor interest), we get a nice performance improvement from about 50 -# seconds to about 12 seconds if we use at least four cores +# minor interest), we get a nice performance improvement if we use at least 4 cores system.time(ci_profile_no_parent_0 <- confint(f_d_1, method = "profile", c("k_parent_sink", "k_parent_m1", "k_m1_sink", "sigma"), cores = n_cores)) ci_profile diff --git a/man/logLik.mkinfit.Rd b/man/logLik.mkinfit.Rd index 637570e4..6b40305e 100644 --- a/man/logLik.mkinfit.Rd +++ b/man/logLik.mkinfit.Rd @@ -35,10 +35,10 @@ and the fitted error model parameters. parent = mkinsub("SFO", to = "m1"), m1 = mkinsub("SFO") ) - d_t <- FOCUS_2006_D + d_t <- subset(FOCUS_2006_D, value != 0) f_nw <- mkinfit(sfo_sfo, d_t, quiet = TRUE) # no weighting (weights are unity) - f_obs <- mkinfit(sfo_sfo, d_t, error_model = "obs", quiet = TRUE) - f_tc <- mkinfit(sfo_sfo, d_t, error_model = "tc", quiet = TRUE) + f_obs <- update(f_nw, error_model = "obs") + f_tc <- update(f_nw, error_model = "tc") AIC(f_nw, f_obs, f_tc) } diff --git a/man/mkinresplot.Rd b/man/mkinresplot.Rd index 498d914d..9658ddb5 100644 --- a/man/mkinresplot.Rd +++ b/man/mkinresplot.Rd @@ -75,5 +75,5 @@ lines of the mkinfit object, and \code{\link{plot_res}} for a function combining the plot of the fit and the residual plot. } \author{ -Johannes Ranke +Johannes Ranke and Katrin Lindenberger } diff --git a/man/mmkin.Rd b/man/mmkin.Rd index 9b836242..170ce8df 100644 --- a/man/mmkin.Rd +++ b/man/mmkin.Rd @@ -2,6 +2,7 @@ % Please edit documentation in R/mmkin.R \name{mmkin} \alias{mmkin} +\alias{print.mmkin} \title{Fit one or more kinetic models with one or more state variables to one or more datasets} \usage{ @@ -12,6 +13,8 @@ mmkin( cluster = NULL, ... ) + +\method{print}{mmkin}(x, ...) } \arguments{ \item{models}{Either a character vector of shorthand names like @@ -30,7 +33,9 @@ detected by \code{\link[parallel:detectCores]{parallel::detectCores()}} are used \item{cluster}{A cluster as returned by \code{\link{makeCluster}} to be used for parallel execution.} -\item{\dots}{Further arguments that will be passed to \code{\link{mkinfit}}.} +\item{\dots}{Not used.} + +\item{x}{An \link{mmkin} object.} } \value{ A two-dimensional \code{\link{array}} of \code{\link{mkinfit}} diff --git a/man/nlme.mmkin.Rd b/man/nlme.mmkin.Rd index f78256ac..2fb0488a 100644 --- a/man/nlme.mmkin.Rd +++ b/man/nlme.mmkin.Rd @@ -79,6 +79,12 @@ 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. } +\details{ +Note that the convergence of the nlme algorithms depends on the quality +of the data. In degradation kinetics, we often only have few datasets +(e.g. data for few soils) and complicated degradation models, which may +make it impossible to obtain convergence with nlme. +} \note{ As the object inherits from \link[nlme:nlme]{nlme::nlme}, there is a wealth of methods that will automatically work on 'nlme.mmkin' objects, such as @@ -120,11 +126,10 @@ f_nlme_sfo <- nlme(f["SFO", ]) # f_nlme_sfo_sfo_ff <- nlme(f_2["SFO-SFO-ff", ]) #plot(f_nlme_sfo_sfo_ff) - # With the log-Cholesky parameterization, this converges in 11 - # iterations and around 100 seconds, but without tweaking control - # parameters (with pdDiag, increasing the tolerance and pnlsMaxIter was - # necessary) - f_nlme_dfop_sfo <- nlme(f_2["DFOP-SFO", ]) + # For the following, we need to increase pnlsMaxIter and the tolerance + # to get convergence + f_nlme_dfop_sfo <- nlme(f_2["DFOP-SFO", ], + control = list(pnlsMaxIter = 120, tolerance = 5e-4)) plot(f_nlme_dfop_sfo) @@ -144,22 +149,18 @@ f_nlme_sfo <- nlme(f["SFO", ]) print(f_nlme_dfop_tc) } - f_2_obs <- mmkin(list("SFO-SFO" = m_sfo_sfo, - "DFOP-SFO" = m_dfop_sfo), - ds_2, quiet = TRUE, error_model = "obs") + f_2_obs <- update(f_2, error_model = "obs") f_nlme_sfo_sfo_obs <- nlme(f_2_obs["SFO-SFO", ]) print(f_nlme_sfo_sfo_obs) - f_nlme_dfop_sfo_obs <- nlme(f_2_obs["DFOP-SFO", ]) + f_nlme_dfop_sfo_obs <- nlme(f_2_obs["DFOP-SFO", ], + control = list(pnlsMaxIter = 120, tolerance = 5e-4)) - f_2_tc <- mmkin(list("SFO-SFO" = m_sfo_sfo, - "DFOP-SFO" = m_dfop_sfo), - ds_2, quiet = TRUE, error_model = "tc") - # f_nlme_sfo_sfo_tc <- nlme(f_2_tc["SFO-SFO", ]) # stops with error message - f_nlme_dfop_sfo_tc <- nlme(f_2_tc["DFOP-SFO", ]) - # We get warnings about false convergence in the LME step in several iterations - # but as the last such warning occurs in iteration 25 and we have 28 iterations - # we can ignore these - anova(f_nlme_dfop_sfo, f_nlme_dfop_sfo_obs, f_nlme_dfop_sfo_tc) + f_2_tc <- update(f_2, error_model = "tc") + # f_nlme_sfo_sfo_tc <- nlme(f_2_tc["SFO-SFO", ]) # No convergence with 50 iterations + # f_nlme_dfop_sfo_tc <- nlme(f_2_tc["DFOP-SFO", ], + # control = list(pnlsMaxIter = 120, tolerance = 5e-4)) # Error in X[, fmap[[nm]]] <- gradnm + + anova(f_nlme_dfop_sfo, f_nlme_dfop_sfo_obs) } } diff --git a/man/print.mmkin.Rd b/man/print.mmkin.Rd deleted file mode 100644 index 29abe143..00000000 --- a/man/print.mmkin.Rd +++ /dev/null @@ -1,16 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/mmkin.R -\name{print.mmkin} -\alias{print.mmkin} -\title{Print method for mmkin objects} -\usage{ -\method{print}{mmkin}(x, ...) -} -\arguments{ -\item{x}{An \link{mmkin} object.} - -\item{\dots}{Not used.} -} -\description{ -Print method for mmkin objects -} diff --git a/man/transform_odeparms.Rd b/man/transform_odeparms.Rd index f38bb051..3a97ff8d 100644 --- a/man/transform_odeparms.Rd +++ b/man/transform_odeparms.Rd @@ -69,17 +69,21 @@ This is no problem for the internal use in \link{mkinfit}. SFO_SFO <- mkinmod( parent = list(type = "SFO", to = "m1", sink = TRUE), - m1 = list(type = "SFO")) + m1 = list(type = "SFO"), use_of_ff = "min") + # Fit the model to the FOCUS example dataset D using defaults -fit <- mkinfit(SFO_SFO, FOCUS_2006_D, quiet = TRUE) +FOCUS_D <- subset(FOCUS_2006_D, value != 0) # remove zero values to avoid warning +fit <- mkinfit(SFO_SFO, FOCUS_D, quiet = TRUE) fit.s <- summary(fit) # Transformed and backtransformed parameters print(fit.s$par, 3) print(fit.s$bpar, 3) \dontrun{ -# Compare to the version without transforming rate parameters -fit.2 <- mkinfit(SFO_SFO, FOCUS_2006_D, transform_rates = FALSE, quiet = TRUE) +# Compare to the version without transforming rate parameters (does not work +# with analytical solution, we get NA values for m1 in predictions) +fit.2 <- mkinfit(SFO_SFO, FOCUS_D, transform_rates = FALSE, + solution_type = "deSolve", quiet = TRUE) fit.2.s <- summary(fit.2) print(fit.2.s$par, 3) print(fit.2.s$bpar, 3) @@ -93,13 +97,13 @@ transform_odeparms(initials, SFO_SFO) backtransform_odeparms(transformed, SFO_SFO) \dontrun{ -# The case of formation fractions +# The case of formation fractions (this is now the default) SFO_SFO.ff <- mkinmod( parent = list(type = "SFO", to = "m1", sink = TRUE), m1 = list(type = "SFO"), use_of_ff = "max") -fit.ff <- mkinfit(SFO_SFO.ff, FOCUS_2006_D, quiet = TRUE) +fit.ff <- mkinfit(SFO_SFO.ff, FOCUS_D, quiet = TRUE) fit.ff.s <- summary(fit.ff) print(fit.ff.s$par, 3) print(fit.ff.s$bpar, 3) @@ -114,7 +118,7 @@ SFO_SFO.ff.2 <- mkinmod( use_of_ff = "max") -fit.ff.2 <- mkinfit(SFO_SFO.ff.2, FOCUS_2006_D, quiet = TRUE) +fit.ff.2 <- mkinfit(SFO_SFO.ff.2, FOCUS_D, quiet = TRUE) fit.ff.2.s <- summary(fit.ff.2) print(fit.ff.2.s$par, 3) print(fit.ff.2.s$bpar, 3) |