Last chance! 50% off unlimited learning
Sale ends in
nlsList
models fitted using
SSposnegRichards
.pn.mod.compare(x,
y,
grp,
pn.options,
forcemod = 0,
existing = FALSE,
penaliz = "1/sqrt(n)",
taper.ends = 0.45,
mod.subset = c(NA),
...)
list
object populated with starting
parameter estimates, fitting options and boundsnlsList
models in mod.subset will be fitted and rankedextraF
ranked by the modified residual standard error,
and $'P values from pairwise extraF comparison' is a matrix of P values from
extraF
for legitimate comparisons (nested and successfully fitted models).
The naming convention for models is a concatenation of 'richardsR', the modno and '.lis'
which is shortened in the matrix output, where the number of parameters has been
pasted in parentheses to allow users to easily distinguish the more general model from
the more reduced model
(see extraF
and SSposnegRichards
).
For extra flexibility, mod.subset can specify a vector of modno values (a number of different models) that
can be fitted in nlsList
and then evaluated by model selection. This prevents fitting of unwanted models or
attempts to fit models that are known to fail. If the nlsList
model already exists it will not be refitted
and thus existing models can be included in the ranking table without adding noticeably to processing time.SSposnegRichards
) is determined by fitting models 12 and 20 and comparing
their perfomance using extraF
. Note that model 20 is identical to model 32.
If model 12 provides superior performance (variable values of M) then 16 models that estimate M
are run
(models 1 through 16), otherwise the models with fixed M are fitted (models 21 through 36).
Fitting these nlsList
models can be time-consuming (2-4 hours using the dataset
posneg.data
that encompasses 100 individuals) and if several of the relevant
models are already fitted the option existing=TRUE can be used to avoid refitting models that
already exist globally (note that a model object in which no grouping levels were successfully
parameterized will be refitted, as will objects that are not of class nlsList).
Specifying forcemod=3 will force model selection to only consider fixed M models and setting
forcemod=4 will force model selection to consider models with varying values of M only.
If fitting both models
12 and 20 fails, fixed M models will be used by default.
taper.ends can be used to speed up optimization as it extends the dataset at maximum and minimum extremes
of x by repeatedly pasting the y values at these extremes for a specified proportion of the range of x.
taper.ends is a numeric value representing the proportion of the range of x values are extended for and
defaults to 0.45 (45tend towards a zero slope this is a suitable values. If tapered ends are not desirable then choose taper.ends = 0.
Models are ranked by modified pooled residual square error. By default residual standard error
is divided by the square root of sample size. This exponentially penalizes models for which very few
grouping levels (individuals) are successfully parameterized (the few individuals that are
parameterized in these models are fit unsuprisingly well) using a function based on the relationship
between standard error and sample size. However, different users may have different preferences
and these can be specified in the argument penaliz (which residual
standard error is multiplied by). This argument must be a character value
that contains the character n (sample size) and must be a valid right hand side (RHS) of a formula:
e.g. 1*(n), (n)^2. It cannot contain more than one n but could be a custom function, e.g. FUN(n).extraF
SSposnegRichards
nlsList
#these examples will take a long while to run as they have to complete the 32 model comparison
#run model selection for posneg.data object (only first 3 group levels for example's sake)
data(posneg.data)
subdata <- subset(posneg.data, as.numeric(row.names (posneg.data) ) < 40)
modseltable <- pn.mod.compare(subdata$age, subdata$mass,
subdata$id, existing = FALSE, pn.options = "myoptions")
#fit nlsList model initially and then run model selection
#for posneg.data object when at least one model is already fit
# note forcemod is set to 3 so that models 21-36 are evaluated
richardsR22.lis <- nlsList(mass ~ SSposnegRichards(age, Asym = Asym, K = K,
Infl = Infl, RAsym = RAsym, Rk = Rk, Ri = Ri , modno = 22)
,data = posneg.data, pn.options = "myoptions")
modseltable <- pn.mod.compare(subdata$age, subdata$mass,
subdata$id, forcemod = 3, existing = TRUE, pn.options = "myoptions")
#run model selection ranked by residual standard error*sample size
modseltable <- pn.mod.compare(subdata$age, subdata$mass,
subdata$id, penaliz='1*(n)', existing = TRUE, pn.options = "myoptions")
Run the code above in your browser using DataLab