aboutsummaryrefslogtreecommitdiff
path: root/R
diff options
context:
space:
mode:
Diffstat (limited to 'R')
-rw-r--r--R/mkinfit.R6
-rw-r--r--R/parplot.R19
-rw-r--r--R/plot.mixed.mmkin.R2
3 files changed, 18 insertions, 9 deletions
diff --git a/R/mkinfit.R b/R/mkinfit.R
index c851fddb..52053685 100644
--- a/R/mkinfit.R
+++ b/R/mkinfit.R
@@ -21,7 +21,8 @@ utils::globalVariables(c("name", "time", "value"))
#' "FOMC", "DFOP", "HS", "SFORB", "IORE"). If a shorthand name is given, a
#' parent only degradation model is generated for the variable with the
#' highest value in \code{observed}.
-#' @param observed A dataframe with the observed data. The first column called
+#' @param observed A dataframe or an object coercible to a dataframe
+#' (e.g. a \code{tibble}) with the observed data. The first column called
#' "name" must contain the name of the observed variable for each data point.
#' The second column must contain the times of observation, named "time".
#' The third column must be named "value" and contain the observed values.
@@ -292,6 +293,9 @@ mkinfit <- function(mkinmod, observed,
# Get the names of observed variables
obs_vars <- names(mkinmod$spec)
+ # Coerce observed data to a dataframe
+ observed <- as.data.frame(observed)
+
# Subset observed data with names of observed data in the model and remove NA values
observed <- subset(observed, name %in% obs_vars)
observed <- subset(observed, !is.na(value))
diff --git a/R/parplot.R b/R/parplot.R
index 3da4b51a..a33112a5 100644
--- a/R/parplot.R
+++ b/R/parplot.R
@@ -35,9 +35,6 @@ parplot.multistart.saem.mmkin <- function(object, llmin = -Inf, llquant = NA,
scale = c("best", "median"),
lpos = "bottomleft", main = "", ...)
{
- oldpar <- par(no.readonly = TRUE)
- on.exit(par(oldpar, no.readonly = TRUE))
-
orig <- attr(object, "orig")
orig_parms <- parms(orig)
start_degparms <- orig$mean_dp_start
@@ -59,11 +56,10 @@ parplot.multistart.saem.mmkin <- function(object, llmin = -Inf, llquant = NA,
selected <- which(ll > llmin)
selected_parms <- all_parms[selected, ]
- par(las = 1)
if (orig$transformations == "mkin") {
degparm_names_transformed <- names(start_degparms)
degparm_index <- which(names(orig_parms) %in% degparm_names_transformed)
- orig_parms[degparm_names_transformed] <- backtransform_odeparms(
+ orig_degparms <- backtransform_odeparms(
orig_parms[degparm_names_transformed],
orig$mmkin[[1]]$mkinmod,
transform_rates = orig$mmkin[[1]]$transform_rates,
@@ -74,14 +70,17 @@ parplot.multistart.saem.mmkin <- function(object, llmin = -Inf, llquant = NA,
transform_fractions = orig$mmkin[[1]]$transform_fractions)
degparm_names <- names(start_degparms)
- names(orig_parms) <- c(degparm_names, names(orig_parms[-degparm_index]))
+ orig_parms_back <- orig_parms
+ orig_parms_back[degparm_index] <- orig_degparms
+ names(orig_parms_back)[degparm_index] <- degparm_names
+ orig_parms <- orig_parms_back
selected_parms[, degparm_names_transformed] <-
t(apply(selected_parms[, degparm_names_transformed], 1, backtransform_odeparms,
orig$mmkin[[1]]$mkinmod,
transform_rates = orig$mmkin[[1]]$transform_rates,
transform_fractions = orig$mmkin[[1]]$transform_fractions))
- colnames(selected_parms)[1:length(degparm_names)] <- degparm_names
+ colnames(selected_parms)[degparm_index] <- degparm_names
}
start_errparms <- orig$so@model@error.init
@@ -99,6 +98,12 @@ parplot.multistart.saem.mmkin <- function(object, llmin = -Inf, llquant = NA,
# Boxplots of all scaled parameters
selected_scaled_parms <- t(apply(selected_parms, 1, function(x) x / parm_scale))
+ i_negative <- selected_scaled_parms <= 0
+ parms_with_negative_scaled_values <- paste(names(which(apply(i_negative, 2, any))), collapse = ", ")
+ if (any(i_negative)) {
+ warning("There are negative values for ", parms_with_negative_scaled_values, " which are set to NA for plotting")
+ }
+ selected_scaled_parms[i_negative] <- NA
boxplot(selected_scaled_parms, log = "y", main = main, ,
ylab = "Normalised parameters", ...)
diff --git a/R/plot.mixed.mmkin.R b/R/plot.mixed.mmkin.R
index d6c3d0de..f05f1110 100644
--- a/R/plot.mixed.mmkin.R
+++ b/R/plot.mixed.mmkin.R
@@ -93,7 +93,7 @@ plot.mixed.mmkin <- function(x,
nrow.legend = ceiling((length(i) + 1) / ncol.legend),
rel.height.legend = 0.02 + 0.07 * nrow.legend,
rel.height.bottom = 1.1,
- pch_ds = 1:length(i),
+ pch_ds = c(1:25, 33, 35:38, 40:41, 47:57, 60:90)[1:length(i)],
col_ds = pch_ds + 1,
lty_ds = col_ds,
frame = TRUE, ...

Contact - Imprint