R/samp_Discrete.R
samp_discrete.Rd
Fits models for trait evolution of discrete (binary) characters, evaluating sampling uncertainty.
samp_discrete( data, phy, n.sim = 30, breaks = seq(0.1, 0.5, 0.1), model, transform = "none", bounds = list(), n.cores = NULL, track = TRUE, ... )
data | Data vector for a single binary trait, with names matching tips in |
---|---|
phy | A phylogeny (class 'phylo') matching |
n.sim | The number of times species are randomly deleted for each |
breaks | A vector containing the percentages of species to remove. |
model | The Mkn model to use (see Details). |
transform | The evolutionary model to transform the tree (see Details). Default is |
bounds | settings to constrain parameter estimates. See |
n.cores | number of cores to use. If 'NULL', number of cores is detected. |
track | Print a report tracking function progress (default = TRUE) |
... | Further arguments to be passed to |
The function tree_discrete
returns a list with the following
components:
call
: The function call
data
: The original full data vector
optpar
: Transformation parameter used (e.g. lambda
, kappa
etc.)
full.model.estimates
: Parameter estimates (transition rates q12 and q21),
AICc and the optimised value of the phylogenetic transformation parameter (e.g. lambda
)
for the full model without deleted species.
break.summary.tab
: Summary per break
of the mean and median effects
of species removal on percentage and absolute change in parameters q12 and q21.
sensi.estimates
: Parameter estimates (transition rates q12 and q21),(percentual) difference
in parameter estimate compared to the full model (DIFq12, sigsq.q12,sDIFq12, DIFq21, optpar.q21,sDIFq21),
AICc and the optimised value of the phylogenetic transformation parameter (e.g. lambda
)
for each analysis with a species deleted.
optpar
: Transformation parameter used (e.g. lambda
, kappa
etc.)
This function randomly removes a given percentage of species (controlled by breaks
),
fits different models of discrete character evolution using fitDiscrete
,
repeats this this many times (controlled by n.sim
), stores the results and calculates
the effects on model parameters Currently, only binary discrete traits are supported.
Different character model from fitDiscrete
can be used, including ER
(equal-rates),
SYM
(symmetric), ARD
(all-rates-different) and meristic
(stepwise fashion).
Transformations to the phylogenetic tree from fitDiscrete
can be used, i.e. none
,
EB
, lambda
, kappa
anddelta
.
See fitDiscrete
for more details on character models and tree transformations.
Output can be visualised using sensi_plot
.
Paterno, G. B., Penone, C. Werner, G. D. A. sensiPhy: An r-package for sensitivity analysis in phylogenetic comparative methods. Methods in Ecology and Evolution 2018, 9(6):1461-1467
Yang Z. 2006. Computational Molecular Evolution. Oxford University Press: Oxford.
Harmon Luke J, Jason T Weir, Chad D Brock, Richard E Glor, and Wendell Challenger. 2008. GEIGER: investigating evolutionary radiations. Bioinformatics 24:129-131.
Werner, G.D.A., Cornwell, W.K., Sprent, J.I., Kattge, J. & Kiers, E.T. (2014). A single evolutionary innovation drives the deep evolution of symbiotic N2-fixation in angiosperms. Nature Communications, 5, 4087.
if (FALSE) { #Load data: data("primates") #Create a binary trait factor adultMass_binary<-ifelse(primates$data$adultMass > 7350, "big", "small") adultMass_binary<-as.factor(as.factor(adultMass_binary)) names(adultMass_binary)<-rownames(primates$data) #Model trait evolution accounting for sampling size samp_binary<-samp_discrete(data = adultMass_binary,phy = primates$phy[[1]], n.sim=25,breaks=seq(.1,.3,.1),model = "SYM",transform = "none",n.cores = 2,track = TRUE) #Print summary statistics summary(samp_binary) sensi_plot(samp_binary) sensi_plot(samp_binary,graphs=1) sensi_plot(samp_binary,graphs=2) #Use a different evolutionary model or transformation samp_binary2<-samp_discrete(data = adultMass_binary,phy = primates$phy[[1]], n.sim=25,breaks=seq(.1,.3,.1),model = "ARD",transform = "lambda",n.cores = 2,track = TRUE) summary(samp_binary2) sensi_plot(samp_binary2) sensi_plot(samp_binary2,graphs=1) sensi_plot(samp_binary2,graphs=3) }