R/diversi.gof.R

Defines functions diversi.gof

Documented in diversi.gof

## diversi.gof.R (2006-10-16)

##   Tests of Constant Diversification Rates

## Copyright 2002-2006 Emmanuel Paradis

## This file is part of the R-package `ape'.
## See the file ../COPYING for licensing issues.

diversi.gof <- function(x, null = "exponential", z = NULL)
{
    n <- length(x)
    if (null == "exponential") {
        delta <- n/sum(x)
        z <- 1 - exp(-delta * sort(x))
    }
    else {
        nmsz <- deparse(substitute(z))
        z <- sort(z) # utile ???
    }
    i <- 1:n
    W2 <- sum((z - (2*i - 1)/(2*n))^2) + 1/12*n
    A2 <- -sum((2*i - 1)*(log(z) + log(1 - rev(z))))/n - n
    if (null == "exponential") {
        W2 <- W2*(1 - 0.16/n)
        A2 <- A2*(1 + 0.6/n)
    }
    else W2 <- (W2 - 0.4/n + 0.6/n^2)/(1 + 1/n)
    cat("\nTests of Constant Diversification Rates\n\n")
    cat("Data:", deparse(substitute(x)), "\n")
    cat("Number of branching times:", n, "\n")
    cat("Null model: ")
    if (null == "exponential") cat("exponential\n\n")
    else cat(nmsz, "(user-specified)\n\n")
    cat("Cramer-von Mises test: W2 =", round(W2, 3))
    if (null == "exponential") {
        if (W2 < 0.177) cat("   P > 0.1\n")
        if (W2 >= 0.177 && W2 < 0.224) cat("   0.05 < P < 0.1\n")
        if (W2 >= 0.224 && W2 < 0.273) cat("   0.025 < P < 0.05\n")
        if (W2 >= 0.273 && W2 < 0.337) cat("   0.01 < P < 0.025\n")
        if (W2 > 0.337) cat("   P < 0.01\n")
    }
    else {
        if (W2 < 0.347) cat("   P > 0.1\n")
        if (W2 >= 0.347 && W2 < 0.461) cat("   0.05 < P < 0.1\n")
        if (W2 >= 0.461 && W2 < 0.581) cat("   0.025 < P < 0.05\n")
        if (W2 >= 0.581 && W2 < 0.743) cat("   0.01 < P < 0.025\n")
        if (W2 > 0.743) cat("   P < 0.01\n")
    }
    cat("Anderson-Darling test: A2 =", round(A2, 3))
    if (null == "exponential") {
        if (A2 < 1.078) cat("   P > 0.1\n")
        if (A2 >= 1.078 && A2 < 1.341) cat("   0.05 < P < 0.1\n")
        if (A2 >= 1.341 && A2 < 1.606) cat("   0.025 < P < 0.05\n")
        if (A2 >= 1.606 && A2 < 1.957) cat("   0.01 < P < 0.025\n")
        if (A2 > 1.957) cat("   P < 0.01\n")
    }
    else {
        if (A2 < 1.933) cat("   P > 0.1\n")
        if (A2 >= 1.933 && A2 < 2.492) cat("   0.05 < P < 0.1\n")
        if (A2 >= 2.492 && A2 < 3.070) cat("   0.025 < P < 0.05\n")
        if (A2 >= 3.070 && A2 < 3.857) cat("   0.01 < P < 0.025\n")
        if (A2 > 3.857) cat("   P < 0.01\n")
    }
}

Try the ape package in your browser

Any scripts or data that you put into this service are public.

ape documentation built on March 31, 2023, 6:56 p.m.