\name{add_err} \alias{add_err} \title{ Add normally distributed errors to simulated kinetic degradation data } \description{ Normally distributed errors are added to data predicted for a specific degradation model using \code{\link{mkinpredict}}. The variance of the error may depend on the predicted value and is specified as a standard deviation. } \usage{ add_err(prediction, sdfunc, secondary = c("M1", "M2"), n = 1000, LOD = 0.1, reps = 2, digits = 1, seed = NA) } \arguments{ \item{prediction}{ A prediction from a kinetic model as produced by \code{\link{mkinpredict}}. } \item{sdfunc}{ A function taking the predicted value as its only argument and returning a standard deviation that should be used for generating the random error terms for this value. } \item{secondary}{ The names of state variables that should have an initial value of zero } \item{n}{ The number of datasets to be generated. } \item{LOD}{ The limit of detection (LOD). Values that are below the LOD after adding the random error will be set to NA. } \item{reps}{ The number of replicates to be generated within the datasets. } \item{digits}{ The number of digits to which the values will be rounded. } \item{seed}{ The seed used for the generation of random numbers. If NA, the seed is not set. } } \value{ A list of datasets compatible with \code{\link{mmkin}}, i.e. the components of the list are datasets compatible with \code{\link{mkinfit}}. } \references{ Ranke J and Lehmann R (2015) To t-test or not to t-test, that is the question. XV Symposium on Pesticide Chemistry 2-4 September 2015, Piacenza, Italy http://chem.uft.uni-bremen.de/ranke/posters/piacenza_2015.pdf } \author{ Johannes Ranke } \examples{ # The kinetic model m_SFO_SFO <- mkinmod(parent = mkinsub("SFO", "M1"), M1 = mkinsub("SFO"), use_of_ff = "max") # Generate a prediction for a specific set of parameters sampling_times = c(0, 1, 3, 7, 14, 28, 60, 90, 120) # This is the prediction used for the "Type 2 datasets" on the Piacenza poster # from 2015 d_SFO_SFO <- mkinpredict(m_SFO_SFO, c(k_parent = 0.1, f_parent_to_M1 = 0.5, k_M1 = log(2)/1000), c(parent = 100, M1 = 0), sampling_times) # Add an error term with a constant (independent of the value) standard deviation # of 10, and generate three datasets d_SFO_SFO_err <- add_err(d_SFO_SFO, function(x) 10, n = 3, seed = 123456789 ) # Name the datasets for nicer plotting names(d_SFO_SFO_err) <- paste("Dataset", 1:3) # Name the model in the list of models (with only one member in this case) # for nicer plotting later on. # Be quiet and use the faster Levenberg-Marquardt algorithm, as the datasets # are easy and examples are run often. Use only one core not to offend CRAN # checks f_SFO_SFO <- mmkin(list("SFO-SFO" = m_SFO_SFO), d_SFO_SFO_err, cores = 1, quiet = TRUE, method.modFit = "Marq") plot(f_SFO_SFO) # We would like to inspect the fit for dataset 3 more closely # Using double brackets makes the returned object an mkinfit object # instead of a list of mkinfit objects, so plot.mkinfit is used plot(f_SFO_SFO[[3]], show_residuals = TRUE) # If we use single brackets, we should give two indices (model and dataset), # and plot.mmkin is used plot(f_SFO_SFO[1, 3]) } \keyword{ manip }