R: Performs backward elimination of non-significant effects of...
step
R Documentation
Performs backward elimination of non-significant effects of linear mixed effects model:
Description
performs automatic backward elimination of all effects of linear mixed effect model. First backward elimination of the random part is performed following by backward elimination of the fixed part. Finally LSMEANS (population means) and differences of LSMEANS for the fixed part of the model are calculated and the final model is provided. The p-values for the fixed effects are calculated from F test based on Sattethwaite's or Kenward-Roger approximation), p-values for the random effects are based on likelihood ratio test. All analysis may be performed on lmer object of lme4 package.
approximation for denominator degrees of freedom. By default Satterthwaite's
approximation. ddf="Kenward-Roger"" calculates Kenward-Roger approximation
type
type of hypothesis to be tested (SAS notation). Either type=1 or type=3.
alpha.random
significance level for elimination of the random part (for LRT test)
alpha.fixed
significance level for elimination of the fixed part (for F test and t-test for least squares means)
reduce.fixed
logical for whether the reduction of the fixed part is required
reduce.random
logical for whether the reduction of the random part is required
fixed.calc
logical for whether the calculation of the table for fixed effects is needed.
If FALSE then only the analysis of random effects is done
lsmeans.calc
logical for whether the calculation of LSMEANS(population means) is required
difflsmeans.calc
logical for whether the calculation of differences of LSMEANS is required
test.effs
charachter vector specifying the names of terms to be tested in LSMEANS.
If NULL all the terms are tested. If lsmeans.calc==FALSE then
LSMEANS are not calculated.
keep.effs
charachter vector specifying the names of terms to be kept in the model
even if being non-significant
...
other potential arguments.
Details
Elimination of all effects is done one at a time.
Elimination of the fixed part is done by the principle of marginality that is: the highest order interactions are tested first: if they are significant, the lower order effects are not tested for significance.
The step function of lmerTest overrides the one from stats package for lm objects. So if the
lmerTest is attached and one wants to call step fof lm object, then needs to use stats::step
Value
rand.table
data frame with value of Chi square statistics, p-values for the likelihood ratio test for random effects
anova.table
data frame with tests for whether the model fixed terms are significant (Analysis of Variance)
lsmeans.table
Least Squares Means data frame with p-values and Confidence intervals
diffs.lsmeans.table
Differences of Least Squares Means data frame with p-values and Confidence intervals
model
Final model - object of merLmerTest(contains mer class) or gls (after all the required reduction has been performed)
Note
For the random coefficient models: in the random part if correlation is present between slope and intercept, then the simplified model will contain just an intercept. That is if the random part of the initial model is (1+c|f), then this model is compared to (1|f) by using LRT. If there are multiple slopes, then the the slope with the highest p-value (and higher then alpha level) is eliminated. That is if the random part of the initial model has the following form (1+c1+c2|f), then two simplified models are constracted and compared to the initial one: the first one has (1+c1|f) in the random part and the second one has: (1+c2|f).
Author(s)
Alexandra Kuznetsova, Per Bruun Brockhoff, Rune Haubo Bojesen Christensen
See Also
rand, lsmeans, difflsmeans
Examples
#import lme4 package and lmerTest package
library(lmerTest)
## Not run:
m <- lmer(Informed.liking ~ Product*Information*Gender+
(1|Consumer) + (1|Product:Consumer), data=ham)
#elimination of non-significant effects
s <- step(m)
#plot of post-hoc analysis of the final model
plot(s)
m <- lmer(Coloursaturation ~ TVset*Picture+
(1|Assessor)+(1|Assessor:TVset), data=TVbo)
step(m, keep.effs = "Assessor")
## End(Not run)