mmc  R Documentation 
Constructs a "mmc.multicomp"
object from the formula and
other arguments. The constructed object must be explicitly plotted
with the mmcplot
function.
mmc(model, ...) ## R
## S3 method for class 'glht'
mmc(model, ...)
## Default S3 method:
mmc(model, ## lm object
linfct=NULL,
focus=
if (is.null(linfct))
{
if (length(model$contrasts)==1) names(model$contrasts)
else stop("focus or linfct must be specified.")
}
else
{
if (is.null(names(linfct)))
stop("focus must be specified.")
else names(linfct)
},
focus.lmat,
ylabel=deparse(terms(model)[[2]]),
lmat=if (missing(focus.lmat)) {
t(linfct)
} else {
lmatContrast(t(none.glht$linfct), focus.lmat)
},
lmat.rows=lmatRows(model, focus),
lmat.scale.abs2=TRUE,
estimate.sign=1,
order.contrasts=TRUE,
level=.95,
calpha=NULL,
alternative = c("two.sided", "less", "greater"),
...
)
multicomp.mmc(x, ## SPlus
focus=dimnames(attr(x$terms,"factors"))[[2]][1],
comparisons="mca",
lmat,
lmat.rows=lmatRows(x, focus),
lmat.scale.abs2=TRUE,
ry,
plot=TRUE,
crit.point,
iso.name=TRUE,
estimate.sign=1,
x.offset=0,
order.contrasts=TRUE,
main,
main2,
focus.lmat,
...)
## S3 method for class 'mmc.multicomp'
x[..., drop = TRUE]
model 

ylabel 
name of the response variable. 
lmat 
contrast matrix as in the SPlus 
lmat.rows 
rows in 
focus 
define the factor to compute contrasts of.
In R this argument often can be used to simplify the call.
The statement 
focus.lmat 
R only. Contrast matrix used in the userspecified
comparisons of the 
linfct 
In R, see

... 
other arguments. 
comparisons 
argument to 
lmat.scale.abs2 
logical, scale the contrasts in the columns of

estimate.sign 
numeric. If 
order.contrasts 
sort the contrasts in the ( 
alternative 
Direction of alternative hypothesis.
See

level 
Confidence level. Defaults to 0.95. 
crit.point , calpha 
critical value for the tests. The value from the
specified 
plot 
logical, display the plot if 
ry , iso.name , x.offset , main , main2 
arguments to

x , drop 
See 
By default, if lmat
is not specified, we plot the isomeans grid
and the pairwise comparisons for the focus
factor. By default,
we plot the specified contrasts if the lmat
is specified.
Each contrast is plotted at a height which is the weighted average of
the means being compared. The weights are scaled to the sum of their
absolute values equals 2.
We get the right contrasts automatically if the aov is oneway. If we specify an lmat for oneway it must have a leading row of 0.
For any more complex design, we must study the lmat
from the mca
component of the result to see how to construct the lmat
(with the
extra rows as needed) and how to specify the lmat.rows
corresponding to the rows for the focus factor.
mmc
in R works from either an "glht"
object or an
"aov"
object. multicomp.mmc
in SPlus works from an
"aov"
object.
An "mmc.multicomp"
object contains either the first two or all
three of the "multicomp"
components mca
, none
,
lmat
described here. Each "multicomp"
component in
R also contains a "glht"
object.
mca 
Object containing the pairwise comparisons. 
none 
Object comparing each mean to 0. 
lmat 
Object for the contrasts specified in
the 
"[.mmc.multicomp"
is a subscript method.
The multiple comparisons calculations in R and SPlus use
completely different functions.
MMC plots in R are constructed by mmc
based on
glht
.
MMC plots in SPlus are constructed by
multicomp.mmc
based on the SPlus
multicomp
.
The MMC plot is the same in both systems. The details of getting the
plot differ.
Function mmc
calls
glht
and confint.glht
.
With a large number of levels
for the focus factor, the confint
function is exceedingly slow
(80 minutes for 30 levels on 1.5GHz Windows XP). Therefore,
always specify calpha
to reduce the time to under a second for
the same example.
There are two plotting functions for MMC plots. mmcplot
, the
newer latticebased function, is recommended. mmcplot
,
chooses better default values for it arguments and is better coordinated
with the tiebreaker plot.
The older
plot.mmc.multicomp
, built on base graphics, chooses sensible defaults for its many
arguments, but they still often need manual adjustment. The examples show
several types of adjustments. We have changed the centering and scaling
to avoid overprinting of label information. By default the significant
contrasts are shown in a more intense color than the nonsignificant
contrasts.
We have an option to reduce the color intensity of the isomeans grid.
Richard M. Heiberger <rmh@temple.edu>
Heiberger, Richard M. and Holland, Burt (2015). Statistical Analysis and Data Display: An Intermediate Course with Examples in R. Second Edition. SpringerVerlag, New York. https://link.springer.com/book/10.1007/9781493921225
Heiberger, Richard M. and Holland, Burt (2006). "Mean–mean multiple comparison displays for families of linear contrasts." Journal of Computational and Graphical Statistics, 15:937–955.
Hsu, J. and Peruggia, M. (1994). "Graphical representations of Tukey's multiple comparison method." Journal of Computational and Graphical Statistics, 3:143–161.
mmcplot
, plot.mmc.multicomp
, as.multicomp
## Use mmc with R.
## Use multicomp.mmc with SPlus.
## data and ANOVA
## catalystm example
data(catalystm)
bwplot(concent ~ catalyst, data=catalystm,
scales=list(cex=1.5),
ylab=list("concentration", cex=1.5),
xlab=list("catalyst",cex=1.5))
catalystm1.aov < aov(concent ~ catalyst, data=catalystm)
summary(catalystm1.aov)
catalystm.mca <
glht(catalystm1.aov, linfct = mcp(catalyst = "Tukey"))
confint(catalystm.mca)
plot(catalystm.mca) ## multcomp plot
mmcplot(catalystm.mca, focus="catalyst") ## HH plot
## pairwise comparisons
catalystm.mmc <
mmc(catalystm1.aov, focus="catalyst")
catalystm.mmc
## Not run:
## these three statements are identical for a oneway aov
mmc(catalystm1.aov) ## simplest
mmc(catalystm1.aov, focus="catalyst") ## generalizes to higherorder designs
mmc(catalystm1.aov, linfct = mcp(catalyst = "Tukey")) ## glht arguments
## End(Not run)
mmcplot(catalystm.mmc, style="both")
## UserSpecified Contrasts
## Row names must include all levels of the factor.
## Column names are the names the user assigns to the contrasts.
## Each column must sum to zero.
catalystm.lmat < cbind("ABD" =c( 1, 1, 0,2),
"AB" =c( 1,1, 0, 0),
"ABDC"=c( 1, 1,3, 1))
dimnames(catalystm.lmat)[[1]] < levels(catalystm$catalyst)
catalystm.lmat
catalystm.mmc <
mmc(catalystm1.aov,
linfct = mcp(catalyst = "Tukey"),
focus.lmat=catalystm.lmat)
catalystm.mmc
mmcplot(catalystm.mmc, style="both", type="lmat")
## Not run:
## Dunnett's test
## weightloss example
data(weightloss)
bwplot(loss ~ group, data=weightloss,
scales=list(cex=1.5),
ylab=list("Weight Loss", cex=1.5),
xlab=list("group",cex=1.5))
weightloss.aov < aov(loss ~ group, data=weightloss)
summary(weightloss.aov)
group.count < table(weightloss$group)
tmp.dunnett <
glht(weightloss.aov,
linfct=mcp(group=contrMat(group.count, base=4)),
alternative="greater")
mmcplot(tmp.dunnett, main="contrasts in alphabetical order", focus="group")
tmp.dunnett.mmc <
mmc(weightloss.aov,
linfct=mcp(group=contrMat(group.count, base=4)),
alternative="greater")
mmcplot(tmp.dunnett.mmc,
main="contrasts ordered by average value of the means\nof the two levels in the contrasts")
tmp.dunnett.mmc
## End(Not run)
## Not run:
## twoway ANOVA
## display example
data(display)
interaction2wt(time ~ emergenc * panel.ordered, data=display)
displayf.aov < aov(time ~ emergenc * panel, data=display)
anova(displayf.aov)
## multiple comparisons
## MMC plot
displayf.mmc < mmc(displayf.aov, focus="panel")
displayf.mmc
## same thing using glht argument list
displayf.mmc <
mmc(displayf.aov,
linfct=mcp(panel="Tukey", `interaction_average`=TRUE, `covariate_average`=TRUE))
mmcplot(displayf.mmc)
panel.lmat < cbind("312"=c(1,1,2),
"12"=c( 1,1,0))
dimnames(panel.lmat)[[1]] < levels(display$panel)
panel.lmat
displayf.mmc <
mmc(displayf.aov, focus="panel", focus.lmat=panel.lmat)
## same thing using glht argument list
displayf.mmc <
mmc(displayf.aov,
linfct=mcp(panel="Tukey", `interaction_average`=TRUE, `covariate_average`=TRUE),
focus.lmat=panel.lmat)
mmcplot(displayf.mmc, type="lmat")
## End(Not run)
## Not run:
## split plot design with tiebreaker plot
##
## This example is based on the query by Tomas Goicoa to Rnews
## http://article.gmane.org/gmane.comp.lang.r.general/76275/match=goicoa
## It is a split plot similar to the one in HH Section 14.2 based on
## Yates 1937 example. I am using the Goicoa example here because its
## MMC plot requires a tiebreaker plot.
data(maiz)
interaction2wt(yield ~ hibrido+nitrogeno+bloque, data=maiz,
par.strip.text=list(cex=.7))
interaction2wt(yield ~ hibrido+nitrogeno, data=maiz)
maiz.aov < aov(yield ~ nitrogeno*hibrido + Error(bloque/nitrogeno), data=maiz)
summary(maiz.aov)
summary(maiz.aov,
split=list(hibrido=list(P3732=1, Mol17=2, A632=3, LH74=4)))
try(glht(maiz.aov, linfct=mcp(hibrido="Tukey"))) ## can't use 'aovlist' objects in glht
## R glht() requires aov, not aovlist
maiz2.aov < aov(terms(yield ~ bloque*nitrogeno + hibrido/nitrogeno,
keep.order=TRUE),
data=maiz)
summary(maiz2.aov)
## There are many ties in the group means.
## These are easily seen in the MMC plot, where the two clusters
## c("P3747", "P3732", "LH74") and c("Mol17", "A632")
## are evident from the top three contrasts including zero and the
## bottom contrast including zero. The significant contrasts are the
## ones comparing hybrids in the top group of three to ones in the
## bottom group of two.
## We have two graphical responses to the ties.
## 1. We constructed the tiebreaker plot.
## 2. We construct a set of orthogonal contrasts to illustrate
## the clusters.
## pairwise contrasts with tiebreakers.
maiz2.mmc < mmc(maiz2.aov,
linfct=mcp(hibrido="Tukey", interaction_average=TRUE))
mmcplot(maiz2.mmc, style="both") ## MMC and Tiebreaker
## orthogonal contrasts
## userspecified contrasts
hibrido.lmat < cbind("PPLMA" =c(2, 2,3,3, 2),
"PPL" =c(1, 1, 0, 0,2),
"P47P32"=c(1,1, 0, 0, 0),
"MA" =c(0, 0, 1,1, 0))
dimnames(hibrido.lmat)[[1]] < levels(maiz$hibrido)
hibrido.lmat
maiz2.mmc <
mmc(maiz2.aov, focus="hibrido", focus.lmat=hibrido.lmat)
maiz2.mmc
## same thing using glht argument list
maiz2.mmc <
mmc(maiz2.aov, linfct=mcp(hibrido="Tukey",
`interaction_average`=TRUE), focus.lmat=hibrido.lmat)
mmcplot(maiz2.mmc, style="both", type="lmat")
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.