-## ace.R (2009-06-10)
+## ace.R (2010-02-03)
## Ancestral Character Estimation
-## Copyright 2005-2009 Emmanuel Paradis and Ben Bolker
+## Copyright 2005-2010 Emmanuel Paradis and Ben Bolker
## This file is part of the R-package `ape'.
## See the file ../COPYING for licensing issues.
if (model == "BM") {
tip <- phy$edge[, 2] <= nb.tip
dev.BM <- function(p) {
+ if (p[1] < 0) return(1e100) # in case sigma² is negative
x1 <- p[-1][phy$edge[, 1] - nb.tip]
x2 <- numeric(length(x1))
x2[tip] <- x[phy$edge[tip, 2]]
}
if (model == "SYM") {
np <- nl * (nl - 1)/2
- rate[col(rate) < row(rate)] <- 1:np
+ sel <- col(rate) < row(rate)
+ rate[sel] <- 1:np
rate <- t(rate)
- rate[col(rate) < row(rate)] <- 1:np
+ rate[sel] <- 1:np
}
} else {
if (ncol(model) != nrow(model))
np <- max(rate)
}
index.matrix <- rate
- index.matrix[cbind(1:nl, 1:nl)] <- NA
- rate[cbind(1:nl, 1:nl)] <- 0
- rate[rate == 0] <- np + 1 # to avoid 0's since we will use this an numeric indexing
+ tmp <- cbind(1:nl, 1:nl)
+ index.matrix[tmp] <- NA
+ rate[tmp] <- 0
+ rate[rate == 0] <- np + 1 # to avoid 0's since we will use this as numeric indexing
liks <- matrix(0, nb.tip + nb.node, nl)
TIPS <- 1:nb.tip
table <- data.frame(ll, df, ddf, dev,
pchisq(dev, ddf, lower.tail = FALSE))
dimnames(table) <- list(1:length(X), c("Log lik.", "Df",
- "Df change", "Deviance",
+ "Df change", "Resid. Dev",
"Pr(>|Chi|)"))
structure(table, heading = "Likelihood Ratio Test Table",
class = c("anova", "data.frame"))