Data from: Persistent body size bias in the fossil record of Cenozoic North American mammals
Data files
Sep 19, 2025 version files 1.10 MB
-
analysis_scripts.zip
63.53 KB
-
mass_csvs.zip
823.77 KB
-
README.md
14.99 KB
-
supplementary_regressions.zip
196.71 KB
Abstract
Body size is a key organismal trait with profound implications ranging from individual physiology to large-scale macroecological or macroevolutionary phenomena. Among extant terrestrial vertebrates, peak diversity commonly occurs at small body size. Similarities between the body size distributions of fossil and extant mammals have been used to argue that fossil record signals are robust, yet preservation and collector biases disproportionately favour the sampling of large taxa and likely underrepresent small-sized diversity. Here, we quantify the effects of these biases on the body size distributions of North American mammals through the Cenozoic. We assess how these distributions have changed with new palaeontological discoveries and evaluate sampling standardisation as a potential correction for body size bias. Our results show bias in the mammal record to be persistent and severe. Sampling standardisation has no consistent effect on recovered distribution shape, likely because sample coverage estimators cannot account for changes in the scope of the sampling universe driven by a combination of historical worker interest and the preservational characteristics of a small pool of formations. Short of a novel standardisation method that can account for publication biases, deriving non-artefactual fossil body size signals may ultimately depend on targeted, systematic sampling of exceptional deposits.
Dataset DOI: 10.5061/dryad.0000000gp
Description of the data and file structure
README for: Correcting bias in the body size distribution of North American Cenozoic mammals
Data for this project can be broken into two categories: that for the primary analyses, and a supplementary section used to derive new mass regressions for two mammal groups. These are described, respectively, below.
For Code, those needed for the supplementary section are included within “Files and Variables”; the remaining scripts are used for all primary analyses and are found in “Code/software.”
Files and variables
PRIMARY ANALYSIS
(all contained in mass_csvs.zip to preserve directory structure when running code)
File: full_mass_dataset.xlsx
Description: an excel workbook which contains the list of all measurements and/or mass groupings used to calculate and categorize mammal body mass in this study. It also includes references for the source of the measurements per each species and any relevant notes.
The data from this workbook comprises all of the .csv files listed in this section; the variables it contains will therefore be listed for each of those entries.
File: mammal_body_mass_refs.pdf
Description: is the associated bibliography for the above dataset
File: extant_mass_add.csv
Description: contains body mass data for extant mammal species, it is sourced by add_body_size.R
Variables:
operational_taxon_name: binomial name (genus + species) of a species in the dataset
higher_classification: a coarser taxonomic grouping (typically order) for that species
family_or_subclade: a finer taxonomic grouping (typically family) for that species
mass_kg: body mass, in kg for that species
File: multituberculate_mass_add.csv
Description: contains measurement data used to calculate body mass for multituberculates, it is sourced by add_body_size.R
Variables:
operational_taxon_name: binomial name (genus + species) of a species in the dataset
higher_classification: a coarser taxonomic grouping (typically order) for that species
family_or_subclade: a finer taxonomic grouping (typically family) for that species
m1_length_mm: length of the lower first molar of that species, in mm
m1_max_width_mm: maximum width of the lower first molar of that species, in mm
m1_area_mm2: area of the lower first molar of that species, in mm2
File: proboscidean_mass_add.csv
Description: contains measurement data used to calculate body mass for proboscideans, it is sourced by add_body_size.R
Variables:
operational_taxon_name: binomial name (genus + species) of a species in the dataset
higher_classification: a coarser taxonomic grouping (typically order) for that species
family_or_subclade: a finer taxonomic grouping (typically family) for that species
femur_length_mm: length of the femur of that species, in mm
File: main_dataset_mass_add.csv
Description: contains measurement data used to calculate body mass for all other mammalian groups in the dataset, it is sourced by add_body_size.R
Variables:
operational_taxon_name: binomial name (genus + species) of a species in the dataset
higher_classification: a coarser taxonomic grouping (typically order) for that species
family_or_subclade: a finer taxonomic grouping (typically family) for that species
m1_length_mm: length of the lower first molar of a species, in mm
m1_max_width_mm: maximum width of the lower first molar of a species, in mm
m1_area_mm2: area of the lower first molar of a species, in mm2
m2_length_mm: length of the lower second molar of a species, in mm
m2_max_width_mm: maximum width of the lower second molar of a species, in mm
m2_area_mm2: area of the lower second molar of a species, in mm2
average_molar_length_mm: the average length of the molars of a species of "creodont"; either two or three molars depending on taxonomic classification (see full_mass_dataset.xslx)
lower_tooth_row_length_mm: the length of the lower tooth row (molars and premolars) of a species of rodent
femur_length_mm: the length of the femur of a species, in mm
humerus_length_mm: the length of the humerus of a species, in mm
NOTE: all entries listed as "NA" in this table indicate that a particular measurement variable is not used to calculate body mass for that species, and enable the mass estimation script to work correctly (see Code/software).
File: na_mass_bins.csv
Description: contains body mass categorization data for taxa with no available measurement information, it is sourced by the function unmassed_taxa_binning.R
Variables:
operational_taxon_name: binomial name (genus + species) of a species in the dataset
higher_classification: a coarser taxonomic grouping (typically order) for that species
family_or_subclade: a finer taxonomic grouping (typically family) for that species
mass_bin_coarse: estimated mass grouping of that species according to the coarse framework of "small" (<1 kg), "medium" (1-30 kg), and "large" (>30 kg) body mass categories
mass_bin_fine: estimated mass grouping of that species according to the finer framework of order-of-magnitude body mass categories
comparison: the group or taxon used to justify the assignment of the above mass categories, on the basis of similar size or other close relationship
File: mammal_synonyms_raw.csv
Description: contains synonymy data manually taken from the PBDB website (www.paleobiodb.org) to account for the synonymization of species through historical research time, it is sourced by get_historical_opinions.R
Variables:
taxon_group: a unique number given to each valid taxon in the table
taxon_name: the name replacing an earlier, invalid designation for the taxon
synonym_name: an earlier, invalid designation for the taxon
synonymy_pubyr: the year of the publication which synonymized the entry in synonym_name into the entry in taxon_name
notes: any further information on complications with a particular synonymy, or on synonymies not listed on the PBDB website which need to be instated given the literature (this variable is not used in any of the scripts and is purely for user information)
Additional Dataset of Smith et al. (2003):
The script summary_figure.R needs to source body mass data for extant and Pleistocene-extinct North American mammals, from the dataset of Smith et al. (https://doi.org/10.1890/02-9003). Their dataset will need to be downloaded and titled "smith_2003_modern_dataset.csv", and added to the mass*_*csvs folder.
SUPPLEMENTARY REGRESSION CALCULATION
(all contained in supplementary_regressions.zip)
File: pholidotamorph_dataset.csv (in subfolder regression_csvs)
Description: contains the measurement data used to derive novel body mass regressions for fossil pholidotamorphs. Includes references and notes columns which are quickly pruned by pholidotamorph_mass_regression.R after sourcing it
Variables:
taxon: binomial name (genus + species) of a species in the dataset
higher_classification: a coarser taxonomic grouping (typically order) for that species
family: the family to which that species belongs
fossoriality: a classification of life ecology for that species, either semi-fossorial or strictly fossorial, or in the case of pangolins, also potentially arboreal or terrestrial
body_mass_g: the body mass for that species, in g
femur_length_mm: the length of the femur for that species, in mm
humerus_length_mm: the length of the humerus for that species, in mm
source: the reference(s) for all measurement data derived (this variable is not used in any of the scripts and is purely for user information)
notes: any further information on how data was obtained or tabulated (this variable is not used in any of the scripts and is purely for user information)
NOTE: all entries listed as "NA" in this table indicate that a particular measurement (humerus length or femur length) was not available for that species from the references cited in "source", and enable pholidotamorph_mass_regression.R to work correctly.
File: pholidotamorph_refs.pdf (in subfolder regression_csvs)
Description: is the associated bibliography for the above dataset
File: proboscidean_dataset.csv (in subfolder regression_csvs)
Description: contains the measurement data used to derive novel body mass regressions for fossil proboscideans. Includes references column which is pruned by proboscidean_mass_regression.R after sourcing it
Variables:
taxon: binomial name (genus + species) of a specimen in the dataset
family: the family to which that specimen belongs (Gomphotheriidae, Mammutidae, or Elephantidae)
humerus_max_length_cm: the maximum length (as opposed to the length in articulation) of the humerus for that specimen, in cm
femur_length_cm: the length of the femur for that specimen, in cm
shoulder_height_mm: the estimated in-flesh shoulder height for that specimen, in cm
estimated_mass_kg: the estimated body mass for that specimen, in kg
reference: the reference for all measurement and mass data derived (this variable is not used in any of the scripts and is purely for user information)
NOTE: all entries listed as "NA" in this table indicate that a particular measurement (humerus length or femur length) was not available for that specimen from the references cited in "reference", and enable proboscidean_mass_regression.R to work correctly.
File: proboscidean_refs.pdf (in subfolder regression_csvs)
Description: is the associated bibliography for the above dataset
File: pholidotamorph_mass_regression.R (in subfolder regression_scripts)
Description: computes the novel regressions to calculate mass in fossil pholidotamorphs, along with associated statistics
File: proboscidean_mass_regression.R (in subfolder regression_scripts)
Description: computes the novel regressions to calculate mass in fossil proboscideans, along with associated statistics
Code/software
The script “run_all.R” sources all of the following scripts in analysis_scripts in order, enabling a complete run of all analyses. Default settings and required packages for the entire analysis are also given in this script.
(all contained in analysis_scripts.zip to preserve directory structure when running code)
REQUIRED SCRIPTS FOR ALL ANALYSES:
pbdb_mammal_download.R downloads North American mammal occurrence data from the Paleobiology Database, creating the basic data object
add_body_size.R computes body masses for taxa in the download using several allometric regressions and compiles an occurrence-mass data object used in all subsequent analyses
get_historical_opinions.R creates recombination and synonymy tables that track changes in historical opinions of taxon status for discovery curves (analyses relying on species diversity through historical research time– i.e., the discovery curves)
SUB-FOLDERS (all .zip files):
“define_regions” contains a script and csvs necessary to filter downloaded mammal data to occurrences from North America. It is sourced by pbdb_mammal_download.R
NOTE: "define_regions" is hosted as supplementary material on Zenodo https://doi.org/10.5281/zenodo.17158415. Please ensure this file is downloaded and extracted as an unzipped folder into the base directory used to run these analyses.
“geoMST_functions” contains scripts necessary to perform spatial analysis. It is sourced by spatial_analysis.R
“functions” contains three scripts which are sourced by most of the analyses. These are:
unmassed_taxa_binning.R computes body size categories (either coarse small/medium/large or order-of-magnitude) for taxa which do not have a body mass computable by add_body_size.R
chao_shen_coverage.R computes the Chao and Shen (2010) version of Good’s u for sample coverage analyses
drop_obsolete_occs.R in the case of occurrences where remains where initially identified as one taxon and subsequently reattributed to another, this removes the obsolete, older occurrence with the now-incorrect attribution
ANALYSES:
calculate_bsfds.R computes the face-value and sampling standardized body size distributions
coverage_dist_plot.R computes the distribution of sample coverages across body mass category in each time bin at present day
coverage_through_time.R computes the level of sample coverage through historical research time for the different body mass categories and time bins (note: this does not implement a historical recombination/synonymization procedure)
plot_dcs.R computes all discovery curves (raw time-ordered, vs. occurrences, vs. references, sampling-standardized time-ordered, vs. occurrences) for the different mass categories and time bins.
plot_description_curve.R computes time-ordered curves of species diversity for the different mass categories and time bins using dates of species description, in order to account for an error in the reporting of oldest occurrences caused by a problematic reference in the PBDB.
plot_raw_bsfds_time.R computes a plot of face-value body size distributions for the different time bins for the years 1900, 1930, 1950, 2000, and 2024, in sequence.
skew_mass_through_time.R computes the value of skew and median mass through historical research time for the different body mass categories (note: this does not implement a historical recombination/synonymization procedure)
spatial_analysis.R computes spatial coverage (as summed MST length) through research time for the different body mass categories and time bins (note: this does not implement a historical recombination/synonymization procedure)
short_historical_analyses.R computes the counts of collections, formations, and references through research time for the different body mass categories and time bins (note: this does not implement a historical recombination/synonymization procedure)
willwood_plot.R computes a [non-annotated] plot comparing the body size distribution of the exceptionally-well-sampled Willwood Formation to other major occurrence-contributing Formations from the North American Cenozoic, both those favoring the preservation of large and small taxa.
summary_figure.R computes the [non-annotated] summary figure (main text figure 3), which compares the body size distributions for the entire Neogene and Paleogene to those of extant North American mammals and extant North American mammals plus Pleistocene-extinct taxa [megafauna].
Access information
Data was derived from the following sources:
- The literature, using all references listed in the associated .pdf documents
