General linear hypotheses and multiple comparisons for parametric models, including generalized linear models, linear mixed effects models, and survival models.
aovetc. It is assumed that
vcovmethods are available for
model. For multiple comparisons of means, methods
termsare expected to be available for
glhtmethods. For function
mcp, multiple comparisons are defined by matrices or symbolic descriptions specifying contrasts of factor levels where the arguments correspond to factor names.
"glht"(model, linfct, alternative = c("two.sided", "less", "greater"), rhs = 0, ...) "glht"(model, linfct, ...) "glht"(model, linfct, ...) "glht"(model, linfct, ...) "glht"(model, linfct, ...) mcp(..., interaction_average = FALSE, covariate_average = FALSE)
A general linear hypothesis refers to null hypotheses of the form $H_0: K \theta = m$ for some parametric model
model with parameter estimates
The null hypothesis is specified by a linear function $K \theta$, the direction of the alternative and the right hand side $m$. Here,
alternative equal to
"two.sided" refers to
a null hypothesis $H_0: K \theta = m$, whereas
"less" corresponds to $H_0: K \theta \ge m$ and
"greater" refers to
$H_0: K \theta \le m$. The right hand side vector $m$ can be defined
The generic method
glht dispatches on its second argument
linfct). There are three ways, and thus methods,
to specify linear functions to be tested:
matrix of coefficients $K$ can be specified directly
linfct argument. In this case,
the number of columns of this matrix needs to correspond to the number of
parameters estimated by
model. It is assumed that
vcov methods are available
modelparm deals with some exceptions).
2) A symbolic description, either a
expression vector passed to
linfct argument, can be used to define
the null hypothesis. A symbolic description must be interpretable as a valid
R expression consisting of both the left and right hand side
of a linear hypothesis.
Only the names of
coef(model) must be used as variable
names. The alternative is given by
the direction under the null hypothesis (
<=< code=""> means
"less"). Numeric vectors of length one
are valid values for the right hand side.
3) Multiple comparisons of means are defined by objects
mcp as returned by the
For each factor, which is included in
as independent variable,
a contrast matrix or a symbolic description of the contrasts
can be specified as arguments to
mcp. A symbolic
description may be a
where the factor levels
are only used as variables names. In addition,
type argument to the contrast generating function
contrMat may serve as a symbolic description of
contrasts as well.
lsm function in package
lsmeans offers a symbolic
interface for the definition of least-squares means for factor combinations
which is very helpful when more complex contrasts are of special interest.
mcp function must be used with care when defining parameters
of interest in two-way ANOVA or ANCOVA models. Here, the definition
of treatment differences (such as Tukey's all-pair comparisons or Dunnett's
comparison with a control) might be problem specific.
Because it is impossible to determine the parameters of interest
automatically in this case,
mcp in multcomp
version 1.0-0 and higher generates comparisons for the main effects
only, ignoring covariates and interactions (older versions
automatically averaged over interaction terms). A warning is given. We refer to
Hsu (1996), Chapter 7, and Searle (1971), Chapter 7.3,
for further discussions and examples on this
glht extracts the number of degrees of freedom
for models of class
modelparm) and the
exact multivariate t distribution is evaluated. For all other
models, results rely on the normal approximation. Alternatively, the
degrees of freedom to be used for the evaluation of multivariate
t distributions can be given by the additional
df argument to
modelparm specified via
glht methods return a specification of the null hypothesis
$H_0: K \theta = m$. The value of the linear function
$K \theta$ can be extracted using the
coef method and
the corresponding covariance matrix is available from the
vcov method. Various simultaneous and univariate tests and
confidence intervals are available from
confint.glht methods, respectively.
A more detailed description of the underlying methodology is available from Hothorn et al. (2008) and Bretz et al. (2010).
glht, more specifically a list with elements
vcovmethods being available. When called with
mcpobject, an additional element
focusis available storing the names of the factors under test.
### multiple linear model, swiss data lmod <- lm(Fertility ~ ., data = swiss) ### test of H_0: all regression coefficients are zero ### (ignore intercept) ### define coefficients of linear function directly K <- diag(length(coef(lmod)))[-1,] rownames(K) <- names(coef(lmod))[-1] K ### set up general linear hypothesis glht(lmod, linfct = K) ### alternatively, use a symbolic description ### instead of a matrix glht(lmod, linfct = c("Agriculture = 0", "Examination = 0", "Education = 0", "Catholic = 0", "Infant.Mortality = 0")) ### multiple comparison procedures ### set up a one-way ANOVA amod <- aov(breaks ~ tension, data = warpbreaks) ### set up all-pair comparisons for factor `tension' ### using a symbolic description (`type' argument ### to `contrMat()') glht(amod, linfct = mcp(tension = "Tukey")) ### alternatively, describe differences symbolically glht(amod, linfct = mcp(tension = c("M - L = 0", "H - L = 0", "H - M = 0"))) ### alternatively, define contrast matrix directly contr <- rbind("M - L" = c(-1, 1, 0), "H - L" = c(-1, 0, 1), "H - M" = c(0, -1, 1)) glht(amod, linfct = mcp(tension = contr)) ### alternatively, define linear function for coef(amod) ### instead of contrasts for `tension' ### (take model contrasts and intercept into account) glht(amod, linfct = cbind(0, contr %*% contr.treatment(3))) ### mix of one- and two-sided alternatives warpbreaks.aov <- aov(breaks ~ wool + tension, data = warpbreaks) ### contrasts for `tension' K <- rbind("L - M" = c( 1, -1, 0), "M - L" = c(-1, 1, 0), "L - H" = c( 1, 0, -1), "M - H" = c( 0, 1, -1)) warpbreaks.mc <- glht(warpbreaks.aov, linfct = mcp(tension = K), alternative = "less") ### correlation of first two tests is -1 cov2cor(vcov(warpbreaks.mc)) ### use smallest of the two one-sided ### p-value as two-sided p-value -> 0.0232 summary(warpbreaks.mc)
Frank Bretz, Torsten Hothorn and Peter Westfall (2010),
Multiple Comparisons Using R, CRC Press, Boca Raton.
Shayle R. Searle (1971), Linear Models.
John Wiley \& Sons, New York.
Jason C. Hsu (1996), Multiple Comparisons.
Chapman & Hall, London.
Torsten Hothorn, Frank Bretz and Peter Westfall (2008),
Simultaneous Inference in General Parametric Models.
Biometrical Journal, 50(3), 346--363;
vignette("generalsiminf", package = "multcomp").