Performs analyses of sensitivity to species sampling by randomly removing species and detecting the effects on parameter estimates in a phylogenetic linear regression, while evaluating uncertainty in trees topology.
1 2 3 4 5 6 7 8 9 10 11
The model formula
Data frame containing species traits with row names matching tips
A phylogeny (class 'phylo') matching
The number of times species are randomly deleted for each
Number of times to repeat the analysis with n different trees picked randomly in the multiPhylo file.
A vector containing the percentages of species to remove.
The phylogenetic model to use (see Details). Default is
Print a report tracking function progress (default = TRUE)
Further arguments to be passed to
This function randomly removes a given percentage of species (controlled by
breaks) from the full phylogenetic linear regression, fits a phylogenetic
linear regression model without these species using
repeats this many times (controlled by
n.sim), stores the results and
calculates the effects on model parameters. It repeats this operation using n trees,
randomly picked in a multiPhylo file.
All phylogenetic models from
phylolm can be used, i.e.
trend. See ?
phylolm for details.
Currently, this function can only implement simple linear models (i.e. trait~ predictor). In the future we will implement more complex models.
Output can be visualised using
samp_phylm returns a list with the following
formula: The formula
full.model.estimates: Coefficients, aic and the optimised
value of the phylogenetic parameter (e.g.
the full model without deleted species.
sensi.estimates: A data frame with all simulation
estimates. Each row represents a model rerun with a given number of species
n.remov removed, representing
n.percent of the full dataset.
Columns report the calculated regression intercept (
difference between simulation intercept and full model intercept (
the percentage of change in intercept compared to the full model (
and intercept p-value (
pval.intercept). All these parameters are also reported
for the regression slope (
DIFestimate etc.). Additionally, model aic value
AIC) and the optimised value (
optpar) of the phylogenetic
lambda, depending on the phylogenetic model
used) are reported. Lastly we reported the standardised difference in intercept
sDIFintercept) and slope (
sign.analysis For each break (i.e. each percentage of species
removed) this reports the percentage of statistically significant (at p<0.05)
perc.sign.intercept) over all repetitions as well as the
percentage of statisticaly significant (at p<0.05) slopes (
data: Original full dataset.
#' @note Please be aware that dropping species may reduce power to detect
significant slopes/intercepts and may partially be responsible for a potential
effect of species removal on p-values. Please also consult standardised differences
in the (summary) output.
Gustavo Paterno, Gijsbert D.A. Werner & Caterina Penone
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
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.
Ho, L. S. T. and Ane, C. 2014. "A linear-time algorithm for Gaussian and non-Gaussian trait evolution models". Systematic Biology 63(3):397-408.
1 2 3 4 5 6 7 8 9 10 11 12 13 14
## Not run: # Load data: data(alien) # Run analysis: samp <- tree_samp_phylm(log(gestaLen) ~ log(adultMass), phy = alien$phy, data = alien$data, n.tree = 5, n.sim=10) summary(samp) head(samp$sensi.estimates) # Visual diagnostics sensi_plot(samp) sensi_plot(samp, graphs = 1) sensi_plot(samp, graphs = 2) ## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.