LiteRate is a program implementing birth-death models within a Bayesian framework to estimates diversification dynamics from cultural occurence data. The model detects statistically-significant rate shifts in the history of the cultural population that theoretically correspond with major historical events and/or the action of evolutionary processes.
The repository also contains some more restricted birth-death models for testing hypotheses generated by LiteRate. For now, these include DDRate (rates driven by diversity-dependent competition) and TrendRate (rates driven by exogenous trends).
To learn more about methods or if you use these models in published work, please cite both of:
Gjesfjeld, Erik, Daniele Silvestro, Jonathan Chang, Bernard Koch, Jacob G. Foster, and Michael E. Alfaro. ‘A Quantitative Workflow for Modeling Diversification in Material Culture’. PLOS ONE 15, no. 2 (6 February 2020): e0227579. https://doi.org/10.1371/journal.pone.0227579.
Koch, Bernard, Daniele Silvestro, and Jacob G. Foster. n.d. “The Evolutionary Dynamics of Cultural Change (as Told Through the Birth and Brutal, Blackened Death of Metal Music).” SocArXiv. https://doi.org/10.31235/osf.io/659bt.
Detailed tutorials explaining the theory and how to use the models are here (thanks John Templeton Foundation, Cultural Evolution Society, and National Institute for Mathematical and Biological Synthesis!). If you're lazy the tutorials are linked below:
The introduction discusses biological macroevolution and how it motivates cultural macroevolution; highlights questions approachable from a cultural macroevolutionary perspective; introduces macroevolutionary methods that will be applied in future modules; and lays out the structure of these tutorials.
In this tutorial we introduce users to metrics for diversity and diversification rates. We build a simulator to explore the diversification of lineages within a cultural form. Empirically, we contextualize these analyses within diversity of car models that make up American automobiles throughout the 20th century (Gjesfjeld et al. 2020).
In this tutorial we introduce the linear birth-death process as a statistical model for cutting through stochasticity in diversification rates. We also introduce LiteRate, an unsupervised machine-learning algorithm built on birth-death processes designed to identify statistically-signifcant shifts in diversification rates (Silvestro et al., 2019). Finally, we show users how to run LiteRate on their own data. Empirically, the module introduces the diversification of Metal bands active from 1968-2000 as a means to understand the history of the Metal music genre (Koch et al, nd).
This tutorial shows users how to check the convergence of LiteRate's Markov chain Monte Carlo algorithms, as well as how to plot LiteRate results. Empirically, we show how shifts in diversification rates delineate a multi-stage trajectory for the evolution of Metal music over time (Koch et al, nd).
In this tutorial we expand our simulator to model evolutionary mechanisms within diversification rates like significant extinctions, key innovations, and competition. We describe how to translate simulations to statistical models, and apply a competition model to the Metal data.
This supplemental tutuorial examines the concepts and methods behind the use of phylogenetic approaches. It shows users the types of questions addressable using phylogenies, explains how phylogenies are constructed, and contrasts this approach to diversifcation rate analysis. Empirically, we demonstrate some phylogenetic analyses on a dataset of Austronesia languages (Gray, Drummond and Greenhill 2009).
If you have issues or questions, you can put a question here or contact Bernie!
LiteRate is written in Python v.3 and requires the libraries numpy and scipy. Source files and installers are available here and here.
Alternatively, you can download the requirements.txt file and use pip install -r requirements.txt
to install them from the terminal (UNIX systems). Note that if Python v.2 is the default version of Python in your machine you might need to use python3
to launch the program and pip3
to install the required libraries.