varConstProp | R Documentation |
This function is a constructor for the varConstProp
class,
representing a variance function structure corresponding to
a two-component error model (additive and proportional error). Letting
v
denote the variance covariate and \sigma^2(v)
denote the variance function evaluated at v
, the two-component variance
function is defined as
\sigma^2(v) = a^2 + b^2 * v^{2}
, where a is
the additive component and b is the relative error component. In order
to avoid overparameterisation of the model, it is recommended to use
the possibility to fix sigma, preferably to a value of 1 (see examples).
varConstProp(const, prop, form, fixed)
const, prop |
optional numeric vectors, or lists of numeric
values, with, respectively, the coefficients for the constant
and the proportional error terms. Both arguments must have length one,
unless a grouping factor is specified in |
form |
an optional one-sided formula of the form |
fixed |
an optional list with components |
a varConstProp
object representing a constant plus proportion variance
function structure, also inheriting from class varFunc
.
The error model underlying this variance function structure can be understood
to result from two uncorrelated sequences of standardized random variables
(Lavielle(2015), p. 55) and has been proposed for use in analytical chemistry
(Werner et al. (1978), Wilson et al. (2004)) and chemical degradation
kinetics (Ranke and Meinecke (2019)). Note that the two-component error
model proposed by Rocke and Lorenzato (1995) assumed a log-normal
distribution of residuals at high absolute values, which is not
compatible with the varFunc
structures in package nlme.
José Pinheiro and Douglas Bates (for varConstPower
) and
Johannes Ranke (adaptation to varConstProp()
).
Lavielle, M. (2015) Mixed Effects Models for the Population Approach: Models, Tasks, Methods and Tools, Chapman and Hall/CRC. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1201/b17203")}
Pinheiro, J.C., and Bates, D.M. (2000) Mixed-Effects Models in S and S-PLUS, Springer. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1007/b98882")}
Ranke, J., and Meinecke, S. (2019) Error Models for the Kinetic Evaluation of Chemical Degradation Data. Environments 6(12), 124 \Sexpr[results=rd]{tools:::Rd_expr_doi("10.3390/environments6120124")}
Rocke, David M. and Lorenzato, Stefan (1995) A Two-Component Model for Measurement Error in Analytical Chemistry. Technometrics 37(2), 176–184. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1080/00401706.1995.10484302")}
Werner, Mario, Brooks, Samuel H., and Knott, Lancaster B. (1978) Additive, Multiplicative, and Mixed Analytical Errors. Clinical Chemistry 24(11), 1895–1898. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1093/clinchem/24.11.1895")}
Wilson, M.D., Rocke, D.M., Durbin, B. and Kahn, H.D (2004) Detection Limits and Goodness-of-Fit Measures for the Two-Component Model of Chemical Analytical Error. Analytica Chimica Acta 2004, 509, 197–208 \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1016/j.aca.2003.12.047")}
varClasses
,
varWeights.varFunc
,
coef.varFunc
# Generate some synthetic data using the two-component error model and use
# different variance functions, also with fixed sigma in order to avoid
# overparameterisation in the case of a constant term in the variance function
times <- c(0, 1, 3, 7, 14, 28, 56, 120)
pred <- 100 * exp(- 0.03 * times)
sd_pred <- sqrt(3^2 + 0.07^2 * pred^2)
n_replicates <- 2
set.seed(123456)
syn_data <- data.frame(
time = rep(times, each = n_replicates),
value = rnorm(length(times) * n_replicates,
rep(pred, each = n_replicates),
rep(sd_pred, each = n_replicates)))
syn_data$value <- ifelse(syn_data$value < 0, NA, syn_data$value)
f_const <- gnls(value ~ SSasymp(time, 0, parent_0, lrc),
data = syn_data, na.action = na.omit,
start = list(parent_0 = 100, lrc = -3))
f_varPower <- gnls(value ~ SSasymp(time, 0, parent_0, lrc),
data = syn_data, na.action = na.omit,
start = list(parent_0 = 100, lrc = -3),
weights = varPower())
f_varConstPower <- gnls(value ~ SSasymp(time, 0, parent_0, lrc),
data = syn_data, na.action = na.omit,
start = list(parent_0 = 100, lrc = -3),
weights = varConstPower())
f_varConstPower_sf <- gnls(value ~ SSasymp(time, 0, parent_0, lrc),
data = syn_data, na.action = na.omit,
control = list(sigma = 1),
start = list(parent_0 = 100, lrc = -3),
weights = varConstPower())
f_varConstProp <- gnls(value ~ SSasymp(time, 0, parent_0, lrc),
data = syn_data, na.action = na.omit,
start = list(parent_0 = 100, lrc = -3),
weights = varConstProp())
f_varConstProp_sf <- gnls(value ~ SSasymp(time, 0, parent_0, lrc),
data = syn_data, na.action = na.omit,
start = list(parent_0 = 100, lrc = -3),
control = list(sigma = 1),
weights = varConstProp())
AIC(f_const, f_varPower, f_varConstPower, f_varConstPower_sf,
f_varConstProp, f_varConstProp_sf)
# The error model parameters 3 and 0.07 are approximately recovered
intervals(f_varConstProp_sf)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.