The Relationship between Body Size and Lifespan

Introduction
While aging is an inevitable process for most species, there is an incredible diversity of lifespans throughout the Tree of Life, ranging from a few days to several millenia. For researchers interested in the fundamental biology behind aging, seeing what aspects of an organism’s biology correlate to lifespan is an important first step on the path to finding concrete explanations
behind their longevity.
For example, in 1975, Dr. Richard Peto published a paper where he established that the different sizes and lifespans of humans and mice didn’t really relate to their respective cancer rates. This was described as Peto’s Paradox, because the expectation was originally that over a lifetime, every cell will accumulate mutations that could eventually cause it to become cancerous; and if an animal had more cells, then this lifetime risk of cancer would only increase further. In fact, it turns out that there
is no relationship between body size, lifespan, and cancer, which is the fact that underlies the focus of my own research!
As we will explore in this section, this paradox is further complicated by another unexpected relationship: animals that are larger tend to also live longer.
Graphing the Data
For this analysis, we will be using the AnAge database of ageing and life history in animals. This database has entries for over 4200 species of animals (also 2 plants and 3 fungi) with data like max lifespan, growth rates and weights at different life stages, descriptions, and metabolism, amongst other things.
First, let’s take a look at the data itself:
# These are the packages we will be using in this analysis
library(tidyverse)
options(readr.num_columns = 0)
library(ggpubr)
library(plotly)
library(kableExtra)
# Read the data into a dataframe:
anage <- read_tsv("data/anage_build14.txt",
col_names = T,
col_types = list(
"References" = col_character(), # Needs to be specified or else its interpreted as <int>
"Sample size" = col_factor(c("tiny", "small", "medium", "large", "huge"), ordered = T),
"Data quality" = col_factor(c("low", "questionable", "acceptable", "high"), ordered = T)
)
)
# Look at the data using str()
anage %>% str()
## spc_tbl_ [4,212 × 31] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ HAGRID : chr [1:4212] "00004" "00005" "00007" "00008" ...
## $ Kingdom : chr [1:4212] "Animalia" "Animalia" "Animalia" "Animalia" ...
## $ Phylum : chr [1:4212] "Arthropoda" "Arthropoda" "Arthropoda" "Arthropoda" ...
## $ Class : chr [1:4212] "Insecta" "Insecta" "Insecta" "Insecta" ...
## $ Order : chr [1:4212] "Diptera" "Hymenoptera" "Hymenoptera" "Lepidoptera" ...
## $ Family : chr [1:4212] "Drosophilidae" "Apidae" "Formicidae" "Nymphalidae" ...
## $ Genus : chr [1:4212] "Drosophila" "Apis" "Lasius" "Bicyclus" ...
## $ Species : chr [1:4212] "melanogaster" "mellifera" "niger" "anynana" ...
## $ Common name : chr [1:4212] "Fruit fly" "Honey bee" "Black garden ant" "Squinting bush brown" ...
## $ Female maturity (days) : num [1:4212] 7 NA NA 15 NA ...
## $ Male maturity (days) : num [1:4212] 7 NA NA 15 NA NA NA 2920 4380 NA ...
## $ Gestation/Incubation (days) : num [1:4212] NA NA NA NA NA 13 NA 6 NA NA ...
## $ Weaning (days) : num [1:4212] NA NA NA NA NA NA NA NA NA NA ...
## $ Litter/Clutch size : num [1:4212] NA NA NA NA NA 120000 NA 350000 NA NA ...
## $ Litters/Clutches per year : num [1:4212] NA NA NA NA NA NA NA NA NA NA ...
## $ Inter-litter/Interbirth interval: num [1:4212] NA NA NA NA NA NA NA NA NA NA ...
## $ Birth weight (g) : num [1:4212] NA NA NA NA NA NA NA NA NA NA ...
## $ Weaning weight (g) : num [1:4212] NA NA NA NA NA NA NA NA NA NA ...
## $ Adult weight (g) : num [1:4212] NA NA NA NA NA ...
## $ Growth rate (1/days) : num [1:4212] NA NA NA NA NA NA NA NA NA NA ...
## $ Maximum longevity (yrs) : num [1:4212] 0.3 8 28 0.5 100 67 100 152 46 60 ...
## $ Source : chr [1:4212] NA "812" "411" "811" ...
## $ Specimen origin : chr [1:4212] "captivity" "unknown" "unknown" "wild" ...
## $ Sample size : Ord.factor w/ 5 levels "tiny"<"small"<..: 4 3 3 3 3 3 3 3 3 3 ...
## $ Data quality : Ord.factor w/ 4 levels "low"<"questionable"<..: 3 3 3 3 3 3 3 3 3 3 ...
## $ IMR (per yr) : num [1:4212] 0.05 NA NA NA NA NA NA 0.013 NA NA ...
## $ MRDT (yrs) : num [1:4212] 0.04 NA NA NA NA NA NA 10 NA NA ...
## $ Metabolic rate (W) : num [1:4212] NA NA NA NA NA NA NA NA NA NA ...
## $ Body mass (g) : num [1:4212] NA NA NA NA NA NA NA NA NA NA ...
## $ Temperature (K) : num [1:4212] NA NA NA NA NA NA NA NA NA NA ...
## $ References : chr [1:4212] "2,20,32,47,53,68,69,240,241,242,243,274,602,981,1150" "63,407,408,741,805,806,808,812,815,828,830,831,847,848,902,908,1143" "411,813,814" "418,809,811" ...
## - attr(*, "spec")=
## .. cols(
## .. HAGRID = col_character(),
## .. Kingdom = col_character(),
## .. Phylum = col_character(),
## .. Class = col_character(),
## .. Order = col_character(),
## .. Family = col_character(),
## .. Genus = col_character(),
## .. Species = col_character(),
## .. `Common name` = col_character(),
## .. `Female maturity (days)` = col_double(),
## .. `Male maturity (days)` = col_double(),
## .. `Gestation/Incubation (days)` = col_double(),
## .. `Weaning (days)` = col_double(),
## .. `Litter/Clutch size` = col_double(),
## .. `Litters/Clutches per year` = col_double(),
## .. `Inter-litter/Interbirth interval` = col_double(),
## .. `Birth weight (g)` = col_double(),
## .. `Weaning weight (g)` = col_double(),
## .. `Adult weight (g)` = col_double(),
## .. `Growth rate (1/days)` = col_double(),
## .. `Maximum longevity (yrs)` = col_double(),
## .. Source = col_character(),
## .. `Specimen origin` = col_character(),
## .. `Sample size` = col_factor(levels = c("tiny", "small", "medium", "large", "huge"), ordered = TRUE, include_na = FALSE),
## .. `Data quality` = col_factor(levels = c("low", "questionable", "acceptable", "high"), ordered = TRUE, include_na = FALSE),
## .. `IMR (per yr)` = col_double(),
## .. `MRDT (yrs)` = col_double(),
## .. `Metabolic rate (W)` = col_double(),
## .. `Body mass (g)` = col_double(),
## .. `Temperature (K)` = col_double(),
## .. References = col_character()
## .. )
## - attr(*, "problems")=<externalptr>
Using str()
is a useful way of quickly seeing the different columns of data and the type of data in each. Of interest are the taxonomic columns, the Adult Weight column, and the Maximum Lifespan column.
You can also use head()
to look at the first few rows; here we’re using the kableExtra
package to visualize the first 100 rows neatly.
anage %>%
head(n = 100) %>%
kableExtra::kbl() %>%
kable_material_dark(c("striped", "hover")) %>%
scroll_box(width = "100%", height = "500px")
HAGRID | Kingdom | Phylum | Class | Order | Family | Genus | Species | Common name | Female maturity (days) | Male maturity (days) | Gestation/Incubation (days) | Weaning (days) | Litter/Clutch size | Litters/Clutches per year | Inter-litter/Interbirth interval | Birth weight (g) | Weaning weight (g) | Adult weight (g) | Growth rate (1/days) | Maximum longevity (yrs) | Source | Specimen origin | Sample size | Data quality | IMR (per yr) | MRDT (yrs) | Metabolic rate (W) | Body mass (g) | Temperature (K) | References |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
00004 | Animalia | Arthropoda | Insecta | Diptera | Drosophilidae | Drosophila | melanogaster | Fruit fly | 7 | 7 | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0.3 | NA | captivity | large | acceptable | 0.050 | 0.04 | NA | NA | NA | 2,20,32,47,53,68,69,240,241,242,243,274,602,981,1150 |
00005 | Animalia | Arthropoda | Insecta | Hymenoptera | Apidae | Apis | mellifera | Honey bee | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 8.0 | 812 | unknown | medium | acceptable | NA | NA | NA | NA | NA | 63,407,408,741,805,806,808,812,815,828,830,831,847,848,902,908,1143 |
00007 | Animalia | Arthropoda | Insecta | Hymenoptera | Formicidae | Lasius | niger | Black garden ant | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 28.0 | 411 | unknown | medium | acceptable | NA | NA | NA | NA | NA | 411,813,814 |
00008 | Animalia | Arthropoda | Insecta | Lepidoptera | Nymphalidae | Bicyclus | anynana | Squinting bush brown | 15 | 15 | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0.5 | 811 | wild | medium | acceptable | NA | NA | NA | NA | NA | 418,809,811 |
00009 | Animalia | Arthropoda | Malacostraca | Decapoda | Nephropidae | Homarus | americanus | American lobster | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 100.0 | 2 | wild | medium | acceptable | NA | NA | NA | NA | NA | 2,13,594 |
00011 | Animalia | Chordata | Actinopterygii | Acipenseriformes | Acipenseridae | Acipenser | brevirostrum | Shortnose sturgeon | 5657 | NA | 13 | NA | 120000 | NA | NA | NA | NA | 9325.000 | NA | 67.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 440,454 |
00012 | Animalia | Chordata | Actinopterygii | Acipenseriformes | Acipenseridae | Acipenser | dabryanus | Yangtze sturgeon | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 100.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00013 | Animalia | Chordata | Actinopterygii | Acipenseriformes | Acipenseridae | Acipenser | fulvescens | Lake sturgeon | 9490 | 2920 | 6 | NA | 350000 | NA | NA | NA | NA | 70000.000 | NA | 152.0 | 1 | wild | medium | acceptable | 0.013 | 10.00 | NA | NA | NA | 1,2,440,454,524 |
00014 | Animalia | Chordata | Actinopterygii | Acipenseriformes | Acipenseridae | Acipenser | gueldenstaedtii | Russian sturgeon | 5110 | 4380 | NA | NA | NA | NA | NA | NA | NA | 63250.000 | NA | 46.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00015 | Animalia | Chordata | Actinopterygii | Acipenseriformes | Acipenseridae | Acipenser | oxyrinchus | Atlantic sturgeon | NA | NA | NA | NA | NA | NA | NA | NA | NA | 202400.000 | NA | 60.0 | 22 | wild | medium | acceptable | NA | NA | NA | NA | NA | 22,454 |
00016 | Animalia | Chordata | Actinopterygii | Acipenseriformes | Acipenseridae | Acipenser | ruthenus | Sterlet | 2129 | 1460 | NA | NA | NA | NA | NA | NA | NA | 8800.000 | NA | 46.1 | 1 | captivity | medium | acceptable | NA | NA | NA | NA | NA | 1,454 |
00017 | Animalia | Chordata | Actinopterygii | Acipenseriformes | Acipenseridae | Acipenser | schrenckii | Amur sturgeon | 4562 | 3285 | NA | NA | NA | NA | NA | NA | NA | 104500.000 | NA | 60.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00018 | Animalia | Chordata | Actinopterygii | Acipenseriformes | Acipenseridae | Acipenser | stellatus | Star sturgeon | 3285 | 2190 | NA | NA | NA | NA | NA | NA | NA | 44000.000 | NA | 27.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00019 | Animalia | Chordata | Actinopterygii | Acipenseriformes | Acipenseridae | Acipenser | sturio | Baltic sturgeon | 4608 | 3467 | NA | NA | NA | NA | NA | NA | NA | 220000.000 | NA | 100.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00020 | Animalia | Chordata | Actinopterygii | Acipenseriformes | Acipenseridae | Acipenser | transmontanus | White sturgeon | 8212 | 6022 | NA | NA | NA | NA | NA | NA | NA | 448800.000 | NA | 104.0 | 22 | wild | medium | acceptable | NA | NA | NA | NA | NA | 22,454 |
00021 | Animalia | Chordata | Actinopterygii | Acipenseriformes | Acipenseridae | Huso | dauricus | Kaluga | 6113 | 6387 | NA | NA | NA | NA | NA | NA | NA | 550000.000 | NA | 55.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00022 | Animalia | Chordata | Actinopterygii | Acipenseriformes | Acipenseridae | Huso | huso | Beluga sturgeon | 6387 | 4745 | NA | NA | NA | NA | NA | NA | NA | 1139600.000 | NA | 118.0 | 1 | wild | medium | acceptable | NA | NA | NA | NA | NA | 1,454 |
00023 | Animalia | Chordata | Actinopterygii | Acipenseriformes | Acipenseridae | Pseudoscaphirhynchus | hermanni | Dwarf sturgeon | NA | NA | NA | NA | NA | NA | NA | NA | NA | 27.775 | NA | 6.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00024 | Animalia | Chordata | Actinopterygii | Acipenseriformes | Polyodontidae | Polyodon | spathula | Mississippi paddlefish | 3285 | 2190 | NA | NA | NA | NA | NA | NA | NA | 49885.000 | NA | 55.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00025 | Animalia | Chordata | Actinopterygii | Amiiformes | Amiidae | Amia | calva | Bowfin | 1551 | 1460 | NA | NA | NA | NA | NA | NA | NA | 5362.500 | NA | 30.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454,520 |
00026 | Animalia | Chordata | Actinopterygii | Anguilliformes | Anguillidae | Anguilla | anguilla | European eel | 4562 | 4015 | NA | NA | NA | NA | NA | NA | NA | 3629.450 | NA | 88.0 | 2 | captivity | small | acceptable | NA | NA | NA | NA | NA | 2,232,454,523 |
00027 | Animalia | Chordata | Actinopterygii | Anguilliformes | Anguillidae | Anguilla | australis | Shortfin eel | NA | NA | NA | NA | NA | NA | NA | NA | NA | 4100.000 | NA | 32.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00028 | Animalia | Chordata | Actinopterygii | Anguilliformes | Anguillidae | Anguilla | bicolor | Indonesian shortfin eel | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 20.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00029 | Animalia | Chordata | Actinopterygii | Anguilliformes | Anguillidae | Anguilla | dieffenbachii | New Zealand longfin eel | NA | NA | NA | NA | NA | NA | NA | NA | NA | 13000.000 | NA | 60.0 | 523 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454,523 |
00030 | Animalia | Chordata | Actinopterygii | Anguilliformes | Anguillidae | Anguilla | marmorata | Marbled eel | NA | NA | NA | NA | NA | NA | NA | NA | NA | 11275.000 | NA | 40.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00031 | Animalia | Chordata | Actinopterygii | Anguilliformes | Anguillidae | Anguilla | mossambica | African longfin eel | NA | NA | NA | NA | NA | NA | NA | NA | NA | 412.500 | NA | 20.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00032 | Animalia | Chordata | Actinopterygii | Anguilliformes | Anguillidae | Anguilla | nebulosa | Long-finned eel | NA | NA | NA | NA | NA | NA | NA | NA | NA | 11000.000 | NA | 15.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00033 | Animalia | Chordata | Actinopterygii | Anguilliformes | Anguillidae | Anguilla | reinhardtii | Speckled longfin eel | 7300 | 3650 | NA | NA | NA | NA | NA | NA | NA | 8965.000 | NA | 41.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00034 | Animalia | Chordata | Actinopterygii | Anguilliformes | Anguillidae | Anguilla | rostrata | American eel | 1642 | 1642 | NA | NA | NA | NA | NA | NA | NA | 4031.500 | NA | 50.0 | 583 | captivity | small | acceptable | NA | NA | NA | NA | NA | 454,523,583 |
00035 | Animalia | Chordata | Actinopterygii | Atheriniformes | Atherinidae | Atherina | presbyter | Sand smelt | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 4.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00036 | Animalia | Chordata | Actinopterygii | Atheriniformes | Atherinopsidae | Atherinops | affinis | Topsmelt | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 9.0 | 1 | wild | medium | acceptable | NA | NA | NA | NA | NA | 1 |
00037 | Animalia | Chordata | Actinopterygii | Atheriniformes | Atherinopsidae | Atherinopsis | californiensis | Jacksmelt | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 11.0 | 1 | wild | medium | acceptable | NA | NA | NA | NA | NA | 1 |
00038 | Animalia | Chordata | Actinopterygii | Atheriniformes | Atherinopsidae | Labidesthes | sicculus | Brook silverside | 120 | 120 | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2.0 | 442 | wild | medium | acceptable | NA | NA | NA | NA | NA | 442 |
00039 | Animalia | Chordata | Actinopterygii | Atheriniformes | Atherinopsidae | Leuresthes | tenuis | California grunion | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 8.0 | 1 | wild | medium | acceptable | NA | NA | NA | NA | NA | 1 |
00040 | Animalia | Chordata | Actinopterygii | Atheriniformes | Atherinopsidae | Menidia | beryllina | Inland silverside | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2.0 | 1 | wild | medium | acceptable | NA | NA | NA | NA | NA | 1 |
00041 | Animalia | Chordata | Actinopterygii | Atheriniformes | Atherinopsidae | Menidia | extensa | Waccamaw silverside | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 3.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00042 | Animalia | Chordata | Actinopterygii | Atheriniformes | Atherinopsidae | Menidia | menidia | Atlantic silverside | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00043 | Animalia | Chordata | Actinopterygii | Aulopiformes | Synodontidae | Trachinocephalus | myops | Snakefish | 730 | 730 | NA | NA | NA | NA | NA | NA | NA | NA | NA | 7.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00044 | Animalia | Chordata | Actinopterygii | Beloniformes | Adrianichthyidae | Oryzias | latipes | Japanese medaka | NA | NA | 10 | NA | NA | NA | NA | NA | NA | NA | NA | 5.0 | 683 | captivity | medium | acceptable | NA | NA | NA | NA | NA | 524,682,683,684,685,686,836 |
00045 | Animalia | Chordata | Actinopterygii | Beloniformes | Hemiramphidae | Hyporhamphus | melanochir | Dusky sea garfish | 912 | 912 | NA | NA | NA | NA | NA | NA | NA | 330.000 | NA | 10.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00046 | Animalia | Chordata | Actinopterygii | Beloniformes | Scomberesocidae | Cololabis | saira | Pacific saury | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00047 | Animalia | Chordata | Actinopterygii | Beryciformes | Berycidae | Beryx | splendens | Alfonsino | 2153 | 2737 | NA | NA | NA | NA | NA | NA | NA | NA | NA | 23.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00048 | Animalia | Chordata | Actinopterygii | Beryciformes | Trachichthyidae | Hoplostethus | atlanticus | Orange roughy | 6448 | 7208 | NA | NA | NA | NA | NA | NA | NA | 3850.000 | NA | 149.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 22,454 |
00049 | Animalia | Chordata | Actinopterygii | Beryciformes | Trachichthyidae | Hoplostethus | mediterraneus | Mediterranean redfish | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | unknown | small | low | NA | NA | NA | NA | NA | 454 |
00050 | Animalia | Chordata | Actinopterygii | Characiformes | Alestiidae | Brycinus | imberi | Spot-tail | NA | NA | NA | NA | NA | NA | NA | NA | NA | 165.000 | NA | 5.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00051 | Animalia | Chordata | Actinopterygii | Characiformes | Alestiidae | Brycinus | macrolepidotus | Silversides | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1100.000 | NA | 5.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00052 | Animalia | Chordata | Actinopterygii | Characiformes | Alestiidae | Hydrocynus | vittatus | Tiger fish | NA | NA | NA | NA | NA | NA | NA | NA | NA | 15400.000 | NA | 8.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00053 | Animalia | Chordata | Actinopterygii | Characiformes | Alestiidae | Micralestes | acutidens | Sharptooth tetra | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1.100 | NA | 3.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00054 | Animalia | Chordata | Actinopterygii | Characiformes | Characidae | Astyanax | bimaculatus | Twospot astyanax | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 18.0 | 1 | wild | medium | acceptable | NA | NA | NA | NA | NA | 1 |
00055 | Animalia | Chordata | Actinopterygii | Characiformes | Characidae | Piaractus | brachypomus | Pirapitinga | NA | NA | NA | NA | NA | NA | NA | NA | NA | 13750.000 | NA | 28.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00056 | Animalia | Chordata | Actinopterygii | Characiformes | Citharinidae | Distichodus | niloticus | Nile distichodus | NA | NA | NA | NA | NA | NA | NA | NA | NA | 3410.000 | NA | 7.5 | 583 | captivity | small | acceptable | NA | NA | NA | NA | NA | 454,583 |
00057 | Animalia | Chordata | Actinopterygii | Characiformes | Hepsetidae | Hepsetus | odoe | Pike characid | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2200.000 | NA | 5.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00058 | Animalia | Chordata | Actinopterygii | Clupeiformes | Clupeidae | Alosa | aestivalis | Blueback shad | 1460 | 1277 | NA | NA | NA | NA | NA | NA | NA | 110.000 | NA | 8.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00059 | Animalia | Chordata | Actinopterygii | Clupeiformes | Clupeidae | Alosa | agone | Twaite shad | NA | NA | NA | NA | NA | NA | NA | NA | NA | 825.000 | NA | 25.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00060 | Animalia | Chordata | Actinopterygii | Clupeiformes | Clupeidae | Alosa | alabamae | Alabama shad | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 4.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00061 | Animalia | Chordata | Actinopterygii | Clupeiformes | Clupeidae | Alosa | alosa | Alice shad | 1642 | 1277 | NA | NA | NA | NA | NA | NA | NA | 2200.000 | NA | 10.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00062 | Animalia | Chordata | Actinopterygii | Clupeiformes | Clupeidae | Alosa | caspia | Caspian shad | NA | NA | NA | NA | NA | NA | NA | NA | NA | 65.000 | NA | 7.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00063 | Animalia | Chordata | Actinopterygii | Clupeiformes | Clupeidae | Alosa | chrysochloris | Blue herring | NA | NA | NA | NA | NA | NA | NA | NA | NA | 935.000 | NA | 4.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00064 | Animalia | Chordata | Actinopterygii | Clupeiformes | Clupeidae | Alosa | macedonica | Macedonia shad | NA | NA | NA | NA | NA | NA | NA | NA | NA | 330.000 | NA | 10.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00065 | Animalia | Chordata | Actinopterygii | Clupeiformes | Clupeidae | Alosa | maeotica | Black sea shad | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 6.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00066 | Animalia | Chordata | Actinopterygii | Clupeiformes | Clupeidae | Alosa | pontica | Pontic shad | 730 | 730 | NA | NA | NA | NA | NA | NA | NA | NA | NA | 7.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00067 | Animalia | Chordata | Actinopterygii | Clupeiformes | Clupeidae | Alosa | pseudoharengus | Alewife | 1642 | 1277 | NA | NA | NA | NA | NA | NA | NA | 110.000 | NA | 8.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00068 | Animalia | Chordata | Actinopterygii | Clupeiformes | Clupeidae | Alosa | sapidissima | American shad | 1678 | 1569 | NA | NA | NA | NA | NA | NA | NA | 3025.000 | NA | 13.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454,520 |
00069 | Animalia | Chordata | Actinopterygii | Clupeiformes | Clupeidae | Amblygaster | sirm | Spotted sardinella | 310 | 350 | NA | NA | NA | NA | NA | NA | NA | NA | NA | 8.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00070 | Animalia | Chordata | Actinopterygii | Clupeiformes | Clupeidae | Clupea | harengus | Atlantic herring | 1095 | 1095 | NA | NA | NA | NA | NA | NA | NA | NA | NA | 22.0 | 1 | wild | medium | acceptable | NA | NA | NA | NA | NA | 1,585 |
00071 | Animalia | Chordata | Actinopterygii | Clupeiformes | Clupeidae | Clupea | pallasii | Pacific herring | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 19.0 | 520 | wild | medium | acceptable | NA | NA | NA | NA | NA | 520,524 |
00072 | Animalia | Chordata | Actinopterygii | Clupeiformes | Clupeidae | Clupeonella | cultriventris | Black sea sprat | 912 | 912 | NA | NA | NA | NA | NA | NA | NA | NA | NA | 5.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00073 | Animalia | Chordata | Actinopterygii | Clupeiformes | Clupeidae | Dorosoma | cepedianum | American gizzard shad | 730 | 730 | NA | NA | NA | NA | NA | NA | NA | 1089.000 | NA | 6.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00074 | Animalia | Chordata | Actinopterygii | Clupeiformes | Clupeidae | Dorosoma | petenense | Threadfin shad | 730 | 730 | NA | NA | NA | NA | NA | NA | NA | NA | NA | 4.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00075 | Animalia | Chordata | Actinopterygii | Clupeiformes | Clupeidae | Escualosa | thoracata | White sardine | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | unknown | small | low | NA | NA | NA | NA | NA | 454 |
00076 | Animalia | Chordata | Actinopterygii | Clupeiformes | Clupeidae | Gilchristella | aestuaria | Gilchrist’s round herring | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 6.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00077 | Animalia | Chordata | Actinopterygii | Clupeiformes | Clupeidae | Harengula | jaguana | Scaled herring | 365 | 365 | NA | NA | NA | NA | NA | NA | NA | NA | NA | 3.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454,690 |
00078 | Animalia | Chordata | Actinopterygii | Clupeiformes | Clupeidae | Potamalosa | richmondia | Australian freshwater herring | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 11.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00079 | Animalia | Chordata | Actinopterygii | Clupeiformes | Clupeidae | Sardina | pilchardus | European pilchard | 730 | 730 | NA | NA | NA | NA | NA | NA | NA | NA | NA | 15.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454,585 |
00080 | Animalia | Chordata | Actinopterygii | Clupeiformes | Clupeidae | Sardinella | aurita | Round sardinella | 365 | 365 | NA | NA | NA | NA | NA | NA | NA | 125.950 | NA | 7.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00081 | Animalia | Chordata | Actinopterygii | Clupeiformes | Clupeidae | Sardinella | gibbosa | Goldstripe sardinella | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 7.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00082 | Animalia | Chordata | Actinopterygii | Clupeiformes | Clupeidae | Sardinella | longiceps | Indian oil sardine | 730 | 719 | NA | NA | NA | NA | NA | NA | NA | 110.000 | NA | 4.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00083 | Animalia | Chordata | Actinopterygii | Clupeiformes | Clupeidae | Sardinops | sagax | Pacific sardine | 821 | 821 | NA | NA | NA | NA | NA | NA | NA | 267.300 | NA | 25.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454,584 |
00084 | Animalia | Chordata | Actinopterygii | Clupeiformes | Clupeidae | Sprattus | sprattus | European sprat | 730 | 730 | NA | NA | NA | NA | NA | NA | NA | NA | NA | 6.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454,585 |
00085 | Animalia | Chordata | Actinopterygii | Clupeiformes | Clupeidae | Tenualosa | toli | Toli shad | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | unknown | small | low | NA | NA | NA | NA | NA | 454 |
00086 | Animalia | Chordata | Actinopterygii | Clupeiformes | Engraulidae | Anchoa | compressa | Deepbody anchovy | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 6.0 | 1 | wild | medium | acceptable | NA | NA | NA | NA | NA | 1 |
00087 | Animalia | Chordata | Actinopterygii | Clupeiformes | Engraulidae | Cetengraulis | mysticetus | Anchoveta | 365 | 365 | NA | NA | NA | NA | NA | NA | NA | NA | NA | 4.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00088 | Animalia | Chordata | Actinopterygii | Clupeiformes | Engraulidae | Engraulis | australis | Australian anchovy | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 6.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00089 | Animalia | Chordata | Actinopterygii | Clupeiformes | Engraulidae | Engraulis | encrasicolus | European anchovy | 365 | 365 | NA | NA | NA | NA | NA | NA | NA | NA | NA | 3.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00090 | Animalia | Chordata | Actinopterygii | Clupeiformes | Engraulidae | Engraulis | japonicus | Japanese anchovy | 365 | 365 | NA | NA | NA | NA | NA | NA | NA | NA | NA | 3.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00091 | Animalia | Chordata | Actinopterygii | Clupeiformes | Engraulidae | Engraulis | mordax | Californian anchoveta | 365 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 7.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454,520 |
00092 | Animalia | Chordata | Actinopterygii | Clupeiformes | Engraulidae | Engraulis | ringens | Peruvian anchoveta | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 3.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00093 | Animalia | Chordata | Actinopterygii | Cypriniformes | Balitoridae | Barbatula | barbatula | Stone loach | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 7.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00094 | Animalia | Chordata | Actinopterygii | Cypriniformes | Catostomidae | Carpiodes | carpio | River carpsucker | NA | NA | NA | NA | NA | NA | NA | NA | NA | 2524.500 | NA | 10.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00095 | Animalia | Chordata | Actinopterygii | Cypriniformes | Catostomidae | Carpiodes | cyprinus | Quillback | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1617.000 | NA | 11.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00096 | Animalia | Chordata | Actinopterygii | Cypriniformes | Catostomidae | Carpiodes | velifer | Highfin carpsucker | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 11.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00097 | Animalia | Chordata | Actinopterygii | Cypriniformes | Catostomidae | Catostomus | catostomus | Longnose sucker | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1800.000 | NA | 20.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00098 | Animalia | Chordata | Actinopterygii | Cypriniformes | Catostomidae | Catostomus | commersonii | White sucker | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1617.000 | NA | 12.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00099 | Animalia | Chordata | Actinopterygii | Cypriniformes | Catostomidae | Catostomus | macrocheilus | Largescale sucker | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 15.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00100 | Animalia | Chordata | Actinopterygii | Cypriniformes | Catostomidae | Catostomus | microps | Modoc sucker | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 18.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00101 | Animalia | Chordata | Actinopterygii | Cypriniformes | Catostomidae | Catostomus | occidentalis | Sacramento sucker | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 10.0 | 1 | wild | medium | acceptable | NA | NA | NA | NA | NA | 1 |
00102 | Animalia | Chordata | Actinopterygii | Cypriniformes | Catostomidae | Catostomus | platyrhynchus | Mountain sucker | 1277 | 1003 | NA | NA | NA | NA | NA | NA | NA | NA | NA | 9.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00103 | Animalia | Chordata | Actinopterygii | Cypriniformes | Catostomidae | Catostomus | rimiculus | Klamath smallscale sucker | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 9.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00104 | Animalia | Chordata | Actinopterygii | Cypriniformes | Catostomidae | Catostomus | tahoensis | Tahoe sucker | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 15.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
00105 | Animalia | Chordata | Actinopterygii | Cypriniformes | Catostomidae | Chasmistes | cujus | Cui-ui | 5657 | 5657 | NA | NA | NA | NA | NA | NA | NA | 1496.000 | NA | 41.0 | 454 | wild | medium | acceptable | NA | NA | NA | NA | NA | 454 |
Note: using tibble
from tidyverse
also automatically shows only the first few rows of the dataset in the console if you call anage
by itself.
All species
Let’s try graphing now. First, we will graph all the species; we will graph the adult weights versus their maximum lifespan, and color the datapoints by their Phylum:
# Create the basic plot
p.all <- anage %>%
ggplot(
aes(`Adult weight (g)`, `Maximum longevity (yrs)`, color=Phylum, text=str_glue("Common Name: {`Common name`}<br>Data Quality: {`Data quality`}<br>Sample size: {`Sample size`}"))
) +
geom_point(size=0.5) +
scale_x_log10() +
scale_y_log10() +
labs(
title='AnAge Species Adult Weight vs Lifespan',
y='Adult Weight - log(g)',
x='Maximum Longevity - log(yrs) '
) +
theme_pubclean() +
labs_pubr()
# Output the interactive plot
ggplotly(p.all)
(Note that we scaled the axes using a log-scale; this is done because we want to highlight orders-of-magnitude changes over small-scale change - in other words, we don’t care so much about the difference between 1-2 grams and 100-200 grams as much as a change between 1-10 grams and 100-1000 grams.)
You can see that the graph already has a clear upwards trend! However, there’s a bit of an issue that’s striking in the color scheme; where are our non-chordate species? The first guess I have is that it relates to size measurements - that’s relatively easy to check:
anage %>%
filter(!Phylum=="Chordata") %>%
select(Kingdom, Phylum, Genus, Species, `Common name`, `Maximum longevity (yrs)`, contains("weight")) %>%
kableExtra::kbl() %>%
kable_material_dark(c("striped", "hover")) %>%
scroll_box(width = "100%", height = "1000px")
Kingdom | Phylum | Genus | Species | Common name | Maximum longevity (yrs) | Birth weight (g) | Weaning weight (g) | Adult weight (g) |
---|---|---|---|---|---|---|---|---|
Animalia | Arthropoda | Drosophila | melanogaster | Fruit fly | 0.30 | NA | NA | NA |
Animalia | Arthropoda | Apis | mellifera | Honey bee | 8.00 | NA | NA | NA |
Animalia | Arthropoda | Lasius | niger | Black garden ant | 28.00 | NA | NA | NA |
Animalia | Arthropoda | Bicyclus | anynana | Squinting bush brown | 0.50 | NA | NA | NA |
Animalia | Arthropoda | Homarus | americanus | American lobster | 100.00 | NA | NA | NA |
Animalia | Cnidaria | Turritopsis | nutricula | Immortal jellyfish | NA | NA | NA | NA |
Animalia | Echinodermata | Strongylocentrotus | franciscanus | Red sea urchin | 200.00 | NA | NA | NA |
Animalia | Echinodermata | Strongylocentrotus | purpuratus | Purple sea urchin | 50.00 | NA | NA | NA |
Animalia | Mollusca | Arctica | islandica | Ocean quahog clam | 507.00 | NA | NA | NA |
Animalia | Nematoda | Caenorhabditis | elegans | Roundworm | 0.16 | NA | NA | NA |
Animalia | Porifera | Cinachyra | antarctica | Epibenthic sponge | 1550.00 | NA | NA | NA |
Animalia | Porifera | Scolymastra | joubini | Hexactinellid sponge | 15000.00 | NA | NA | NA |
Plantae | Pinophyta | Pinus | longaeva | Great Basin bristlecone pine | 4713.00 | NA | NA | NA |
Fungi | Ascomycota | Saccharomyces | cerevisiae | Baker’s yeast | 0.04 | NA | NA | NA |
Fungi | Ascomycota | Schizosaccharomyces | pombe | Fission yeast | NA | NA | NA | NA |
Fungi | Ascomycota | Podospora | anserina | Filamentous fungus | NA | NA | NA | NA |
None of the non-chordates in the AnAge database have any weight information - go figure! However, from the lifespan, we can see that some of these live a ridiculously long time:
# Filter anage based on the weird characteristics:
anage %>%
arrange(desc(`Maximum longevity (yrs)`)) %>%
head %>%
select(Kingdom, Phylum, Genus, Species, `Common name`, `Maximum longevity (yrs)`, `Adult weight (g)`, `Data quality`) %>%
kableExtra::kbl() %>%
kable_material_dark(c("striped", "hover")) %>%
scroll_box(width = "100%", height = "1000px")
Kingdom | Phylum | Genus | Species | Common name | Maximum longevity (yrs) | Adult weight (g) | Data quality |
---|---|---|---|---|---|---|---|
Animalia | Porifera | Scolymastra | joubini | Hexactinellid sponge | 15000 | NA | questionable |
Plantae | Pinophyta | Pinus | longaeva | Great Basin bristlecone pine | 4713 | NA | acceptable |
Animalia | Porifera | Cinachyra | antarctica | Epibenthic sponge | 1550 | NA | questionable |
Animalia | Mollusca | Arctica | islandica | Ocean quahog clam | 507 | NA | acceptable |
Animalia | Chordata | Balaena | mysticetus | Bowhead whale | 211 | 1.00e+08 | acceptable |
Animalia | Chordata | Sebastes | aleutianus | Rougheye rockfish | 205 | 4.95e+02 | acceptable |
Remember how I said that some animals live for millenia? Behold the humble sponge; specifically, Scolymastra joubini, which apparently lives for 15,000 years! Its worth noting the column “Data.quality” here; there’s some skepticism in the literature as to whether or not this is estimate is real, since its so incredible. Runners-up include the Great Basin bristlecone pine, the Ocean quahog clam, the Greanland Shark, and my favorite, the Bowhead Whale!
Chordates
Moving on, let us graph the chordates, and color by class. Also, while we’re at it, let’s quantify the relationship between size and lifespan using a linear regression:
anage.chordata <- anage %>%
filter(
Phylum=="Chordata",
!is.na(`Adult weight (g)`),
!is.na(`Maximum longevity (yrs)`)
)
# Basic Graph
p.chordata <- anage.chordata %>%
ggplot(
aes(`Adult weight (g)`, `Maximum longevity (yrs)`, color=Class, text=str_glue("Common Name: {`Common name`}<br>Data Quality: {`Data quality`}<br>Sample size: {`Sample size`}"))
) +
geom_point(size=0.5) +
scale_x_log10() +
scale_y_log10() +
geom_smooth(
method='lm',
aes(`Adult weight (g)`, `Maximum longevity (yrs)`),
inherit.aes = FALSE,
col="black",
lty="dashed"
)+
labs(
title='Chordates Adult Weight vs Lifespan',
y='Adult Weight - log(g)',
x='Maximum Longevity - log(yrs) '
) +
theme_pubclean() +
labs_pubr()
# Output the interactive plot
ggplotly(p.chordata)
## `geom_smooth()` using formula = 'y ~ x'
Overall, there seems to be a positive trend; we can already see the outliers that are extremely long-lived for their size by hovering over the points to read the common names. As you can see, the longest lived chordates by far are the Rougheye Rockfish, at 205 years; and the Bowhead Whale, at 211 years. A little further down the y axis, we see many more fish, humans (!), and some more whales. Now we can look further at the data by clicking on the classes on the legend to hide those points.
Hide everything so that we can only see Actinopterygii, which is the class of ray-finned fish. This group accounts for almost all of the living fish species, and makes up half of all living vertebrates. As you can see, for any given weight of fish, you could probably find many short lived fish and a couple of really long-lived fish. In contrast, if you look only at Amphibians, you can see that based on our data they pretty much cluster tightly with the exception of the Olm, which lives a very long time for its size.
Looking at Aves, or birds, we can see that there’s actually a fairly clear positive relationship between size and longevity, with most of the density in the plot at the small-and-short-lived end of the tail, fanning out as you get larger and larger. Were I to venture a guess, this fan-shaped pattern is suggestive of the two sides of Peto’s Paradox: some of these birds seem to live longer as per the pattern, but some of them seem to be shorter-lived than one would expect. One thing that caught my attention was how emus and cassowaries, which are sister species, are all shorter-lived than the ostrich, which is at the root of the Ratite clade. While this alone means nothing, its small things of note like this that could lead to the start of some really interesting work!
Mammals
Now, while I may be biased, I want to look at the most interesting clade: mammals!
# Select all mammals with values for size and lifespan
anage.mammalia <- anage.chordata %>%
filter(
Class == 'Mammalia')
# Graph!
p.mammalia <- anage.mammalia %>%
ggplot(
aes(x=`Adult weight (g)`, y=`Maximum longevity (yrs)`, color=Order, text=str_glue("Common Name: {`Common name`}<br>Data Quality: {`Data quality`}<br>Sample size: {`Sample size`}"))
) +
geom_point(
# size=rel(2)
) +
scale_x_log10() +
scale_y_log10() +
geom_smooth(
method='lm',
aes(`Adult weight (g)`, `Maximum longevity (yrs)`),
inherit.aes = FALSE,
col="black",
lty="dashed"
)+
labs(
#title='A Positive Correlation Between Size and Lifespan Across All Mammals',
x='Adult Weight [log(g)]',
y='Maximum\nLongevity\n[log(years)]',
caption = "Human Ageing Genomic Resources:\nAnAge Build 14, 2017"
) +
theme_pubclean() +
labs_pubr()+
theme(
legend.position = "bottom",
# text = element_text(size=24),
# axis.title.y = element_text(angle=0, vjust = 0.5)
)
#p.mammalia
ggplotly(p.mammalia)
## `geom_smooth()` using formula = 'y ~ x'
Here we see the beautiful correlation between mammalian weight and lifespan! Take a moment to notice some of the subtle things this graph suggest. Rodents are actually shorter-lived as a clade than one would expect based on their size, while bats and primates are longer-lived than expected. A commonplace theory behind this is that the ability to escape terrestial predators allows bats and primates to avoid predators that would otherwise hunt them alongside existing terrestial prey, like rodents; since they are now less likely to die due to extrinsic predatorial dangers, genetic changes that allow for extended lifespan can take root and either be selected for actively or evolve neutrally.
The Three Clades: Chiroptera, Paenungulata, and Balaenidae
The three clades that I personally focus on are Chiroptera (bats), Paenungulata (elephants and their closest relatives), and Balaenidae (bowhead and right whales). Both elephants and whales describe extreme examples of size and lifespan in mammals, which leads to interesting questions about how they avoid having astronomically high rates of cancer. Bats, on the other hand, may not seem as interesting at first, but as I will show you next, represent a more robust way of answering the question of Peto’s Paradox.
Bats
anage.chiroptera <- anage.mammalia %>%
filter(Order=='Chiroptera')
# Once more, with vigor!
p.bats <- anage.chiroptera %>%
ggplot(
aes(`Adult weight (g)`, `Maximum longevity (yrs)`, color=Family, text=str_glue("Common Name: {`Common name`}<br>Data Quality: {`Data quality`}<br>Sample size: {`Sample size`}"))
) +
geom_point() +
scale_x_log10() +
scale_y_log10() +
scale_alpha_discrete(range=c(0.5,1)) +
geom_smooth(
method='lm',
aes(`Adult weight (g)`, `Maximum longevity (yrs)`, color=Family),
inherit.aes = F,
se=F
)+
geom_smooth(
method='lm',
aes(`Adult weight (g)`, `Maximum longevity (yrs)`, text="Chiroptera"),
inherit.aes = FALSE,
col="blue",
lty="dashed"
)+
geom_smooth(
data = anage %>% filter(Class == 'Mammalia',!is.na(`Adult weight (g)`), !is.na(`Maximum longevity (yrs)`)),
method='lm',
aes(`Adult weight (g)`, `Maximum longevity (yrs)`, text="Mammalia"),
inherit.aes = FALSE,
col="black", lty="dashed", alpha=0.5
) +
labs(
title='Paenungulata Adult Weight vs Lifespan',
y='Adult Weight [log(g)]',
x='Maximum Longevity [log(yrs)]'
) +
coord_cartesian(xlim=c(3e0,2e3), ylim=c(3e0,1e2))+
theme_pubclean() +
labs_pubr()
## Warning: Using alpha for a discrete variable is not advised.
## Warning in geom_smooth(method = "lm", aes(`Adult weight (g)`, `Maximum
## longevity (yrs)`, : Ignoring unknown aesthetics: text
## Warning in geom_smooth(data = anage %>% filter(Class == "Mammalia",
## !is.na(`Adult weight (g)`), : Ignoring unknown aesthetics: text
ggplotly(p.bats)
## `geom_smooth()` using formula = 'y ~ x'
## `geom_smooth()` using formula = 'y ~ x'
## `geom_smooth()` using formula = 'y ~ x'
Paenungulata
anage.paenungulata <- anage.mammalia %>%
filter(Order %in% c('Proboscidea','Sirenia', 'Hyracoidea'))
p.paen <- anage.paenungulata %>%
ggplot(
aes(`Adult weight (g)`, `Maximum longevity (yrs)`, color=Family, text=str_glue("Common Name: {`Common name`}<br>Data Quality: {`Data quality`}<br>Sample size: {`Sample size`}"))
) +
geom_point() +
scale_x_log10() +
scale_y_log10() +
geom_smooth(
method='lm',
aes(`Adult weight (g)`, `Maximum longevity (yrs)`),
inherit.aes = FALSE,
col="blue",
lty="dashed"
)+
geom_smooth(
data = anage.mammalia,
method='lm',
aes(`Adult weight (g)`, `Maximum longevity (yrs)`),
inherit.aes = FALSE,
col="black", lty="dashed", alpha=0.5
) +
coord_cartesian(xlim=c(1e2,1e7), ylim=c(1e1,2e2))+
labs(
title='Paenungulata Adult Weight vs Lifespan',
y='Adult Weight - log(g)',
x='Maximum Longevity - log(yrs) '
) +
theme_pubclean() +
labs_pubr()
ggplotly(p.paen)
## `geom_smooth()` using formula = 'y ~ x'
## `geom_smooth()` using formula = 'y ~ x'
Cetacea
anage.cetacea <- anage.mammalia %>%
filter(Order %in% c('Cetacea'))
p.cetacea <- anage.cetacea %>%
ggplot(
aes(`Adult weight (g)`, `Maximum longevity (yrs)`, color=Family, text=str_glue("Common Name: {`Common name`}<br>Data Quality: {`Data quality`}<br>Sample size: {`Sample size`}"))
) +
geom_point() +
scale_x_log10() +
scale_y_log10() +
geom_smooth(
method='lm',
aes(`Adult weight (g)`, `Maximum longevity (yrs)`),
inherit.aes = FALSE,
col="blue",
lty="dashed"
)+
geom_smooth(
data = anage.mammalia,
method='lm',
aes(`Adult weight (g)`, `Maximum longevity (yrs)`),
inherit.aes = FALSE,
col="black", lty="dashed", alpha=0.5
) +
coord_cartesian(
# xlim=c(1e2,1e7), ylim=c(1e1,2e2)
)+
labs(
title='Cetacea Adult Weight vs Lifespan',
y='Adult Weight - log(g)',
x='Maximum Longevity - log(yrs) '
) +
theme_pubclean() +
labs_pubr()
ggplotly(p.cetacea)
## `geom_smooth()` using formula = 'y ~ x'
## `geom_smooth()` using formula = 'y ~ x'