Nothing
## ----setup, include=FALSE-----------------------------------------------------
knitr::opts_chunk$set(echo = TRUE)
options(rmarkdown.html_vignette.check_title = FALSE)
## -----------------------------------------------------------------------------
library(LSD)
library(ape)
library(BAMMtools)
library(evolved)
# Let's also store our par() configs so
# we can restore them whenever we change it in this tutorial
oldpar <- par(no.readonly = TRUE)
## -----------------------------------------------------------------------------
args(simulateTree)
## -----------------------------------------------------------------------------
# Set parameters for simulation
S <- 1
E <- 0
# Set seed so we all get same results
set.seed(1)
# First, generate tree with no extinction and 6 tips
tree_pb <- simulateTree(pars = c(S, E), max.taxa = 6, max.t = 10)
# Then we reset the seed. From now on, you will
# have different results each time you run a phylogeny:
set.seed(NULL)
## -----------------------------------------------------------------------------
plot.phylo(tree_pb, show.tip.label=F)
# Add a timescale (in Mya, and zero is the time the simulation stopped):
axisPhylo()
## -----------------------------------------------------------------------------
# Generating tree with high relative extinction and 100 tips
tree_lowE <- simulateTree(pars=c(1, 0.05), max.taxa=100, max.t = Inf)
# And a pure birth tree, holding all arguments the same except with no extinction:
tree_pb <- simulateTree(pars=c(0.01, 0), max.taxa=100, max.t = Inf)
## -----------------------------------------------------------------------------
plot.new()
par(mfrow=c(1,2), mar=c(0,0,0,0))
plot.phylo(tree_pb, show.tip.label=F)
plot.phylo(tree_lowE, show.tip.label=F)
# Restoring old par() configs:
par(oldpar)
## -----------------------------------------------------------------------------
# plot lineage through time plots:
lttPlot(tree_pb, col = "blue", knitr = T)
lttPlot(tree_lowE, col = "red", knitr = T)
# or, in a single plot:
plot(x=c(0,1), y = c(log(2), log(100)), lwd=1, col="gray50", type = "l")
lttPlot(tree_pb, rel.time=T, add=T, col="blue", lwd=1.5, knitr = T)
lttPlot(tree_lowE, rel.time=T, add=T, col="red", lwd=1.5, knitr = T)
## -----------------------------------------------------------------------------
tree1 <- simulateTree(c(0.5, 0), max.taxa = 40, max.t = Inf)
tree2 <- simulateTree(c(1, 0), max.taxa = 40, max.t = Inf)
tree3 <- simulateTree(c(5, 0), max.taxa = 40, max.t = Inf)
matrix(c(estimateSpeciation(tree1), estimateSpeciation(tree2), estimateSpeciation(tree3),
0.5, 1, 5), ncol = 2, dimnames = list(NULL, c("Estimated", "True")))
## -----------------------------------------------------------------------------
REPS <- 1000
x <- numeric(REPS)
res <- data.frame(true_S=x, true_E=x, est_S=x)
for(i in 1:REPS){
# pick a speciation rate with any value between 0 and 2:
sim_S <- runif(1, min = 0, max = 2)
# in the pure birth, extinction rate is always zero
sim_E <- 0
# simulate tree:
tree_sim <- simulateTree(pars=c(sim_S, sim_E),
max.taxa=50, max.t = Inf)
#fitting the model:
fit <- estimateSpeciation(tree_sim)
res$true_S[i] <- sim_S
res$true_E[i] <- sim_E
res$est_S[i] <- fit
}
## -----------------------------------------------------------------------------
heatscatter(res$true_S, res$est_S,
xlab = "Simulated speciation rate",
ylab="Estimated speciation rate")
# Then,we add the 1:1 line (i.e. a perfect estimation)
abline(a = 0, b = 1, lwd=2)
## -----------------------------------------------------------------------------
REPS <- 1000
x <- numeric(REPS)
res <- data.frame(true_S=x, true_E=x, est_S=x)
for(i in 1:REPS){
# Pick a speciation rate with any value between 0 and 2:
sim_S <- runif(1, min = 0, max = 2)
# Now we will change the extinction fraction to always equal 0.05
sim_E <- sim_S * 0.05
# simulate tree:
tree_sim <- simulateTree(pars=c(sim_S, sim_E),
max.taxa=50, max.t = Inf)
#fitting the model:
fit <- estimateSpeciation(tree_sim)
res$true_S[i] <- sim_S
res$true_E[i] <- sim_E
res$est_S[i] <- fit
}
## -----------------------------------------------------------------------------
heatscatter(res$true_S, res$est_S,
xlab = "Simulated speciation rate",
ylab="Estimated speciation rate")
#Then,we add the 1:1 line (i.e. a perfect estimation)
abline(a = 0, b = 1, lwd=2)
## -----------------------------------------------------------------------------
tree <- simulateTree(c(1, 0.95), max.taxa = 50, max.t = Inf)
# estimating:
fitCRBD(tree)
## ---- eval = FALSE------------------------------------------------------------
# REPS <- 1000
# x <- numeric(REPS)
# res <- data.frame(true_S=x, true_E=x, est_S=x, est_E=x)
#
# for(i in 1:REPS){
#
# # pick a speciation rate with any value between 0 and 2:
# sim_S <- runif(1, min = 0, max = 2)
#
# # pick a relative extinction rate:
# rel_ex <- runif(1 , 0, 0.95)
#
# # calculate E from that extinction fraction
# sim_E <- sim_S * rel_ex
#
# # simulate tree:
# tree_sim <- simulateTree(pars=c(sim_S, sim_E),
# max.taxa=50, max.t = 1000)
#
# # fitting the model:
# fit <- fitCRBD(tree_sim)
#
# res$true_S[i] <- sim_S
# res$true_E[i] <- sim_E
#
# res$est_S[i] <- fit["S"]
# res$est_E[i] <- fit["E"]
# }
## ---- eval = FALSE------------------------------------------------------------
# heatscatter(res$true_S, res$est_S,
# xlab = "Simulated speciation rate",
# ylab="Estimated speciation rate")
#
# # Then,we add the 1:1 line (i.e. a perfect estimation)
# abline(a = 0, b = 1, lwd=2)
#
# # Making a simple linear model:
# S_lm <- lm(res$est_S~res$true_S)
#
# # And checking how much variation is explained
# summary(S_lm)$r.squared
## ---- eval = FALSE------------------------------------------------------------
# sim_K = res$true_E/res$true_S
# est_K = res$est_E/res$est_S
#
# LSD::heatscatter(sim_K, est_K,
# xlab = "Simulated E/S",
# ylab="Estimated E/S")
#
# #making a simple linear model:
# K_lm <- lm(est_K~sim_K)
# summary(K_lm)$r.squared
#
# #Then,we add the 1:1 line (i.e. a perfect estimation)
# abline(a = 0, b = 1, lwd=2)
## -----------------------------------------------------------------------------
data("whale_phylo")
## ---- fig.height=10, fig.width=6----------------------------------------------
par(cex=0.6)
plotPaintedWhales(knitr = T)
# Restoring old par() configs:
par(oldpar)
## -----------------------------------------------------------------------------
data(data_whales)
head(data_whales)
## -----------------------------------------------------------------------------
plot(x=data_whales$log_mass, data_whales$S, pch = 16,
xlab="Mass (log(g))", ylab="Speciation rate", col=data_whales$color)
legend(x="topright",legend=c("other odontocetes","Baleen whales",
"Beaked whales","Belugas and narwhals",
"Dolphins","Other mysticetes","Porpoises"),
pch=16,pt.cex=1.5,pt.bg=c("black",
"#DF536B","#61D04F","#2297E6","#28E2E5",
"#CD0BBC","#F5C710"),bty="n")
# Then we construct a linear model:
whales_lm <- lm(data_whales$S~data_whales$log_mass)
summary(whales_lm)
abline(whales_lm, col="red")
## -----------------------------------------------------------------------------
data(whales)
data(events.whales)
## ---- fig.height=10, fig.width=7----------------------------------------------
x <- getEventData(whales, events.whales, burnin = 0.1)
par(mfrow=c(1,2)) #making a panel
plotPaintedWhales(ftype="off", direction="rightwards", mar=c(5.1,0,2.1,2.1), show.legend = TRUE, knitr = T)
plot.bammdata(x, lwd = 3, mar=c(5.1,0,2.1,2.1), direction = "leftwards")
# Restoring old par() configs:
par(oldpar)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.