mrpp | R Documentation |
Multiple Response Permutation Procedure (MRPP) provides a
test of whether there is a significant difference between two or more
groups of sampling units. Function meandist
finds the mean within
and between block dissimilarities.
mrpp(dat, grouping, permutations = 999, distance = "euclidean",
weight.type = 1, strata = NULL, parallel = getOption("mc.cores"))
meandist(dist, grouping, ...)
## S3 method for class 'meandist'
summary(object, ...)
## S3 method for class 'meandist'
plot(x, kind = c("dendrogram", "histogram"), cluster = "average",
ylim, axes = TRUE, ...)
dat |
data matrix or data frame in which rows are samples and columns are response variable(s), or a dissimilarity object or a symmetric square matrix of dissimilarities. |
grouping |
Factor or numeric index for grouping observations. |
permutations |
a list of control values for the permutations
as returned by the function |
distance |
Choice of distance metric that measures the
dissimilarity between two observations . See |
weight.type |
choice of group weights. See Details below for options. |
strata |
An integer vector or factor specifying the strata for permutation. If supplied, observations are permuted only within the specified strata. |
parallel |
Number of parallel processes or a predefined socket
cluster. With |
dist |
A |
.
object , x |
A |
kind |
Draw a dendrogram or a histogram; see Details. |
cluster |
A clustering method for the |
ylim |
Limits for vertical axes (optional). |
axes |
Draw scale for the vertical axis. |
... |
Further arguments passed to functions. |
Multiple Response Permutation Procedure (MRPP) provides a test of
whether there is a significant difference between two or more groups
of sampling units. This difference may be one of location (differences
in mean) or one of spread (differences in within-group distance;
cf. Warton et al. 2012). Function mrpp
operates on a
data.frame
matrix where rows are observations and responses
data matrix. The response(s) may be uni- or multivariate. The method
is philosophically and mathematically allied with analysis of
variance, in that it compares dissimilarities within and among
groups. If two groups of sampling units are really different (e.g. in
their species composition), then average of the within-group
compositional dissimilarities ought to be less than the average of the
dissimilarities between two random collection of sampling units drawn
from the entire population.
The mrpp statistic \delta
is the overall weighted mean of
within-group means of the pairwise dissimilarities among sampling
units. The choice of group weights is currently not clear. The
mrpp
function offers three choices: (1) group size (n
),
(2) a degrees-of-freedom analogue (n-1
), and (3) a weight that
is the number of unique distances calculated among n
sampling
units (n(n-1)/2
).
The mrpp
algorithm first calculates all pairwise distances in
the entire dataset, then calculates \delta
. It then permutes the
sampling units and their associated pairwise distances, and
recalculates \delta
based on the permuted data. It repeats the
permutation step permutations
times. The significance test is
the fraction of permuted deltas that are less than the observed delta,
with a small sample correction. The function also calculates the
change-corrected within-group agreement A = 1 -\delta/E(\delta)
,
where E(\delta)
is the expected \delta
assessed as the
average of dissimilarities.
If the first argument dat
can be interpreted as
dissimilarities, they will be used directly. In other cases the
function treats dat
as observations, and uses
vegdist
to find the dissimilarities. The default
distance
is Euclidean as in the traditional use of the method,
but other dissimilarities in vegdist
also are available.
Function meandist
calculates a matrix of mean within-cluster
dissimilarities (diagonal) and between-cluster dissimilarities
(off-diagonal elements), and an attribute n
of grouping
counts. Function summary
finds the within-class, between-class
and overall means of these dissimilarities, and the MRPP statistics
with all weight.type
options and the Classification Strength,
CS (Van Sickle and Hughes, 2000). CS is defined for dissimilarities as
\bar{B} - \bar{W}
, where \bar{B}
is the
mean between cluster dissimilarity and \bar{W}
is the mean
within cluster dissimilarity with weight.type = 1
. The function
does not perform significance tests for these statistics, but you must
use mrpp
with appropriate weight.type
. There is
currently no significance test for CS, but mrpp
with
weight.type = 1
gives the correct test for \bar{W}
and a good approximation for CS. Function plot
draws a
dendrogram or a histogram of the result matrix based on the
within-group and between group dissimilarities. The dendrogram is
found with the method given in the cluster
argument using
function hclust
. The terminal segments hang to
within-cluster dissimilarity. If some of the clusters are more
heterogeneous than the combined class, the leaf segment are reversed.
The histograms are based on dissimilarities, but ore otherwise similar
to those of Van Sickle and Hughes (2000): horizontal line is drawn at
the level of mean between-cluster dissimilarity and vertical lines
connect within-cluster dissimilarities to this line.
The function returns a list of class mrpp with following items:
call |
Function call. |
delta |
The overall weighted mean of group mean distances. |
E.delta |
expected delta, under the null hypothesis of no group structure. This is the mean of original dissimilarities. |
CS |
Classification strength (Van Sickle and Hughes,
2000). Currently not implemented and always |
n |
Number of observations in each class. |
classdelta |
Mean dissimilarities within classes. The overall
|
.
Pvalue |
Significance of the test. |
A |
A chance-corrected estimate of the proportion of the distances explained by group identity; a value analogous to a coefficient of determination in a linear model. |
distance |
Choice of distance metric used; the "method" entry of the dist object. |
weight.type |
The choice of group weights used. |
boot.deltas |
The vector of "permuted deltas," the deltas
calculated from each of the permuted datasets. The distribution of
this item can be inspected with |
permutations |
The number of permutations used. |
control |
A list of control values for the permutations
as returned by the function |
This difference may be one of location (differences in mean) or one of
spread (differences in within-group distance). That is, it may find a
significant difference between two groups simply because one of those
groups has a greater dissimilarities among its sampling units. Most
mrpp
models can be analysed with adonis2
which seems
not suffer from the same problems as mrpp
and is a more robust
alternative.
M. Henry H. Stevens HStevens@muohio.edu and Jari Oksanen.
B. McCune and J. B. Grace. 2002. Analysis of Ecological Communities. MjM Software Design, Gleneden Beach, Oregon, USA.
P. W. Mielke and K. J. Berry. 2001. Permutation Methods: A Distance Function Approach. Springer Series in Statistics. Springer.
J. Van Sickle and R. M. Hughes 2000. Classification strengths of ecoregions, catchments, and geographic clusters of aquatic vertebrates in Oregon. J. N. Am. Benthol. Soc. 19:370–384.
Warton, D.I., Wright, T.W., Wang, Y. 2012. Distance-based multivariate analyses confound location and dispersion effects. Methods in Ecology and Evolution, 3, 89–101
anosim
for a similar test based on ranks, and
mantel
for comparing dissimilarities against continuous
variables, and
vegdist
for obtaining dissimilarities,
adonis2
is a more robust alternative in most cases.
data(dune)
data(dune.env)
dune.mrpp <- with(dune.env, mrpp(dune, Management))
dune.mrpp
# Save and change plotting parameters
def.par <- par(no.readonly = TRUE)
layout(matrix(1:2,nr=1))
plot(dune.ord <- metaMDS(dune, trace=0), type="text", display="sites" )
with(dune.env, ordihull(dune.ord, Management))
with(dune.mrpp, {
fig.dist <- hist(boot.deltas, xlim=range(c(delta,boot.deltas)),
main="Test of Differences Among Groups")
abline(v=delta);
text(delta, 2*mean(fig.dist$counts), adj = -0.5,
expression(bold(delta)), cex=1.5 ) }
)
par(def.par)
## meandist
dune.md <- with(dune.env, meandist(vegdist(dune), Management))
dune.md
summary(dune.md)
plot(dune.md)
plot(dune.md, kind="histogram")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.