In the Spring of 2017 I'm teaching a course on phylogenetic comparative methods (BIOL182L Applied Phylogenetics). I will make all code, exercises etc available on this site. Any feedback would be most useful. Please let me know if you have any suggestions and advice. Note that I'm also in the process of uploading some of my code to GitHub, so check there too once in a while.

Basic Intro to R

Meant to be an easy intro to R, this short tutorial introduces the R environment and objects that you will commonly encounter.

Get started here.

Simulating data

Building on the general introduction from the previous chapter, here you will learn how to generate normally distributed data and continue to develop your plotting skills. Includes the first homework of the semester.

Learn more here.

Phylogenetic trees in R (1)

I wrote this little tutorial as an introductory chapter for NESCent Academy on Macroevolution back in July 2014. It's meant to provide a brief overview of the basic structure of tree objects in R and illustrate some of the existing tree manipulation and visualization options. Once you have mastered this, explore many more options in Emmanuel Paradis' book (Analysis of Phylogenetics and Evolution with R) and Liam Revell's blog.

Click here for the tutorial.


Phylogenetic trees in R (2)

More stuff on trees, including more simulations, more plotting options, and the interactive generation of trees.

Click here for the tutorial.

Lineage diversification (1)

We are beginning to interpret patterns of lineage diversification in R, with special emphasis on lineage-through-time (LTT) plots.

Click here for the tutorial, with exercises.

Lineage diversification (2)

We are digging deeper into lineage diversification, focusing on estimates of net diversification and extinction fraction.

Click here for the tutorial, with exercises.

Fossil data in R

There is a rich history on estimates of speciation and extinction in the fossil record. With an increasing amount of data, such analyses provide exciting new insights. A big leap forward is the availability of large online databases that can be queried. Time constraints limit us to downloading and plotting occurrence data

Click here for some Paleobiology Database action.

Data Visualization (1)

The visualization of comparative data in the context of phylogenies is a very important step prior to any analysis, as visual inspections may suggest patterns that help forming new or refined hypotheses. This tutorial provides a quick overview of some of the basic and most important techniques.

Click here for more.

Data Visualization (2)

We are continuing our exploration of visualization techniques, by revisiting the option of combining phylogenies with barplots, and also explore phylomorphospaces and phylogenetic traitgrams.

Click here for more (plus homework).

Ancestral State Reconstructions (discrete traits)

Inferring the evolutionary history of a trait can be very interesting, but it's tricky business. Lots of uncertainty is involved. Here are some basic steps towards inferring ancestral states.

Click here for the tutorial.

Brownian motion and Ornstein-Uhlenbeck processes (intro)

A non-phylogenetic, simulation-based introduction to two of the most important models of continuous trait evolution.

Click here for the tutorial.

Independent Contrasts

A classic way to account for the non-independence of observations in interspecific datasets. The tutorial can be found here.


Probably one of the most frequently used phylogenetic comparative methods is phylogenetic generalized least squares (PGLS). PGLS allows for the analysis of evolutionary associations between traits. Click here for the tutorial.

Baisc model fitting

An increasingly important aspect of comparative biology is to explore whether trait evolution corresponds to models that mimic evolutionary processes. Click here for the tutorial.

Phylogenetic Flexible Discriminant Analysis

This is a tutorial that Ryosuke and I originally wrote for the supplementary information of our dinosaur paper back in 2011. The most up to date code for phylo FDA is now on Github, along with some example data and tree. I hope you will find this tutorial useful. Please give it a try, use it with your own data and let me know how it works. Any feedback is much appreciated!

Before you start the tutorial, please make sure that phylo.fda.v0.2.R, measurements.csv, and example.tree.tre (all available on GitHub) are saved in your current working directory.

Click here for the tutorial.

optimal lambda