X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=R%2Fmantel.test.R;h=0de2ad9693e2218fb0caf36b25cff08d67422bb0;hb=refs%2Fheads%2Fmaster;hp=97041523e965a18c3e73d4c71bb9672555db6286;hpb=6ee9e0a4e1e6bbc09187382bfdef57fafe3844c7;p=ape.git diff --git a/R/mantel.test.R b/R/mantel.test.R index 9704152..0de2ad9 100644 --- a/R/mantel.test.R +++ b/R/mantel.test.R @@ -1,8 +1,8 @@ -## mantel.test.R (2011-06-22) +## mantel.test.R (2012-03-16) ## Mantel Test for Similarity of Two Matrices -## Copyright 2002-2006 Ben Bolker and Julien Claude +## Copyright 2002-2011 Ben Bolker and Julien Claude ## This file is part of the R-package `ape'. ## See the file ../COPYING for licensing issues. @@ -18,23 +18,22 @@ mant.zstat <- function(m1, m2) sum(lower.triang(m1 * m2)) 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 = 999, 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)), - "less" = sum(nullstats < realz), - "greater" = sum(nullstats > realz)) - pval <- pval / nperm + "two.sided" = 2 * min(sum(nullstats >= realz), sum(nullstats <= realz)), + "less" = sum(nullstats <= realz), + "greater" = sum(nullstats >= realz)) + pval <- (pval + 1) / (nperm + 1) # 'realz' is included in 'nullstats' if (graph) { plot(density(nullstats), type = "l", ...) abline(v = realz)