-## mantel.test.R (2011-06-22)
+## mantel.test.R (2011-11-10)
## Mantel Test for Similarity of Two Matrices
lower.triang <- function(m)
{
- d <- dim(m)
- if (d[1] != d[2]) print("Warning: non-square matrix")
+ if (!diff(dim(m))) print("Warning: non-square matrix")
m[col(m) <= row(m)]
}
-mantel.test <- function (m1, m2, nperm = 1000, graph = FALSE,
- alternative = "two.sided", ...)
+mantel.test <- function(m1, m2, nperm = 1000, graph = FALSE,
+ alternative = "two.sided", ...)
{
alternative <- match.arg(alternative, c("two.sided", "less", "greater"))
n <- nrow(m1)
realz <- mant.zstat(m1, m2)
nullstats <- replicate(nperm, mant.zstat(m1, perm.rowscols(m2, n)))
pval <- switch(alternative,
- "two.sided" = 2 * sum(abs(nullstats) > abs(realz)),
+ "two.sided" = 2 * min(sum(nullstats > realz), sum(nullstats < realz)),
"less" = sum(nullstats < realz),
"greater" = sum(nullstats > realz))
pval <- pval / nperm