ancr | R Documentation |
By default, ancr
computes marginal ancestral states, also known as empirical Bayes posterior probabilities, conditioning on the fitted (or set) model of object
.
Can also perform joint ancestral state estimation, if the optional argument type
is set to type="joint"
.
hide.hidden
merges hidden states (if any).
ancr(object, ...)
hide.hidden(object, ...)
## S3 method for class 'ancr'
plot(x, args.plotTree=list(...), args.nodelabels=list(...), ...)
object |
fitted Mk model (presently object of class |
... |
optional arguments. |
x |
in the case of |
args.plotTree |
arguments to be passed to |
args.nodelabels |
arguments to be passed to |
If the optional argument tips=TRUE
, then the matrix returned contains empirical Bayes posterior probabilities (marginal scaled likelihoods) for both tips and internal nodes. Otherwise (the default) only node marginal states are returned.
If the input object is a set of models (in the form of an anova
table), then ancr
will compute model-averaged marginal ancestral states (for type="marginal"
, unless the optional argument weighted=FALSE
, in which case only the best-supported model is used.
An object of class "ancr"
. In the case of type="marginal"
, this object consists of a matrix of marginal (empirical Bayes) probabilities and a likelihood. In the case of type="joint"
, the object contains a set of most-likely internal node states stored in a data frame.
Liam Revell liam.revell@umb.edu
Pagel, M. (1999) The Maximum Likelihood approach to reconstructing ancestral character states of discrete characters on phylogenies. Systematic Biology, 3, 612-622.
Revell, L. J. (2024) phytools 2.0: an updated R ecosystem for phylogenetic comparative methods (and other things). PeerJ, 12, e16505.
fitMk
## load tree and data from Revell & Collar (2009)
data(sunfish.tree)
data(sunfish.data)
## extract discrete character (feeding mode)
fmode<-setNames(sunfish.data$feeding.mode,
rownames(sunfish.data))
## fit ARD model
ard_fmode<-fitMk(sunfish.tree,fmode,model="ARD",
pi="fitzjohn")
## compute ancestral states
anc_fmode<-ancr(ard_fmode)
## plot the results
par(mfrow=c(2,1))
cols<-setNames(c("blue","red"),levels(fmode))
plot(anc_fmode,
args.plotTree=list(lwd=2,direction="upwards",
mar=c(0.1,1.1,2.1,1.1),fsize=0.8),
args.nodelabels=list(piecol=cols),
args.tiplabels=list(cex=0.3),
legend="bottomright")
mtext("a) marginal states under ARD model",adj=0)
## fit ER model
er_fmode<-fitMk(sunfish.tree,fmode,model="ER",
pi="fitzjohn")
## compare models
aov_fmode<-anova(er_fmode,ard_fmode)
## compute model-averaged ancestral states
anc_fmode_model.averaged<-ancr(aov_fmode)
plot(anc_fmode_model.averaged,
args.plotTree=list(lwd=2,direction="upwards",
mar=c(0.1,1.1,2.1,1.1),fsize=0.8),
args.nodelabels=list(piecol=cols),
args.tiplabels=list(cex=0.3),
legend="bottomright")
mtext("b) marginal states model-averaging ER & ARD models",
adj=0)
par(mar=c(5.1,4.1,4.1,2.1),mfrow=c(1,1))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.