Objects 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.
Arguments
- object
An
emmGridobject- ...
Options to be set. These must match a list of known options (see Details)
- silent
Logical value. If
FALSE(the default), a message is displayed if any options are not matched. IfTRUE, no messages are shown.- x
an
emmGridobject- value
listor replacement levels. See the documentation forupdate.emmGridwith thelevelsargument, as well as the section below on “Replaciong levels”- by.vars, mesg
Attributes that can be altered in
update.summary_emm
Value
an updated emmGrid object.
levels<- replaces the levels of the object in-place.
See the section on replacing levels for details.
Note
When it makes sense, an option set by update will persist into
future results based on that object. But some options are disabled as well.
For example, a calc option will be nulled-out if contrast
is called, because it probably will not make sense to do the same
calculations on the contrast results, and in fact the variable(s) needed
may not even still exist.
factor(percent).
Details
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(
listorcharacter) specifies the transformation which, when inverted, determines the results displayed bysummary.emmGrid,predict.emmGrid, oremmipwhentype="response". The value may be the name of a standard transformation frommake.linkor additional ones supported by name, such as"log2"; or, for a custom transformation, alistcontaining at least the functionslinkinv(the inverse of the transformation) andmu.eta(the derivative thereof). Themake.tranfunction returns such lists for a number of popular transformations. See the help page ofmake.tranfor details as well as information on the additional named transformations that are supported.tran2is just liketranexcept it is a second transformation (i.e., a response transformation in a generalized linear model).tran.multMultiple for
tran. For example, for the response transformation 2*sqrt(y) (or sqrt(y) + sqrt(y + 1), for that matter), we should havetran = "sqrt"andtran.mult = 2. If absent, a multiple of 1 is assumed.tran.offsetAdditive constant before a transformation is applied. For example, a response transformation of
log(y + pi)hastran.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 whentype="response".by.vars(
character)vector orNULL) the variables used for grouping in the summary, and also for defining subfamilies in a call tocontrast.pri.vars(
charactervector) are the names of the grid variables that are not inby.vars. Thus, the combinations of their levels are used as columns in each table produced bysummary.emmGrid.alpha(numeric) is the default significance level for tests, in
summary.emmGridas well asplot.emmGridwhen CIs = TRUE. Be cautious that methods that depend on specifyingalphaare prone to abuse. See the discussion invignette("basics", "emmeans").adjust(
character)) is the default for theadjustargument insummary.emmGrid.cross.adjust(
character)) is the default for thecross.adjustargument insummary.emmGrid(used for adjusting between groups).famSize(integer) is the number of means involved in a family of inferences; used in Tukey adjustment
infer(
logicalvector of length 2) is the default value ofinferinsummary.emmGrid.level(numeric) is the default confidence level,
level, insummary.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
summaryortest(taken to be zero if missing).side(numeric or character)
sidespecification for forsummaryortest(taken to be zero if missing).sigma(numeric) Error SD to use in predictions and for bias-adjusted back-transformations
delta(numeric)
deltaspecification forsummaryortest(taken to be zero if missing).predict.typeortype(character) sets the default method of displaying predictions in
summary.emmGrid,predict.emmGrid, andemmip. Valid values are"link"(with synonyms"lp"and"linear"), or"response".bias.adjust,frequentist(logical) These are used by
summaryif the value of these arguments are not specified.estType(
character) is used internally to determine whatadjustmethods 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"); ifestTypeis 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 tocharacter(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 thesummary.emmGriddisplay.methDesc(
character) is a string that may be used for creating names for a list ofemmGridobjects.nesting(Character or named
list) specifies the nesting structure. See “Recovering or overriding model information” in the documentation forref_grid. The current nesting structure is displayed bystr.emmGrid.levelsnamed
listof new levels for the elements of the currentemmGrid. The list name(s) are used as new variable names, and if needed, the list is expanded usingexpand.grid. These results replace current variable names and levels. This specification changes thelevels,grid,roles, andmiscslots in the updatedemmGrid, and resetspri.vars,by.vars,adjust,famSize, andavgd.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 oflevelsis needed in order to distinguish it fromlevel.submodelformulaorcharactervalue specifying a submodel (requires this feature being supported by underlying methods for the model class). When specified, thelinfctslot 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 asfactororpoly) 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 inobject(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 anlmmodel, the joint test of the modified object is in essence a type-2 test as incar::Anova.Please note that it is possible (or even likely) that there will be disparity between the
gridandlinfctslots when a submodel is used. This is becausegridcontains the claimed values of the predictors andlinfctcontains aliases of them computed from the submodel.For some objects such as generalized linear models, specifying
submodelwill 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 thesubmodelcalculations preserve the final weights used in fitting the full model.- (any other slot name)
If the name matches an element of
slotNames(object)other thanlevels, 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, andVmust conform.
Replacing levels
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.
Method for summary_emm objects
This method exists so that we can change the way a summary is displayed, by changing the by variables or the annotations.
Examples
# 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")
#> NOTE: Results may be misleading due to involvement in interactions
#> source response SE df n lower.CL upper.CL
#> fish 29.9 1.12 17 10 27.6 32.3
#> soy 38.9 1.60 17 10 35.7 42.4
#> skim 46.1 1.97 17 9 42.1 50.4
#>
#> Results are averaged over the levels of: percent
#> Confidence level used: 0.95
#> Intervals are back-transformed from the log scale
# Obtain estimates for the additive model
# [Note that the submodel refers to 'percent', not 'factor(percent)']
emmeans(pigs.rg, "source", submodel = ~ source + percent)
#> NOTE: Results may be misleading due to involvement in interactions
#> source response SE df n lower.CL upper.CL
#> fish 29.8 1.10 17 10 27.6 32.2
#> soy 39.1 1.48 17 10 36.1 42.4
#> skim 44.6 1.77 17 9 41.0 48.5
#>
#> Results are averaged over the levels of: percent
#> submodel: ~ source + percent
#> Confidence level used: 0.95
#> Intervals are back-transformed from the log scale
# Type II ANOVA
joint_tests(pigs.rg, submodel = "type2")
#> model term df1 df2 F.ratio p.value
#> source 2 17 28.291 <.0001
#> percent 3 17 7.827 0.0017
#> source:percent 6 17 0.926 0.5011
#>
## Changing levels of one factor
newrg <- pigs.rg
levels(newrg)$source <- 1:3
newrg
#> source percent response SE df n
#> 1 9 25.7 2.11 17 2
#> 2 9 34.4 2.31 17 3
#> 3 9 35.2 2.36 17 3
#> 1 12 30.9 2.07 17 3
#> 2 12 39.6 2.66 17 3
#> 3 12 43.2 2.90 17 3
#> 1 15 31.0 2.55 17 2
#> 2 15 39.2 2.63 17 3
#> 3 15 49.6 4.08 17 2
#> 1 18 32.3 2.17 17 3
#> 2 18 42.9 4.99 17 1
#> 3 18 59.8 6.95 17 1
#>
## 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
#> machine zd prediction SE df
#> A -2 30.7 2.020 9
#> B -2 34.2 2.470 9
#> C -2 31.1 1.410 9
#> A -1 35.4 1.280 9
#> B -1 37.9 1.580 9
#> C -1 34.8 0.803 9
#> A 0 40.2 0.777 9
#> B 0 41.6 0.858 9
#> C 0 38.5 0.966 9
#> A 1 45.0 0.979 9
#> B 1 45.3 0.929 9
#> C 1 42.3 1.690 9
#> A 2 49.8 1.650 9
#> B 2 49.0 1.690 9
#> C 2 46.0 2.520 9
#>
lev <- levels(fibz.rg)
levels(fibz.rg) <- list (
machine = lev$machine,
diameter = with(attributes(zd),
`scaled:center` + `scaled:scale` * lev$zd) )
fibz.rg
#> machine diameter prediction SE df
#> A 15.5 30.7 2.020 9
#> B 15.5 34.2 2.470 9
#> C 15.5 31.1 1.410 9
#> A 19.8 35.4 1.280 9
#> B 19.8 37.9 1.580 9
#> C 19.8 34.8 0.803 9
#> A 24.1 40.2 0.777 9
#> B 24.1 41.6 0.858 9
#> C 24.1 38.5 0.966 9
#> A 28.5 45.0 0.979 9
#> B 28.5 45.3 0.929 9
#> C 28.5 42.3 1.690 9
#> A 32.8 49.8 1.650 9
#> B 32.8 49.0 1.690 9
#> C 32.8 46.0 2.520 9
#>
### Compactify results with a by variable
update(joint_tests(pigs.rg, by = "source"), by = NULL)
#> model term source df1 df2 F.ratio p.value
#> percent fish 3 17 1.712 0.2023
#> percent soy 3 17 1.290 0.3097
#> percent skim 3 17 6.676 0.0035
#>
