emmGrid
objectObjects of class emmGrid
contain several settings that affect such things as
what arguments to pass to summary.emmGrid
.
The update
method allows safer management of these settings than
by direct modification of its slots.
# S3 method for emmGrid
update(object, ..., silent = FALSE)# S3 method for emmGrid
levels(x) <- value
# S3 method for summary_emm
update(object, by.vars, mesg, ...)
an updated emmGrid
object.
levels<-
replaces the levels of the object in-place.
See the section on replacing levels for details.
An emmGrid
object
Options to be set. These must match a list of known options (see Details)
Logical value. If FALSE
(the default), a message is
displayed if any options are not matched. If TRUE
, no messages are
shown.
an emmGrid
object
list
or replacement levels. See the documentation for
update.emmGrid
with the levels
argument,
as well as the section below on “Replaciong levels”
Attributes that can be altered in update.summary_emm
The levels<-
method uses update.emmGrid
to replace the
levels of one or more factors. This method allows selectively replacing
the levels of just one factor (via subsetting operators), whereas
update(x, levels = list(...))
requires a list of all factors
and their levels. If any factors are to be renamed, we must replace all
levels and include the new names in the replacements. See the examples.
This method exists so that we can change the way a summary is displayed, by changing the by variables or the annotations.
The names in ...
are partially matched against those that are valid, and if a match is found, it adds or replaces the current setting. The valid names are
tran
, tran2
(list
or character
) specifies
the transformation which, when inverted, determines the results displayed by
summary.emmGrid
, predict.emmGrid
, or emmip
when
type="response"
. The value may be the name of a standard
transformation from make.link
or additional ones supported by
name, such as "log2"
; or, for a custom transformation, a list
containing at least the functions linkinv
(the inverse of the
transformation) and mu.eta
(the derivative thereof). The
make.tran
function returns such lists for a number of popular
transformations. See the help page of make.tran
for details as
well as information on the additional named transformations that are
supported. tran2
is just like tran
except it is a second
transformation (i.e., a response transformation in a generalized linear
model).
tran.mult
Multiple for tran
. For example, for the
response transformation 2*sqrt(y) (or sqrt(y) + sqrt(y + 1),
for that matter), we should have tran = "sqrt"
and tran.mult =
2
. If absent, a multiple of 1 is assumed.
tran.offset
Additive constant before a transformation is applied.
For example, a response transformation of log(y + pi)
has
tran.offset = pi
. If no value is present, an offset of 0 is assumed.
estName
(character
) is the column label used for
displaying predictions or EMMs.
inv.lbl
(character)
) is the column label to use for
predictions or EMMs when type="response"
.
by.vars
(character)
vector or NULL
) the variables
used for grouping in the summary, and also for defining subfamilies in a call
to contrast
.
pri.vars
(character
vector) are the names of the grid
variables that are not in by.vars
. Thus, the combinations of their
levels are used as columns in each table produced by summary.emmGrid
.
alpha
(numeric) is the default significance level for tests, in
summary.emmGrid
as well as plot.emmGrid
when CIs = TRUE. Be cautious that methods that depend on
specifying alpha
are prone to abuse. See the
discussion in vignette("basics", "emmeans")
.
adjust
(character)
) is the default for the adjust
argument in summary.emmGrid
.
cross.adjust
(character)
) is the default for the cross.adjust
argument in summary.emmGrid
(used for adjusting between groups).
famSize
(integer) is the number of means involved in a family of inferences; used in Tukey adjustment
infer
(logical
vector of length 2) is the default value
of infer
in summary.emmGrid
.
level
(numeric) is the default confidence level, level
,
in summary.emmGrid
. Note: You must specify all five letters
of ‘level’ to distinguish it from the slot name ‘levels’.
df
(numeric) overrides the default degrees of freedom with a specified single value.
calc
(list) additional calculated columns. See summary.emmGrid
.
null
(numeric) null hypothesis for summary
or
test
(taken to be zero if missing).
side
(numeric or character) side
specification for for
summary
or test
(taken to be zero if missing).
sigma
(numeric) Error SD to use in predictions and for bias-adjusted back-transformations
delta
(numeric) delta
specification for summary
or test
(taken to be zero if missing).
predict.type
or type
(character) sets the default method
of displaying predictions in summary.emmGrid
,
predict.emmGrid
, and emmip
. Valid values are
"link"
(with synonyms "lp"
and "linear"
), or
"response"
.
bias.adjust
, frequentist
(logical) These
are used by summary
if the value of these arguments are not specified.
estType
(character
) is used internally to determine
what adjust
methods are appropriate. It should match one of
c("prediction", "contrast", "pairs"). As an example of why this is needed,
the Tukey adjustment should only be used for pairwise comparisons
(estType = "pairs"
); if estType
is some other string, Tukey
adjustments are not allowed.
avgd.over
(character)
vector) are the names of the
variables whose levels are averaged over in obtaining marginal averages of
predictions, i.e., estimated marginal means. Changing this might produce a
misleading printout, but setting it to character(0)
will suppress the
“averaged over” message in the summary.
initMesg
(character
) is a string that is added to the
beginning of any annotations that appear below the summary.emmGrid
display.
methDesc
(character
) is a string that may be used for
creating names for a list of emmGrid
objects.
nesting
(Character or named list
) specifies the nesting
structure. See “Recovering or overriding model information” in the
documentation for ref_grid
. The current nesting structure is
displayed by str.emmGrid
.
levels
named list
of new levels for the elements of the
current emmGrid
. The list name(s) are used as new variable names, and
if needed, the list is expanded using expand.grid
. These results replace
current variable names and levels. This specification changes the levels
,
grid
, roles
, and misc
slots in the updated emmGrid
,
and resets pri.vars
, by.vars
, adjust
, famSize
,
and avgd.over
. In addition, if there is nesting of factors, that may be
altered; a warning is issued if it involves something other than mere name changes.
Note: All six letters of levels
is needed in order to distinguish
it from level
.
submodel
formula
or character
value specifying a
submodel (requires this feature being supported by underlying methods
for the model class). When specified, the linfct
slot is replaced by
its aliases for the specified sub-model. Any factors in the sub-model that
do not appear in the model matrix are ignored, as are any interactions that
are not in the main model, and any factors associate with multivariate responses.
The estimates displayed are then computed as if
the sub-model had been fitted. (However, the standard errors will be based on the
error variance(s) of the full model.)
Note: The formula should refer only to predictor names, excluding any
function calls (such as factor
or poly
) that appear in the
original model formula. See the example.
The character values allowed should partially
match "minimal"
or "type2"
. With "minimal"
, the sub-model
is taken to be the one only involving the surviving factors in object
(the ones averaged over being omitted). Specifying "type2"
is the same as
"minimal"
except only the highest-order term in the submodel is retained,
and all effects not containing it are orthogonalized-out. Thus, in a purely linear
situation such as an lm
model, the joint test
of the modified object is in essence a type-2 test as in car::Anova
.
Please note that it is possible (or even likely) that there will be disparity
between the grid
and linfct
slots when a submodel is used. This is
because grid
contains the claimed values of the predictors and
linfct
contains aliases of them computed from the submodel.
For some objects such as generalized linear models, specifying submodel
will typically not produce the same estimates or type-2 tests as would be
obtained by actually fitting a separate model with those specifications.
The reason is that those models are fitted by iterative-reweighting methods,
whereas the submodel
calculations preserve the final weights used in
fitting the full model.
If the name matches an element of
slotNames(object)
other than levels
, that slot is replaced by
the supplied value, if it is of the required class (otherwise an error occurs).
The user must be very careful in
replacing slots because they are interrelated; for example, the lengths
and dimensions of grid
, linfct
, bhat
, and V
must
conform.
emm_options
# Using an already-transformed response:
pigs.lm <- lm(log(conc) ~ source * factor(percent), data = pigs)
# Reference grid that knows about the transformation
# and asks to include the sample size in any summaries:
pigs.rg <- update(ref_grid(pigs.lm), tran = "log",
predict.type = "response",
calc = c(n = ~.wgt.))
emmeans(pigs.rg, "source")
# Obtain estimates for the additive model
# [Note that the submodel refers to 'percent', not 'factor(percent)']
emmeans(pigs.rg, "source", submodel = ~ source + percent)
# Type II ANOVA
joint_tests(pigs.rg, submodel = "type2")
## Changing levels of one factor
newrg <- pigs.rg
levels(newrg)$source <- 1:3
newrg
## Unraveling a previously standardized covariate
zd = scale(fiber$diameter)
fibz.lm <- lm(strength ~ machine * zd, data = fiber)
(fibz.rg <- ref_grid(fibz.lm, at = list(zd = -2:2))) ### 2*SD range
lev <- levels(fibz.rg)
levels(fibz.rg) <- list (
machine = lev$machine,
diameter = with(attributes(zd),
`scaled:center` + `scaled:scale` * lev$zd) )
fibz.rg
### Compactify results with a by variable
update(joint_tests(pigs.rg, by = "source"), by = NULL)
Run the code above in your browser using DataLab