Introduction

Retrieving and merging data on species of amphibians from different sources can be problematic if not the same nomenclature is used. As a first step, compiling data usually requires synchornizing the names used for species which can be tedious if datasets are large. This example introduces such a scenario and shows how AmphiNom can be implemented to derive at a taxonomy that is standardized across datasets.

Do certain life history traits make amphibians more suscpetible to extinction? This is a question extensively addressed in a publication by Cooper et al. 2008, Global Ecol. Biogeogr.17, 211–221, and we can repeat a similar analysis by using the IUCN risk categories as a proxy for species health and the life history characters - body size, egg diameter and clutch size published in Gomez-Mestre et al. 2012, Evolution 66(12):3687-3700. The nomenclature used in Gomez-Mestre is not the same as that used by IUCN however and so the naming of units in these datasets must be inspected first before they can be merged.

Prepare environment and load data sets

Load libraries needed for this example

library(AmphiNom) # if not yet installed follow the instructions here: https://github.com/hcliedtke/AmphiNom
library(phytools)

Set working directory

setwd("~/") # set as needed

Load necessary data

# Life history dataset and phylogeny from Gomez-Mestre et al. 2012 Evolution
gm.dat<-read.csv("gomezmestre_data.csv", header=T) # available as supplementary information from original publication
gm.tree<-read.nexus("gomezmestre_tree.tree")# available upon request from the authors

# Load IUCN data. This particular dataset is a .csv export from a search results for Anura on the IUCN website. Creation of user account is required to be able to export this kind of search result.
iucn.dat<-read.csv("iucn_anura.csv", header=T)
iucn.dat$binomial<-paste(iucn.dat$Genus, iucn.dat$Species) # make a column with binomial names

As is, if we try to match up the two datasets, we find that 87 species in the Gomez-Mestre dataset are not found in the IUCN dataset:

# how many Gomez-Mestre names are not in the IUCN dataset?
length(which(!gm.dat$Species %in% iucn.dat$binomial))
## [1] 87

At this point it is also important to point out that for the example below, we will use the internally stored asw_taxonomy and asw_synonyms datasets. These were last updated in January 2018 and may therefore not be current. To construct the must current datasets, use the getTaxonomy() and getSynonyms() functions.

Inspect Gomez-Mestre dataset

Check names in dataset match names in tree

all(gm.tree$tip.label==gsub(gm.dat$Species, pattern=" ", replacement = "_")) # gsub() is used to insert underscores in binomial names (the format used in the tree)
## [1] TRUE

Screen names to see how well they match up to ASW and what can be ‘updated’ seamlessly

gm.asw<-aswSync(gm.dat$Species)
synonymReport(gm.asw)
##                            number_of_units
## queries                                470
## names_up_to_date                       367
## names_successfully_updated              96
## names_not_found                          2
## ambiguities                              5
## duplicates_produced                      0

This report shows that of the 470 names, 367 are still ‘current’ according to ASW and although a further 96 are not, AmphiNom could find the corresponding ASW species. This means that ASW had the names listed as synonyms for only a single species. We can inspect the names that were updated like so:

gm.asw[gm.asw$status=="updated",c("query","ASW_names")]
##                            query                   ASW_names
## 67                 Bufo alvarius           Incilius alvarius
## 68               Bufo americanus         Anaxyrus americanus
## 69              Bufo angusticeps Vandijkophrynus angusticeps
## 70                 Bufo arenarum           Rhinella arenarum
## 71                   Bufo boreas             Anaxyrus boreas
## 73                 Bufo calamita           Epidalea calamita
## 74                 Bufo cognatus           Anaxyrus cognatus
## 75                Bufo dombensis   Poyntonophrynus dombensis
## 77                  Bufo garmani         Sclerophrys garmani
## 79               Bufo gutturalis      Sclerophrys gutturalis
## 80                Bufo ictericus           Rhinella icterica
## 82                Bufo maculatus        Sclerophrys maculata
## 83                  Bufo marinus             Rhinella marina
## 84            Bufo melanostictus  Duttaphrynus melanostictus
## 85             Bufo microscaphus       Anaxyrus microscaphus
## 86                   Bufo raddei          Strauchbufo raddei
## 87                Bufo regularis       Sclerophrys regularis
## 88               Bufo stomaticus     Duttaphrynus stomaticus
## 89                 Bufo taitanus      Mertensophryne taitana
## 90                  Bufo viridis             Bufotes viridis
## 99     Ceratobatrachus guentheri          Cornufer guentheri
## 112        Cyclorana alboguttata        Ranoidea alboguttata
## 113          Cyclorana australis          Ranoidea australis
## 114           Cyclorana brevipes           Ranoidea brevipes
## 115           Cyclorana longipes           Ranoidea longipes
## 117    Dendrobates castaneoticus  Adelphobates castaneoticus
## 118     Dendrobates histrionicus         Oophaga histrionica
## 119         Dendrobates lehmanni            Oophaga lehmanni
## 121          Dendrobates pumilio             Oophaga pumilio
## 122      Dendrobates reticulatus       Ranitomeya reticulata
## 123  Dendrobates ventrimaculatus   Ranitomeya ventrimaculata
## 124     Dendrophryniscus minutus       Amazophrynella minuta
## 195              Hyla andersonii       Dryophytes andersonii
## 197                 Hyla avivoca          Dryophytes avivoca
## 199            Hyla chrysoscelis     Dryophytes chrysoscelis
## 200                 Hyla cinerea         Dryophytes cinereus
## 201               Hyla femoralis        Dryophytes femoralis
## 202                Hyla gratiosa        Dryophytes gratiosus
## 203                Hyla japonica        Dryophytes japonicus
## 205               Hyla squirella       Dryophytes squirellus
## 206              Hyla versicolor       Dryophytes versicolor
## 207             Hylomantis lemur            Agalychnis lemur
## 212         Hyperolius acuticeps          Hyperolius microps
## 225      Hypsiboas albopunctatus          Boana albopunctata
## 227        Hypsiboas cinerascens           Boana cinerascens
## 228          Hypsiboas fasciatus              Boana fasciata
## 229       Hypsiboas geographicus           Boana geographica
## 230        Hypsiboas lanciformis           Boana lanciformis
## 231         Hypsiboas rosenbergi            Boana rosenbergi
## 232           Ingerana baluensis           Alcalus baluensis
## 269             Litoria caerulea           Ranoidea caerulea
## 270         Litoria genimaculata       Ranoidea genimaculata
## 276          Litoria pearsoniana        Ranoidea pearsoniana
## 279             Litoria spenceri           Ranoidea spenceri
## 294             Nyctimystes dayi               Ranoidea dayi
## 311       Pachymedusa dacnicolor       Agalychnis dacnicolor
## 330     Phyllomedusa atelopoides     Callimedusa atelopoides
## 331 Phyllomedusa hypochondrialis  Pithecopus hypochondrialis
## 332        Phyllomedusa palliata        Pithecopus palliatus
## 334      Phyllomedusa tomopterna      Callimedusa tomopterna
## 341           Platypelis grandis             Cophyla grandis
## 363           Pseudacris regilla             Hyliola regilla
## 365             Pseudis limellum           Lysapsus limellum
## 367        Pseudoamolops sauteri                Rana sauteri
## 369  Psychrophrynella wettsteini       Microkayla wettsteini
## 375             Rana adenopleura        Nidirana adenopleura
## 380                  Rana capito           Lithobates capito
## 382             Rana catesbeiana     Lithobates catesbeianus
## 383          Rana chiricahuensis   Lithobates chiricahuensis
## 384               Rana clamitans        Lithobates clamitans
## 387                 Rana forreri          Lithobates forreri
## 389                  Rana grylio           Lithobates grylio
## 390              Rana heckscheri       Lithobates heckscheri
## 391                  Rana holsti               Babina holsti
## 392                   Rana hosii              Odorrana hosii
## 394               Rana ishikawae          Odorrana ishikawae
## 396               Rana latouchii          Hylarana latouchii
## 397                Rana lessonae         Pelophylax lessonae
## 400                  Rana minima           Glandirana minima
## 401                  Rana narina             Odorrana narina
## 402           Rana nigromaculata   Pelophylax nigromaculatus
## 404                Rana palmipes         Lithobates palmipes
## 405               Rana palustris        Lithobates palustris
## 406                  Rana perezi           Pelophylax perezi
## 409                 Rana plancyi          Pelophylax plancyi
## 412               Rana ridibunda       Pelophylax ridibundus
## 413                  Rana rugosa           Glandirana rugosa
## 414               Rana sanguinea        Sanguirana sanguinea
## 415           Rana sphenocephala   Lithobates sphenocephalus
## 416             Rana supranarina        Odorrana supranarina
## 417               Rana swinhoana          Odorrana swinhoana
## 418               Rana sylvatica       Lithobates sylvaticus
## 421          Rana utsunomiyaorum     Odorrana utsunomiyaorum
## 436           Scinax cruentommus           Scinax cruentomma
## 455          Stephopaedes anotis       Mertensophryne anotis
## 458            Stumpffia grandis        Rhombophryne grandis

Handle problematic names

Instead of checking all 470 names manually, AmphiNom has checked 463 for us already, leaving only 7 species that need a closer look. There are three situations for which AmphiNom needs careful input from the user, detailed below.

a) Names not found

The report above shows that two names in the Gomez-Mestre dataset were not found on ASW. These need to be checked mannually. It appears that one name, “Calyptocephallela gayi”, contains a spelling mistake and another name, “Trachycephalus typhonius”, is not explicitly listed as a valid synonym on ASW, but extensively referenced to under the account for T. typhonius and this issue can also be easily resolved by searching for “Trachycephalus venulosus” on the ASW website.

#list the names not found
synonymReport(gm.asw, verbose = T)$names_not_found
## [1] "Calyptocephallela gayi"   "Trachycephalus venulosus"
#manually insert the correct names
gm.asw$ASW_names[gm.asw$query=="Calyptocephallela gayi"]<-"Calyptocephalella gayi" #simple spelling mistake
gm.asw$ASW_names[gm.asw$query=="Trachycephalus venulosus"]<-"Trachycephalus typhonius" # T. venulosus is a junior synonym of T. typhonius according to Lavilla et al. 2010, Zootaxa, 2671:17-30.

b) Ambiguous names

Five more names were flagged as “ambiguous”. These are cases where a name in the query dataset is listed as a synonym for more than one species on ASW. A decision is required about which species is referred to.

# list ambiguities (both queries and suggested names)
synonymReport(gm.asw, verbose = T)$ambiguities
## $query
## [1] "Bufo granulosus"      "Hypsiboas boans"      "Kassina maculata"    
## [4] "Rana pipiens"         "Rhacophorus arboreus"
## 
## $ASW_names
## [1] "Incilius nebulifer, Rhinella granulosa"     
## [2] "Boana albopunctata, Boana boans"            
## [3] "Kassina cochranae, Phlyctimantis maculatus" 
## [4] "Lithobates catesbeianus, Lithobates pipiens"
## [5] "Boophis microtympanum, Rhacophorus arboreus"
# we can update these names manually like so:
gm.asw$ASW_names[gm.asw$query=="Bufo granulosus"]<-"Rhinella granulosa" # decision based on phylogenetic positions
gm.asw$ASW_names[gm.asw$query=="Hypsiboas boans"]<-"Boana boans" # H. albocunctatus is already in the dataset
gm.asw$ASW_names[gm.asw$query=="Kassina maculata"]<-"Phlyctimantis maculatus" # decision based on phylogenetic positions
gm.asw$ASW_names[gm.asw$query=="Rana pipiens"]<-"Lithobates pipiens" # L. catesbeiana already in dataset
gm.asw$ASW_names[gm.asw$query=="Rhacophorus arboreus"]<-"Rhacophorus arboreus" # based on phylogenetic position

c) Duplicates

The final check that AmphiNom performs is to make sure that the resulting list of ASW_names does not contain any duplicates. There may be datasets where this is expected (e.g. datasets with more than a single representative per species), but otherwise, this is an indication that the name updating by AmphiNom has resulted in more than one query being assigned to the same name. This may be the case if the query contains two or more species that have since been collapsed/synonymized under a single name.

In this particular case, no duplicate names were found in the resulting ASW_names suggestions. However, as we have inserted names manually to correct for missing names and ambiguities, it is wise to check again that there are no duplicates.

any(duplicated(gm.asw$ASW_names))
## [1] FALSE

We now have a list of “ASW_names” for the Gomez-Mestre dataset. The idea is that this list of names is now a standardized naming system that we can apply to all other datasets to merge them for downstream analysis.

Inspect IUCN dataset

The IUCN data are a good example to work with here, because it adheres to the ASW taxonomy and it also contains a list of reasonable synonyms per species. That said, running AmphiNom on it, shows quite a number of discrepancies.

iucn.asw<-aswSync(iucn.dat$binomial)
synonymReport(iucn.asw)
##                            number_of_units
## queries                               5866
## names_up_to_date                      5387
## names_successfully_updated             412
## names_not_found                         33
## ambiguities                             34
## duplicates_produced                    178

The discordance with the ASW names is in part because the ASW is updated more frequently than the IUCN. For example, the genus “Ranoidea” used in ASW is not used by the IUCN, where Cyclorana and Litoria are used instead. Interesting also is the large number of duplications, which appear to be the result of IUCN providing information for a number of sub-species that are not treated as species by ASW. For example, Bufo gargarizans as recognized by ASW is represented by six IUCN accounts, B. andrewsi, B. gargarizans, B. kabischi, B. minshanicus, B. tibetanus and B. wolongensis.

If we were to use the whole dataset, names not found, ambiguities and diplicates should be addressed as above, but as we are not interested in all ~6000 anurans for this particular example, instead of ‘updating’ all the IUCN names to ASW names, we can try to reduce the dataset first.

# how many Gomez-Mestre names are not in the IUCN dataset?
length(which(!gm.dat$Species %in% iucn.dat$binomial))
## [1] 87
# how many Gomez-Mestre names 'updatade' to ASW names are not in the IUCN dataset?
length(which(!gm.asw$ASW_names %in% iucn.dat$binomial))
## [1] 23
# how many Gomez-Mestre names 'updatade' to ASW names are not in the IUCN dataset 'updated' to ASW names?
length(which(!gm.asw$ASW_names %in% iucn.asw$ASW_names))
## [1] 4

Without AmphiNom, 87 species in the Gomez-Mestre dataset need to be checked manually, which can be reduced to only 4 species when applying the AmphiNom translation to both. These are:

gm.asw$ASW_names[!gm.asw$ASW_names %in% iucn.asw$ASW_names]
## [1] "Cornufer guentheri"      "Boana boans"            
## [3] "Phlyctimantis maculatus" "Rhacophorus arboreus"

We can focus on resolving naming issues for only these four. As mentioned above, the IUCN data also include reasonable synonyms. As the Gomez-Mestre dataset is relatively recent, there are high chances we can find these four names in the list of synonyms, but the genus “Boana” for example has relatively recently been accepted by ASW and so is not listed.

The AmphiNom approach would be the following. Instead of looking for only the ASW suggested names in the IUCN dataset, we will look for all synonyms for those four names (i.e. essentially doing the reserve process that AmphiNom would usually do). The returned names are the names that are used in the IUCN dataset for each case and we can then update them accordingly.

asw_synonyms$synonyms[asw_synonyms$species=="Cornufer guentheri"][asw_synonyms$synonyms[asw_synonyms$species=="Cornufer guentheri"] %in% iucn.dat$binomial]
## [1] Cornufer guentheri
## 29632 Levels: ? Magnadigita adspersa ... Zweifelia zweifeli
iucn.asw$ASW_names[iucn.asw$query=="Cornufer guentheri"]<-"Cornufer guentheri"

asw_synonyms$synonyms[asw_synonyms$species=="Boana boans"][asw_synonyms$synonyms[asw_synonyms$species=="Boana boans"] %in% iucn.dat$binomial]
## [1] Hypsiboas boans
## 29632 Levels: ? Magnadigita adspersa ... Zweifelia zweifeli
iucn.asw$ASW_names[iucn.asw$query=="Hypsiboas boans"]<-"Boana boans"

asw_synonyms$synonyms[asw_synonyms$species=="Phlyctimantis maculatus"][asw_synonyms$synonyms[asw_synonyms$species=="Phlyctimantis maculatus"] %in% iucn.dat$binomial]
## [1] Kassina maculata
## 29632 Levels: ? Magnadigita adspersa ... Zweifelia zweifeli
iucn.asw$ASW_names[iucn.asw$query=="Kassina maculata"]<-"Phlyctimantis maculatus"

asw_synonyms$synonyms[asw_synonyms$species=="Rhacophorus arboreus"][asw_synonyms$synonyms[asw_synonyms$species=="Rhacophorus arboreus"] %in% iucn.dat$binomial]
## [1] Rhacophorus arboreus
## 29632 Levels: ? Magnadigita adspersa ... Zweifelia zweifeli
iucn.asw$ASW_names[iucn.asw$query=="Rhacophorus arboreus"]<-"Rhacophorus arboreus"

Lets check again whether all the names now match:

all(gm.asw$ASW_names %in% iucn.asw$ASW_names)
## [1] TRUE

We can now keep only the IUCN information for the species in the Gomez-Mestre dataset. But we still have to check whether or not there are duplicates that have been introduced due to the AmphiNom action.

iucn.dat$ASW_names<-iucn.asw$ASW_names #include an additional column of ASW names to the original IUCN dataset
iucn.gm<-iucn.dat[iucn.dat$ASW_names %in% gm.asw$ASW_names,] #make a new IUCN dataset that contains only Gomez-Mestre species
iucn.gm[duplicated(iucn.gm$ASW_names, fromLast = T) | duplicated(iucn.gm$ASW_names),c("binomial","ASW_names")] #check which names are listed in this new dataset more than once. We include the duplicated (with boleen |) function twice to also include the first term of the duplicated set.
##                        binomial                  ASW_names
## 75         Agalychnis litodryas       Agalychnis spurrelli
## 80         Agalychnis spurrelli       Agalychnis spurrelli
## 432      Arthroleptis lonnbergi Arthroleptis stenodactylus
## 447  Arthroleptis stenodactylus Arthroleptis stenodactylus
## 674            Bombina pachypus          Bombina variegata
## 675           Bombina variegata          Bombina variegata
## 794               Bufo andrewsi           Bufo gargarizans
## 800            Bufo gargarizans           Bufo gargarizans
## 802               Bufo kabischi           Bufo gargarizans
## 803            Bufo minshanicus           Bufo gargarizans
## 806              Bufo tibetanus           Bufo gargarizans
## 810            Bufo wolongensis           Bufo gargarizans
## 1512       Dryophytes japonicus       Dryophytes japonicus
## 1810      Fejervarya cancrivora      Fejervarya cancrivora
## 1827            Fejervarya raja      Fejervarya cancrivora
## 2096        Hyla heinzsteinitzi       Dryophytes japonicus
## 2305       Hyperolius kivuensis       Hyperolius kivuensis
## 2355          Hyperolius raveni       Hyperolius kivuensis
## 2956  Lithobates chiricahuensis  Lithobates chiricahuensis
## 2987  Lithobates subaquavocalis  Lithobates chiricahuensis
## 3832         Pelophylax bergeri        Pelophylax lessonae
## 3842        Pelophylax lessonae        Pelophylax lessonae
## 4093  Physalaemus biligonigerus  Physalaemus biligonigerus
## 4240  Pleurodema fuscomaculatum  Physalaemus biligonigerus
## 4709       Proceratophrys boiei       Proceratophrys boiei
## 4714        Proceratophrys fryi       Proceratophrys boiei
## 4987      Rana multidenticulata               Rana sauteri
## 4996               Rana sauteri               Rana sauteri
## 5011           Ranitomeya ignea      Ranitomeya reticulata
## 5013      Ranitomeya reticulata      Ranitomeya reticulata

By looking at these duplicates, it is apparent that the IUCN recognizes several subspecies that ASW does not (or at least did not at the time the internal dataset used for this example was generated). At this stage, it is crucial that the researcher make a clear decision on how to deal with such cases. As this is only an example to show how one could use AmphiNom to facilitate dataset-merging, we will proceed by simply omitting subspecies.

iucn.gm<-iucn.gm[!((duplicated(iucn.gm$ASW_names, fromLast = T) | duplicated(iucn.gm$ASW_names)) & iucn.gm$ASW_names!=iucn.gm$binomial),]
#check again to see if the names now match across the two datasets
all(iucn.gm$ASW_names %in% gm.asw$ASW_names)
## [1] TRUE

The two datasets now match and we can supplement the Gomez-Mestre dataset with the Red List status

gm.dat$ASW_names<-gm.asw$ASW_names # add ASW names to the Gomez-Mestre dataset

iucn.gm<-iucn.gm[match(gm.asw$ASW_names, iucn.gm$ASW_names),] # re-order the IUCN dataset to match the order of the Gomez-Mestre datasets
all(iucn.gm$ASW_names==gm.asw$ASW_names) # make sure they really match
## [1] TRUE
gm.dat$IUCN<-iucn.gm$Red.List.status #add the IUCN Red List status data to the Gomez-Mestre dataset
gm.dat$IUCN<-factor(gm.dat$IUCN) #update factors
head(gm.dat, 15) #shows the first couple of entries of our working dataset
##                     Species   SVL  Egg Clutch                ASW_names
## 1       Acanthixalus sonjae 37.00 3.22    9.0      Acanthixalus sonjae
## 2     Acanthixalus spinosus 34.10 2.00    9.0    Acanthixalus spinosus
## 3           Acris crepitans 27.00 1.33    4.5          Acris crepitans
## 4             Acris gryllus 24.50 1.30    8.5            Acris gryllus
## 5           Adelotus brevis 31.25 1.80  270.0          Adelotus brevis
## 6         Adenomera andreae 24.00 3.00   15.0        Adenomera andreae
## 7    Adenomera hylaedactyla 26.50 2.80   14.5   Adenomera hylaedactyla
## 8        Afrixalus dorsalis 27.50 2.00   25.0       Afrixalus dorsalis
## 9       Afrixalus fornasini 35.00 1.60   80.0      Afrixalus fornasini
## 10         Agalychnis annae 69.60 3.53  104.5         Agalychnis annae
## 11    Agalychnis callidryas 65.70 3.70  121.5    Agalychnis callidryas
## 12     Agalychnis moreletii 74.45 3.65   72.5     Agalychnis moreletii
## 13      Agalychnis saltator 54.75 3.55   57.0      Agalychnis saltator
## 14     Agalychnis spurrelli 76.50 3.85   55.5     Agalychnis spurrelli
## 15 Aglyptodactylus laticeps 60.40 1.68 3458.5 Aglyptodactylus laticeps
##    IUCN
## 1    NT
## 2    LC
## 3    LC
## 4    LC
## 5    NT
## 6    LC
## 7    LC
## 8    LC
## 9    LC
## 10   EN
## 11   LC
## 12   LC
## 13   LC
## 14   LC
## 15   VU

Mapping traits

We have now combined the two data sets and can start to explore the data, such as whether any of the three life history traits (body size, egg size or clutch size) is correlated with a specific conservation risk status:

summary(gm.dat$IUCN) #number of species per IUCN category
##  CR  DD  EN  EX  LC  NT  VU 
##  11   2  29   1 388  22  17
# as EX and DD have very few individuals, we will drop these from the analysis for this example:
gm.dat<-gm.dat[gm.dat$IUCN!="EX" & gm.dat$IUCN!="DD",]
gm.dat$IUCN<-factor(gm.dat$IUCN) # reset levels
gm.dat$IUCN= factor(gm.dat$IUCN,c("LC","NT","VU","EN","CR")) #re-order factors in increasing risk category (to order the plot in this way)

# plot:
boxplot(gm.dat$SVL~gm.dat$IUCN, lty=1, col="grey90", las=1, pch=20, frame=F,log="y", ylim=c(10,250), ylab="Body Size")

boxplot(gm.dat$Egg~gm.dat$IUCN, lty=1, col="grey90", las=1, pch=20, frame=F,log="y", ylim=c(0.2,10), ylab="Egg Size")

boxplot(gm.dat$Clutch~gm.dat$IUCN, lty=1, col="grey90", las=1, pch=20, frame=F, log="y", ylim=c(1,100000), ylab="Clutch Size")

Testing differences

Using the phylogeny provided by Gomez-Mestre (adpapted from that of Pyron and Wiens 2011, MPE 61(2):543-583), we can test differences in life history traits across IUCN risk categories using a phylogenetic ANOVA (phytools package).

#adjust phylogeny to match dataset
gm.tree<-drop.tip(gm.tree, gm.tree$tip.label[!gm.tree$tip.label %in% gsub(gm.dat$Species, pattern = " ", replacement = "_")])
all(gm.tree$tip.label==gsub(gm.dat$Species, pattern = " ", replacement = "_"))# check rownames match
## [1] TRUE
## BODY SIZE
phylANOVA(tree = gm.tree, x = gm.dat$IUCN, y=log10(gm.dat$SVL))
## Warning: no labels for x. Assuming order of tree$tip.label.
## 
## Warning: no labels for y. Assuming order of tree$tip.label.
## ANOVA table: Phylogenetic ANOVA
## 
## Response: y
##             Sum Sq  Mean Sq  F value Pr(>F)
## x         0.103651 0.025913 0.531466  0.818
## Residual 22.525855 0.048757                
## 
## P-value based on simulation.
## ---------
## 
## Pairwise posthoc test using method = "holm"
## 
## Pairwise t-values:
##           LC        NT        VU       EN        CR
## LC  0.000000 -0.714187  0.266664 1.061201  0.599842
## NT  0.714187  0.000000  0.689331 1.276171  0.920528
## VU -0.266664 -0.689331  0.000000 0.452479  0.303210
## EN -1.061201 -1.276171 -0.452479 0.000000 -0.058984
## CR -0.599842 -0.920528 -0.303210 0.058984  0.000000
## 
## Pairwise corrected P-values:
##    LC NT VU EN CR
## LC  1  1  1  1  1
## NT  1  1  1  1  1
## VU  1  1  1  1  1
## EN  1  1  1  1  1
## CR  1  1  1  1  1
## ---------
## EGG SIZE
phylANOVA(tree = gm.tree, x = gm.dat$IUCN, y=log10(gm.dat$Egg))
## Warning: no labels for x. Assuming order of tree$tip.label.
## 
## Warning: no labels for y. Assuming order of tree$tip.label.
## ANOVA table: Phylogenetic ANOVA
## 
## Response: y
##             Sum Sq  Mean Sq  F value Pr(>F)
## x         1.585814 0.396454 8.573098  0.001
## Residual 21.364687 0.046244                
## 
## P-value based on simulation.
## ---------
## 
## Pairwise posthoc test using method = "holm"
## 
## Pairwise t-values:
##          LC        NT        VU        EN        CR
## LC 0.000000 -1.417651 -3.007683 -4.895663 -1.666578
## NT 1.417651  0.000000 -1.345792 -2.234516 -0.538544
## VU 3.007683  1.345792  0.000000 -0.645530  0.609155
## EN 4.895663  2.234516  0.645530  0.000000  1.222507
## CR 1.666578  0.538544 -0.609155 -1.222507  0.000000
## 
## Pairwise corrected P-values:
##       LC    NT    VU    EN    CR
## LC 1.000 1.000 0.207 0.010 0.567
## NT 1.000 1.000 0.654 0.208 1.000
## VU 0.207 0.654 1.000 1.000 1.000
## EN 0.010 0.208 1.000 1.000 1.000
## CR 0.567 1.000 1.000 1.000 1.000
## ---------
## CLUTCH SIZE
phylANOVA(tree = gm.tree, x = gm.dat$IUCN, y=log10(gm.dat$Clutch))
## Warning: no labels for x. Assuming order of tree$tip.label.
## 
## Warning: no labels for y. Assuming order of tree$tip.label.
## ANOVA table: Phylogenetic ANOVA
## 
## Response: y
##             Sum Sq  Mean Sq  F value Pr(>F)
## x         22.79925 5.699813 7.513786  0.002
## Residual 350.46427 0.758581                
## 
## P-value based on simulation.
## ---------
## 
## Pairwise posthoc test using method = "holm"
## 
## Pairwise t-values:
##           LC        NT        VU        EN       CR
## LC  0.000000 -0.170903  1.401420  4.432277 3.176205
## NT  0.170903  0.000000  1.191362  3.150380 2.731295
## VU -1.401420 -1.191362  0.000000  1.656503 1.612293
## EN -4.432277 -3.150380 -1.656503  0.000000 0.332907
## CR -3.176205 -2.731295 -1.612293 -0.332907 0.000000
## 
## Pairwise corrected P-values:
##      LC    NT    VU    EN   CR
## LC 1.00 1.000 1.000 0.010 0.01
## NT 1.00 1.000 0.800 0.016 0.07
## VU 1.00 0.800 1.000 0.594 0.80
## EN 0.01 0.016 0.594 1.000 1.00
## CR 0.01 0.070 0.800 1.000 1.00
## ---------

Interestingly enough, this analysis suggests that although there is no trend in body size across IUCN risk categories and only one significant pair-wise difference in egg size (endangered species have larger eggs than least concern species), species which are listed under greater threat categories (endangered, EN and critically endangered, CR) have significantly smaller clutch sizes than species ranked under lesser threat categories (least concern, LC and near threatened, NT). The result that low fecundity species are at greater extinction risk conforms to the results of Cooper et al. 2008, but their more inclusive study stressed that this link may not be direct and rather geographic range size is a more important ecological variable determining extinction risk.