partial is used to calculate partial effects of a (generalized)
linear mixed-effects model fitted by a function of the
1 2 3 4 5 6 7 8 9
a model object.
either a character vector of coefficient labels (fixed effects) or a corresponding numeric index vector.
a named list of integer vectors representing random effects.
logical. Should terms associated with the ones
logical. Should the intercept be kept (default) or be removed?
logical. Should the specified effects be removed (default) or be kept?
model is an object returned by a model fitting
function of the lme4 package.
The function works with both linear mixed-effects models
(returned by the function
lmer) and generalized linear
mixed-effects models (
The model formula for a (generalised) linear mixed-effects model can be written as
y = X * beta + Z * b + epsilon
where y is the vector including the response values, X is the (fixed-effects) design matrix, beta is the vector of population coefficients (fixed effecs), Z is the random-effects design matrix, b is a vector of random effects, and epsilon is a vector of random error terms (residuals).
The response vector can be represented as a sum of fixed effects,
random effects, and residuals. In order to construct partial effects,
partial either "removes" effects (if
keep = FALSE, see also
remef) or "keeps"
keep = TRUE, see also
In both cases, the function does keep the residuals. Hence,
the function does not return fitted values.
The function removes a subset of fixed and random effects from the response variable. If all effects are removed, only the residuals remain.
The valid character strings for the parameter
correspond to the names of the coeffcients in the model summary output.
Note that the name of a coefficient is not necessarily identical to the
name of a predictor variable (e.g., factor variables). Furthermore,
a single variable in a model formula can result in multiple
model coefficients (e.g., polynomial contrasts). The names of a model
fit can be extracted with the function
The character string passed to
fix must not include the
"(Intercept)"). Use the parameter
fix is a numeric index vector, the indices correspond
to the order of coefficients in the model. For a fitted model object,
effect_labels returns the names of the coefficients in their
order. Note that
fix must not include the index of the
1). Use the parameter
ran is used to specify random effects.
The names of the list passed to
ran correspond to the names
of the random factors in the model summary.
Alternatively, the string
"all" can pe passed to
which results in the selection of all random effects.
FALSE, only the specified fixed effects in
fix are used.
TRUE, associated effects of lower
or higher order are used too. The actual behaviour of the
function depends on the
keep parameter: If
keep = FALSE
(effects are "removed"),
grouping specifies whether effects of
higher order should be selected and removed as well. Otherwise, if
keep = TRUE (effects are "kept"),
whether effects of lower order should be selected and kept as well.
if a model fit has the terms
A:B:C, terms of
higher order relative to
A:B:C. Terms of lower order relative to
inverse is only important for generalised
linear mixed-effects models (in contrast to linear mixed-effects
models). In the former type of statistical models, a link function
is specified to transform the response variable.
partial is used with such a type of model, the resulting
values will be in the metric of the variable after after the
transformation. For example, if the response is binary and a model with
the binomial distribution using the logit link funtion is fit,
partial will return
inverse = TRUE in which case logits will be
transformed to proportions after the removal of effects.
partial returns a numeric vector. The length equals
the number of observations in the model.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
library(lme4) fm1 <- lmer(Reaction ~ 1 + Days + (1 + Days | Subject), sleepstudy) summary(fm1) # remove fixed effect of 'Days' p1_1 <- partial(fm1, fix = "Days") # remove fixed effect of 'Days' and the intercept p1_2 <- partial(fm1, fix = "Days", keep.intercept = FALSE) # remove random slope of 'Days' (random factor: 'Subject') p1_3 <- partial(fm1, ran = list(Subject = "Days")) # remove fixed effect of 'Days' and both random effects p1_4 <- partial(fm1, fix = "Days", ran = list(Subject = c("(Intercept)", "Days"))) # equivalent command with numeric indices p1_5 <- partial(fm1, fix = 2, ran = list(Subject = c(1, 2))) # keep the fixed effect of 'Days' (and the intercept), remove all other effects p1_6 <- partial(fm1, fix = "Days", keep = FALSE) # remove all effects p1_7 <- partial(fm1, fix = 2, ran = "all", keep.intercept = FALSE) p1_8 <- partial(fm1, keep = TRUE, keep.intercept = FALSE) # equivalent command all.equal(unname(residuals(fm1)), p1_7) fm2 <- glmer(r2 ~ 1 + btype + Anger + (1 + Anger || item) + (1 | id), VerbAgg, family = binomial) summary(fm2) # remove fixed effects of 'btype' # (since 'btype' is a three-level factor, two coefficients are estimated, 'btypescold' and 'btypeshout') p2_1 <- partial(fm2, fix = c("btypescold", "btypeshout")) # extract coefficient names related to 'btype' term2coef(fm2, "btype") #' # since `fm2` is a binomial GLMM, the partial effects are logits, # the parameter `inverse` can be used to return probablities instead p2_1_prob <- partial(fm2, fix = c("btypescold", "btypeshout"), inverse = TRUE) # remove all random effects # (Note that the order of random effects for the random factor 'item' is: # 'Anger', '(Intercept)'; see `summary(fm2)`) p2_2 <- partial(fm2, ran = list(item = c(1, 2), id = 1)) p2_3 <- partial(fm2, ran = "all") # equivalent command fm3 <- lmer(angle ~ 1 + recipe * temperature + (1 | recipe:replicate), cake) summary(fm3) # remove the random intercept p3_1 <- partial(fm3, ran = list("recipe:replicate" = 1)) # remove fixed effect of 'recipeB' and all higher-order terms (interactions) p3_2 <- partial(fm3, fix = "recipeB", grouping = TRUE) # these are the higher-order terms of 'recipeB' asef(fm3, "recipeB", order = "higher") # keep fixed effect 'recipeB:temperature^4' and the lower-order ones (and the intercept) p3_3 <- keepef(fm3, fix = "recipeB:temperature^4", grouping = TRUE) # these are the lower-order terms of 'recipeB:temperature^4' asef(fm3, "recipeB:temperature^4", order = "lower") # remove all polynomials of 'temperature' p3_4 <- partial(fm3, fix = term2coef(fm3, "temperature"))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.