skyline
computes the generalized skyline plot estimate of effective population size
from an estimated phylogeny. The demographic history is approximated by
a step-function. The number of parameters of the skyline plot (i.e. its smoothness)
is controlled by a parameter epsilon
.
find.skyline.epsilon
searches for an optimal value of the epsilon
parameter,
i.e. the value that maximizes the AICc-corrected log-likelihood (logL.AICc
).skyline(x, ...)
skyline.phylo(x, ...)
skyline.coalescentIntervals(x, epsilon=0, ...)
skyline.collapsedIntervals(x, old.style=FALSE, ...)
find.skyline.epsilon(ci, GRID=1000, MINEPS=1e-6, ...)
"phylo"
),
or coalescent intervals (i.e. an object of class "coalescentIntervals"
), or
collapsed coalescent intervals (i.e. an object of class "collapsedI
0
to ci$total.depth
, default value: 0). This is the same parameter as in
collapsed.intervalsFALSE
is
recommended."coalescentIntervals"
)epsilon
in find.skyline.epsilon
.epsilon
in find.skyline.epsilon
.skyline
returns an object of class "skyline"
with the following entries:find.skyline.epsilon
returns the value of the epsilon
parameter
that maximizes logL.AICc
.skyline
implements the generalized skyline plot introduced in
Strimmer and Pybus (2001). For epsilon = 0
the
generalized skyline plot degenerates to the
classic skyline plot described in
Pybus et al. (2000). The latter is in turn directly related to lineage-through-time plots
(Nee et al., 1995).coalescent.intervals
, collapsed.intervals
,
skylineplot
, ltt.plot
.library(ape)
# get tree
data("hivtree.newick") # example tree in NH format
tree.hiv <- read.tree(text = hivtree.newick) # load tree
# corresponding coalescent intervals
ci <- coalescent.intervals(tree.hiv) # from tree
# collapsed intervals
cl1 <- collapsed.intervals(ci,0)
cl2 <- collapsed.intervals(ci,0.0119)
#### classic skyline plot ####
sk1 <- skyline(cl1) # from collapsed intervals
sk1 <- skyline(ci) # from coalescent intervals
sk1 <- skyline(tree.hiv) # from tree
sk1
plot(skyline(tree.hiv))
skylineplot(tree.hiv) # shortcut
plot(sk1, show.years=TRUE, subst.rate=0.0023, present.year = 1997)
#### generalized skyline plot ####
sk2 <- skyline(cl2) # from collapsed intervals
sk2 <- skyline(ci, 0.0119) # from coalescent intervals
sk2 <- skyline(tree.hiv, 0.0119) # from tree
sk2
plot(sk2)
# classic and generalized skyline plot together in one plot
plot(sk1, show.years=TRUE, subst.rate=0.0023, present.year = 1997, col=c(grey(.8),1))
lines(sk2, show.years=TRUE, subst.rate=0.0023, present.year = 1997)
legend(.15,500, c("classic", "generalized"), col=c(grey(.8),1),lty=1)
# find optimal epsilon parameter using AICc criterion
find.skyline.epsilon(ci)
sk3 <- skyline(ci, -1) # negative epsilon also triggers estimation of epsilon
sk3$epsilon
Run the code above in your browser using DataLab