Datasets

You have been provided with three datasets (same as yesterday afternoon):

  1. NAPresAbsMatrix.csv. Presence/absence data for mammals at different locations (global ID) across North America
  2. NA_AllMammals_AllTraits.csv. Trait data for mammals. (originally from https://ecologicaldata.org/wiki/pantheria)
  3. BioclimVariables.csv. Climate data for all locations in North America. (https://www.climond.org/BioclimRegistry.aspx)

Research Questions:

  1. Which set of individual climate variables adequately capture/describe the multivariate nature of climate in North America?
  2. Yesterday, we created an ecometric mean for each location for each trait. Let’s apply this first to the 12 focus traits that were provided. Then, explore whether it’s appropriate to condense the multivariate trait data for each location to an even smaller set of traits.
  3. Using your best judgement about which climate variables or traits (or ordinations thereof) are most important, determine:

Note 1: if you didn’t finish your ecometric script from yesterday, I have provided a function that calculates this for all locations, named calcEcometricMean_df.R. This function provides two objects: the ecometric mean of each location and the species richness of each location. You first need to source the file, then apply the function > source(‘calcEcometricMean_df.R’)

Note 2: if you perform ordination techniques on these data, you may need to omit all data with NA’s. Also, you may want to subsample your data to a lower N, such as N<1000.

At the end

Create a short presentation of your approach and results Provide your final analysis script with the larger group so they can see and learn from your approach

Code to start you off with the datasets

# Read in the dataframes
pa <- read.csv("data/NAPresAbsMatrix.csv", header=T)
traits <- read.csv("data/NA_AllMammals_AllTraits.csv", header=T)
clim <- read.csv("data/BioclimVariables.csv", header=T)
# clean trait data and pull out traits of interest
traits$TaxonName <- gsub(" ", "_", traits$TaxonName)
which.trait <- c(2,30,1,12,25,16,17,5,22,27,9,26)+1
traits_trim <- traits[,which.trait]
rownames(traits_trim) <- traits$TaxonName
# replace negative values in traits with NA
traits_trim[traits_trim < 0] <- NA
# trim down the pa matrix
pa_trim <- pa[,-c(1:3)]
rownames(pa_trim) <- pa$GlobalID
LS0tCnRpdGxlOiAiQW5hbHl0aWNhbCBQYWxlb2Jpb2xvZ3kgVHV0b3JpYWxzIDIwMTgiCnN1YnRpdGxlOiAiRGl2ZXJzaXR5IGFuZCBNdWx0aXZhcmlhdGUgQW5hbHlzZXMgLSBGaW5hbCBEYXRhIEV4cGxvcmF0aW9uIgphdXRob3I6ICJKZXNzaWNhIEJsb2lzIgpkYXRlOiAiQXVndXN0IDQsIDIwMTggKGxhc3QgdXBkYXRlZDogT2N0b2JlciAyOSwgMjAxOCkiCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KIyMjIERhdGFzZXRzCllvdSBoYXZlIGJlZW4gcHJvdmlkZWQgd2l0aCB0aHJlZSBkYXRhc2V0cyAoc2FtZSBhcyB5ZXN0ZXJkYXkgYWZ0ZXJub29uKToKCjEuIE5BUHJlc0Fic01hdHJpeC5jc3YuICBQcmVzZW5jZS9hYnNlbmNlIGRhdGEgZm9yIG1hbW1hbHMgYXQgZGlmZmVyZW50IGxvY2F0aW9ucyAoZ2xvYmFsIElEKSBhY3Jvc3MgTm9ydGggQW1lcmljYQoyLiBOQV9BbGxNYW1tYWxzX0FsbFRyYWl0cy5jc3YuICBUcmFpdCBkYXRhIGZvciBtYW1tYWxzLiAob3JpZ2luYWxseSBmcm9tIDxodHRwczovL2Vjb2xvZ2ljYWxkYXRhLm9yZy93aWtpL3BhbnRoZXJpYT4pCjMuIEJpb2NsaW1WYXJpYWJsZXMuY3N2LiAgQ2xpbWF0ZSBkYXRhIGZvciBhbGwgbG9jYXRpb25zIGluIE5vcnRoIEFtZXJpY2EuICg8aHR0cHM6Ly93d3cuY2xpbW9uZC5vcmcvQmlvY2xpbVJlZ2lzdHJ5LmFzcHg+KQoKIyMjIFJlc2VhcmNoIFF1ZXN0aW9uczoKCjEuIFdoaWNoIHNldCBvZiBpbmRpdmlkdWFsIGNsaW1hdGUgdmFyaWFibGVzIGFkZXF1YXRlbHkgY2FwdHVyZS9kZXNjcmliZSB0aGUgbXVsdGl2YXJpYXRlIG5hdHVyZSBvZiBjbGltYXRlIGluIE5vcnRoIEFtZXJpY2E/IAoyLiBZZXN0ZXJkYXksIHdlIGNyZWF0ZWQgYW4gZWNvbWV0cmljIG1lYW4gZm9yIGVhY2ggbG9jYXRpb24gZm9yIGVhY2ggdHJhaXQuIExldCdzIGFwcGx5IHRoaXMgZmlyc3QgdG8gdGhlIDEyIGZvY3VzIHRyYWl0cyB0aGF0IHdlcmUgcHJvdmlkZWQuICBUaGVuLCBleHBsb3JlIHdoZXRoZXIgaXQncyBhcHByb3ByaWF0ZSB0byBjb25kZW5zZSB0aGUgbXVsdGl2YXJpYXRlIHRyYWl0IGRhdGEgZm9yIGVhY2ggbG9jYXRpb24gdG8gYW4gZXZlbiBzbWFsbGVyIHNldCBvZiB0cmFpdHMuCjMuIFVzaW5nIHlvdXIgYmVzdCBqdWRnZW1lbnQgYWJvdXQgd2hpY2ggY2xpbWF0ZSB2YXJpYWJsZXMgb3IgdHJhaXRzIChvciBvcmRpbmF0aW9ucyB0aGVyZW9mKSBhcmUgbW9zdCBpbXBvcnRhbnQsIGRldGVybWluZToKIC0gQXJlIGNvbW11bml0eS1sZXZlbCB0cmFpdCBtZWFucyBzaWduaWZpY2FudGx5IGNvcnJlbGF0ZWQgd2l0aCBzcGVjaWVzIHJpY2huZXNzPyBJZiBzbywgd2hpY2ggdHJhaXRzPwogLSBBcmUgY29tbXVuaXR5LWxldmVsIHRyYWl0IG1lYW5zIHNpZ25pZmljYW50bHkgcmVsYXRlZCB0byBjbGltYXRlPwoKKipOb3RlIDE6KiogaWYgeW91IGRpZG4ndCBmaW5pc2ggeW91ciBlY29tZXRyaWMgc2NyaXB0IGZyb20geWVzdGVyZGF5LCBJIGhhdmUgcHJvdmlkZWQgYSBmdW5jdGlvbiB0aGF0IGNhbGN1bGF0ZXMgdGhpcyBmb3IgYWxsIGxvY2F0aW9ucywgbmFtZWQgKmNhbGNFY29tZXRyaWNNZWFuX2RmLlIqLiBUaGlzIGZ1bmN0aW9uIHByb3ZpZGVzIHR3byBvYmplY3RzOiB0aGUgZWNvbWV0cmljIG1lYW4gb2YgZWFjaCBsb2NhdGlvbiBhbmQgdGhlIHNwZWNpZXMgcmljaG5lc3Mgb2YgZWFjaCBsb2NhdGlvbi4gWW91IGZpcnN0IG5lZWQgdG8gc291cmNlIHRoZSBmaWxlLCB0aGVuIGFwcGx5IHRoZSBmdW5jdGlvbgo+IHNvdXJjZSgnY2FsY0Vjb21ldHJpY01lYW5fZGYuUicpCgoqKk5vdGUgMjoqKiBpZiB5b3UgcGVyZm9ybSBvcmRpbmF0aW9uIHRlY2huaXF1ZXMgb24gdGhlc2UgZGF0YSwgeW91IG1heSBuZWVkIHRvIG9taXQgYWxsIGRhdGEgd2l0aCBOQSdzLiAgQWxzbywgeW91IG1heSB3YW50IHRvIHN1YnNhbXBsZSB5b3VyIGRhdGEgdG8gYSBsb3dlciBOLCBzdWNoIGFzIE48MTAwMC4gCgojIyMgQXQgdGhlIGVuZApDcmVhdGUgYSBzaG9ydCBwcmVzZW50YXRpb24gb2YgeW91ciBhcHByb2FjaCBhbmQgcmVzdWx0cwpQcm92aWRlIHlvdXIgZmluYWwgYW5hbHlzaXMgc2NyaXB0IHdpdGggdGhlIGxhcmdlciBncm91cCBzbyB0aGV5IGNhbiBzZWUgYW5kIGxlYXJuIGZyb20geW91ciBhcHByb2FjaAoKIyMjIENvZGUgdG8gc3RhcnQgeW91IG9mZiB3aXRoIHRoZSBkYXRhc2V0cwpgYGB7ciBkYXRhIGltcG9ydCBhbmQgY2xlYW59CiMgUmVhZCBpbiB0aGUgZGF0YWZyYW1lcwpwYSA8LSByZWFkLmNzdigiZGF0YS9OQVByZXNBYnNNYXRyaXguY3N2IiwgaGVhZGVyPVQpCnRyYWl0cyA8LSByZWFkLmNzdigiZGF0YS9OQV9BbGxNYW1tYWxzX0FsbFRyYWl0cy5jc3YiLCBoZWFkZXI9VCkKY2xpbSA8LSByZWFkLmNzdigiZGF0YS9CaW9jbGltVmFyaWFibGVzLmNzdiIsIGhlYWRlcj1UKQoKIyBjbGVhbiB0cmFpdCBkYXRhIGFuZCBwdWxsIG91dCB0cmFpdHMgb2YgaW50ZXJlc3QKdHJhaXRzJFRheG9uTmFtZSA8LSBnc3ViKCIgIiwgIl8iLCB0cmFpdHMkVGF4b25OYW1lKQoKd2hpY2gudHJhaXQgPC0gYygyLDMwLDEsMTIsMjUsMTYsMTcsNSwyMiwyNyw5LDI2KSsxCnRyYWl0c190cmltIDwtIHRyYWl0c1ssd2hpY2gudHJhaXRdCnJvd25hbWVzKHRyYWl0c190cmltKSA8LSB0cmFpdHMkVGF4b25OYW1lCgojIHJlcGxhY2UgbmVnYXRpdmUgdmFsdWVzIGluIHRyYWl0cyB3aXRoIE5BCnRyYWl0c190cmltW3RyYWl0c190cmltIDwgMF0gPC0gTkEKCiMgdHJpbSBkb3duIHRoZSBwYSBtYXRyaXgKcGFfdHJpbSA8LSBwYVssLWMoMTozKV0Kcm93bmFtZXMocGFfdHJpbSkgPC0gcGEkR2xvYmFsSUQKYGBgCg==