Learn R Programming

ape (version 5.1)

mantel.test: Mantel Test for Similarity of Two Matrices

Description

This function computes Mantel's permutation test for similarity of two matrices. It permutes the rows and columns of the second matrix randomly and calculates a \(Z\)-statistic.

Usage

mantel.test(m1, m2, nperm = 999, graph = FALSE,
            alternative = "two.sided",  ...)

Arguments

m1

a numeric matrix giving a measure of pairwise distances, correlations, or similarities among observations.

m2

a second numeric matrix giving another measure of pairwise distances, correlations, or similarities among observations.

nperm

the number of times to permute the data.

graph

a logical indicating whether to produce a summary graph (by default the graph is not plotted).

alternative

a character string defining the alternative hypothesis: "two.sided" (default), "less", "greater", or any unambiguous abbreviation of these.

further arguments to be passed to plot() (to add a title, change the axis labels, and so on).

Value

z.stat

the \(Z\)-statistic (sum of rows*columns of lower triangle) of the data matrices.

p

\(P\)-value (quantile of the observed \(Z\)-statistic in the permutation distribution).

alternative

the alternative hypothesis.

Details

The function calculates a \(Z\)-statistic for the Mantel test, equal to the sum of the pairwise product of the lower triangles of the permuted matrices, for each permutation of rows and columns. It compares the permuted distribution with the \(Z\)-statistic observed for the actual data.

The present implementation can analyse symmetric as well as (since version 5.1 of ape) asymmetric matrices (see Mantel 1967, Sects. 4 and 5). The diagonals of both matrices are ignored.

If graph = TRUE, the functions plots the density estimate of the permutation distribution along with the observed \(Z\)-statistic as a vertical line.

The argument allows the user to give further options to the plot function: the title main be changed with main=, the axis labels with xlab =, and ylab =, and so on.

References

Mantel, N. (1967) The detection of disease clustering and a generalized regression approach. Cancer Research, 27, 209--220.

Manly, B. F. J. (1986) Multivariate statistical methods: a primer. London: Chapman & Hall.

Examples

Run this code
# NOT RUN {
q1 <- matrix(runif(36), nrow = 6)
q2 <- matrix(runif(36), nrow = 6)
diag(q1) <- diag(q2) <- 0
mantel.test(q1, q2, graph = TRUE,
            main = "Mantel test: a random example with 6 X 6 matrices
representing asymmetric relationships",
            xlab = "z-statistic", ylab = "Density",
            sub = "The vertical line shows the observed z-statistic")
# }

Run the code above in your browser using DataLab