Data and code from: Bergmann’s rule: Why does body size increase with latitude?
Data files
Feb 09, 2026 version files 6.17 MB
-
buow_data.csv
5.78 MB
-
BUOWAnalysis.Rmd
142.19 KB
-
ClimateDataExtraction.Rmd
113.52 KB
-
Fig1_data.zip
74.52 KB
-
Figure1Code.Rmd
29.48 KB
-
NDVI_FILES.txt
16.07 KB
-
README.md
16.67 KB
Abstract
Bergmann’s rule describes the tendency for endothermic body size to increase with latitude, a pattern often attributed to climatic factors. However, the underlying developmental and evolutionary mechanisms remain debated. Latitudinal gradients in temperature and precipitation are often thought to be responsible for Bergmann’s rule, but climate may generate such geographical patterns via several alternative pathways. We examined geographic patterns in body size of 5,596 burrowing owls (Athene cunicularia) throughout western North America to inform the underlying processes responsible for range-wide phenotypic variation. Burrowing owls followed Begmann’s rule, with larger individuals in northern latitudes. We also detected a longitudinal gradient, with the largest owls in the northwest of the breeding range. We considered several mechanisms to explain geographic gradients in burrowing owl body size: developmental plasticity, reversible plasticity, and local adaptation. Developmental plasticity links body size to early-life environmental conditions, causing permanent changes; reversible plasticity involves temporary physiological shifts; local adaptation reflects evolutionary changes optimizing body size to local conditions. We tested predictions generated by each of these three mechanisms to assess how resource availability and climate shape continental body size patterns in burrowing owls. Spring precipitation explained variation in adult body mass, with contrasting effects in warm versus cold climates, supporting both local adaptation to thermal extremes and reversible plasticity in response to resource availability. Drought explained variation in juvenile body mass, supporting the developmental plasticity mechanism via resource availability. Juvenile mass was more influenced by maximum temperature during the prior breeding season than by natal year conditions, suggesting that extreme heat may affect parental condition or suppress resource availability into the following year, consistent with developmental or reversible plasticity. Extreme temperatures and drought during the prior breeding season explained variation in adult tarsus length, more so than 21-year mean climate conditions or geographic gradients, supporting the developmental plasticity mechanism via thermal or drought stress. Body size of burrowing owls largely conforms to Bergmann’s rule and appears to reflect both acute and evolutionary responses to resource availability and thermoregulatory mechanisms depending on whether a trait was more plastic (body mass) or more fixed (tarsus) during adulthood.
Dataset DOI: 10.5061/dryad.7m0cfxq9h
Description of the data and file structure
This dataset and associated R Markdown code accompany the study "Bergmann's Rule: Why does body size increase with latitude?" Leveraging an extensive morphometric dataset of 5,597 burrowing owls (Athene cunicularia) sampled across the western United States (2000–2020), we examined the environmental mechanisms driving continental body size gradients. We analyzed body mass (juveniles and adults), wing chord, and tarsus length in relation to four climatic variables: drought, temperature, precipitation, and primary productivity. These variables were evaluated across multiple temporal scales (acute, one-year lagged, and long-term) using linear mixed-effects models that accounted for variation among years and sampling sites. This approach allowed us to evaluate patterns consistent with reversible plasticity, developmental plasticity, and local adaptation in relation to climatic variation.
Files and variables
File: "BUOWAnalysis.Rmd"
Description: The primary analysis for Functional Ecology article: “Bergmann’s rule: Why does body size increase with latitude?”.
File: "buow_data.csv"
Description: The data file for BUOWAnalysis.Rmd. Missing values are indicated as "NA".
Variables
- ID: Unique row identifier
- band_stdzd: Unique identifier for each individual, based on the USGS numeric code applied to the metal leg band.
- dateBanded: Date of measurement
- year: Year of measurement
- site: Site of measurement
- State: State of measurement
- region: Level-III ecoregion classifications (Wiken et al., 2011)
- nest: Unique nest identifier
- age: Numeric age code for adults: 1 = SY, 2 = AHY, 3 = ASY (see AgeClass)
- AgeClass: J = Juvenile, SY = Second year, AHY = After-hatching year, ASY = After-second year
- sex: 1 = Female , 2 = Unknown , 3 = Male
- mass: = Body mass in grams
- wing: Wing length in mm
- tarsus_mm: Tarsus in mm
- tars_p: Tarsus measurement protocol. Y= standard protocol, N= other protocol.
· nestinitdate: Estimated nest initiation julian date.
- daysage_mass_un: Age of juveniles in days preserved from z-standardization.
- daysage_mass: Duplicate of "daysage_mass_un" but separated for z-standardization.
- ddays: Estimate days since clutch initiation date.
- lat: Latitude of capture location or site centroid.
- long: Longitude of capture location or site centroid.
- elevation: Elevation of capture location or site centroid.
- apr.pmdi.prev: Monthly Palmer Modified Drought Index (PMDI) for April of the previous year.
- aug.pmdi.prev: Monthly Palmer Modified Drought Index (PMDI) for August of the previous year.
- capmo.pmdi: Monthly Palmer Modified Drought Index (PMDI) for the capture month.
- jul.pmdi.prev: Monthly Palmer Modified Drought Index (PMDI) for July of the previous year.
- jun.pmdi.prev: Monthly Palmer Modified Drought Index (PMDI) for June of the previous year.
- mar.pmdi.prev: Monthly Palmer Modified Drought Index (PMDI) for March of the previous year.
- maxNDVI: Maximum VegScape Normalized Difference Vegetation Index (NDVI) value from January–July of the capture year
- maxNDVI.prev: Maximum VegScape Normalized Difference Vegetation Index (NDVI) value from January–July of the previous year
- may.pmdi.prev: Monthly Palmer Modified Drought Index (PMDI) for May of the previous year.
- minNDVI: Minimum VegScape Normalized Difference Vegetation Index (NDVI) value from January–July of the capture year.
- minNDVI.prev: Minimum VegScape NDVI value from January–July of the previous year for the individual’s location.
- ndviG.max.21y.norm: Average of the maximum NDVI from GIMMS 3g over the 21 years leading up to capture.
- ndviG.max.5y.norm: Average of the maximum NDVI from GIMMS 3g over the 5 years leading up to capture.
- ndviG.max.cy: Maximum NDVI from GIMMS 3g in the capture year
- ndviG.max.py: Maximum NDVI from GIMMS 3g in the previous year.
- ndviG.min.21y.norm: Average of the minimum NDVI from GIMMS 3g over the 21 years leading up to capture.
- ndviG.min.5y.norm: Average of the minimum NDVI from GIMMS 3g over the 5 years leading up to capture.
- ndviG.min.cy: Minimum NDVI from GIMMS 3g in the capture year.
- ndviG.min.py: Minimum NDVI from GIMMS 3g in the previous year.
- ndviG.ran.21y.norm: Average of the NDVI range (max − min) from GIMMS 3g over the 21 years leading up to capture.
- ndviG.ran.5y.norm: Average of the NDVI range (max − min) from GIMMS 3g over the 5 years leading up to capture.
- ndviG.ran.cy: NDVI range from GIMMS 3g in the capture year.
- ndviG.ran.py: NDVI range from GIMMS 3g in the previous year.
- pmdi.1y.norm: One-year rolling average of monthly Palmer Modified Drought Index (PMDI).
- pmdi.21y.norm: 21-year rolling average of monthly Palmer Modified Drought Index (PMDI).
- pmdi.3m.norm: Three-month average Palmer Modified Drought Index (PMDI) leading up to capture.
- pmdi.5y.norm: Five-year rolling average Palmer Modified Drought Index (PMDI) leading up to capture.
- pmdi.6m.norm: Six-month rolling average Palmer Modified Drought Index (PMDI) leading up to capture.
- pmdi.prev.apr: April PMDI from the previous year
- pmdi.prev.jun: June PMDI from the previous year
- pmdi.prev.may: May PMDI from the previous year
- pmdi.prev.spr: Mean PMDI for April–June of the previous year
- pmdi.prev.sum: Mean PMDI for June–August of the previous year
- ppt.21y.cum: PRISM 21-year rolling average of cumulative annual precipitation (12-month totals) leading up to capture year.
- ppt.24m.cum: PRISM Cumulative precipitation from the previous 24 months.
- ppt.5y.cum: PRISM 5-year rolling average of cumulative annual precipitation (12-month totals) leading up to capture year.
- ppt12: PRISM Cumulative precipitation over the previous 12 months.
- ppt12.prev: PRISM Cumulative precipitation over the 12 months prior to the previous year.
- ppt6: PRISM Cumulative precipitation over 6 months (January to June) at capture.
- ppt6.prev: PRISM Cumulative precipitation over 6 months (January to June) of the previous year.
- rangeNDVI: Range (maximum − minimum) of VegScape NDVI from January–July of the previous year.
- rangeNDVI.prev: Range (maximum − minimum) of VegScape NDVI from January–July of the previous year.
- rangeNDVI_sp: Range of VegScape Minimum NDVI and average spring NDVI (April–June) of the capture year.
- spNDVI: Mean VegScape NDVI for spring (April–June) of the capture year..
- spNDVI.prev: Mean VegScape NDVI for spring (April–June) of the previous year.
- spr.pmdi: Mean Palmer Modified Drought Index (PMDI) for the capture year, averaged over April–June.
- spr.pmdi.21: Twenty-one-year mean Palmer Modified Drought Index (PMDI) for spring (April–June).
- sum.pmdi: Mean Palmer Modified Drought Index (PMDI) for the capture year averaged June–August.
- sum.pmdi.21: Twenty-one-year mean Palmer Modified Drought Index (PMDI) for summer (June-August)
- tmax.56: PRISM Average maximum temperature for May–June of the capture year.
- tmax.56.prev: PRISM Average maximum temperature for May–June of the previous year.
- tmax.567: PRISM Average maximum temperature for May–July of the capture year.
- tmax.567.prev: PRISM Average maximum temperature for May–July of the previous year.
- tmax.6: PRISM Maximum June temperature of capture year.
- tmax.6.prev: PRISM Maximum June temperature of the previous year.
- tmax6.21y.norm: PRISM 21-year rolling average of maximum June temperature leading up to capture.
- tmax6.5y.norm: PRISM 5-year rolling average of maximum June temperature leading up to capture.
- tmin.3: PRISM Minimum March temperature of capture year.
- tmin.3.prev: PRISM Minimum March temperature of previous year.
- tmin3.21y.norm: PRISM 21-year rolling average of minimum March temperature leading up to capture year.
- tmin3.5y.norm: PRISM 5-year rolling average of minimum March temperature leading up to capture year.
- trang: PRISM Temperature range (June maximum − March minimum) for the capture year
- trang.21y.norm: PRISM 21-year rolling average of temperature range (June maximum − March minimum) leading up to capture year.
- trang.5y.norm: PRISM 5-year rolling average of temperature range (June maximum − March minimum) leading up to capture year.
- trang.prev: PRISM Temperature range (June maximum − March minimum) for the previous year.
- win.pmdi: Mean Palmer Modified Drought Index (PMDI) for the capture year, averaged over January–March.
- win.pmdi.21: Twenty-one-year mean Palmer Modified Drought Index (PMDI) for winter (January–March).
- winspr.pmdi: Mean Palmer Modified Drought Index (PMDI) for the capture year, averaged over January–June.
- winspr.pmdi.21: Twenty-one-year mean Palmer Modified Drought Index (PMDI) for winter–spring (January–June).
-
File: "NDVI_FILES.txt"
Description: This text file contains a catalog of vegetation index data file names from two NDVI datasets:
File: "ClimateDataExtraction.Rmd"
Description: This R Markdown file primarily serves as a formal record of data provenance and transparency, documenting the extraction of environmental datasets into our burrowing owl morphology analysis.
File: "Fig1_data.zip"
Description: This is the compressed folder containing the required files for generating Fig. 1 of our research article. It contains the following files:
File: "Figure1_Dataframe.csv"
Description: A CSV dataframe of adult burrowing owl capture records used for model training. Missing values are indicated as "NA". The data columns include:
ID: Unique row identifier
· band_stdzd: Unique identifier for each individual, based on the USGS numeric code applied to the metal leg band.
· mass: Body mass in grams
· ppt6.21Y: PRISM 21-year average of cumulative six-month precipitation (January to June totals) from 2000 to 2020 extracted to owl capture location or site centroid.
· maxNDVI.21Y: 21-year average VegScape June maximum NDVI from 2000 to 2020 extracted to owl capture location or site centroid.
· tmx.mean6: PRISM 21-year average maximum June temperature from 2000 to 2020 extracted to owl capture location or site centroid.
· tmin.mean3: PRISM 21-year average minimum March temperature from 2000 to 2020 extracted to owl capture location or site centroid.
· minNDVI.21Y: 21-year average VegScape March minimum NDVI from 2000 to 2020 extracted to owl capture location or site centroid..
· lat: Latitude of capture location or site centroid.
· long: Longitude of capture location or site centroid.
· age: Age of adult owls SY = Second year, AHY = After-hatching year, ASY = After-second year
· sex: F = Female, M = Male
· site: Site of measurement
· year: Year of measurement
· nestinitdate: Estimated nest initiation julian date
· capdate: Capture date
· NDVIrange21: Annual VegScape maxNDVI.21Y - minNDVI.21Y averaged over 21 years (2000 to 2020).
· ddays: Estimate days since clutch initiation date.
· wing: Wing chord in mm
File: "template.tif"
Description: Raster template at 4 km resolution (matching PRISM data) defining the spatial extent of the study area. Align and register other raster data to this template using Figure1Code.Rmd to ensure consistent spatial referencing for generating Figure 1.
File: "Figure1Code.Rmd"
Description: This R Markdown file supports the reproduction of Figure 1 and Figures S4–S6 in Functional Ecology (FE-2025-01220), for modeling morphological gradients of burrowing owl across the western United States. The provided code generates predictive maps of body mass and wing length using Random Forest and GLM frameworks.
Code/software
Primary Software
- R (Version 4.4.2 (2024-10-31 ucrt)): All analyses were performed using the R statistical computing environment. https://www.r-project.org/.
- R Studio (Version 2024.9.1.394): Posit team (2024). RStudio: Integrated Development Environment for R. Posit Software, PBC, Boston, MA. URL: http://www.posit.co/. Required for opening .Rmd files.
Required R Packages for "BUOWAnalysis.Rmd": To run the primary analysis code, the following libraries are required:
lme4, nlme, glmmTMB, mgcv, MuMIn, AICcmodavg, performance, car, tidyverse, lubridate, magick, ggplot2, sjPlot, ggeffects, ggpubr, ggrepel, mgcViz, RColorBrewer, viridis, corrplot, gstat, knitr, kableExtra, shiny , cowplot
Required R Packages for "Figure1Code.Rmd": To run this code, the following libraries are required:
caret, terra , sf , tidyterra, geodata ggplot2, cowplot, patchwork, viridis, ggspatial, tidyverse, mapview, leaflet, performance
External Data Access:
eBird Status and Trends: Abundance rasters must be downloaded directly from the Cornell Lab of Ornithology using a personal access key.
- Optional: eBird data can be acquired using
ebirdst
Required R Packages for "ClimateDataExtraction.Rmd":
terra, sf, prism, zoo ggplot2, cowplot, patchwork, viridis, mapview, leaflet, tidyverse, pbapply, nclimdivr, lubridate, reshape2, stringr, purrr
External Data Access:
PRISM Climate Data: Accessed via the prism R package or prism.oregonstate.edu.
VegScape NDVI: Sourced from the USDA VegScape explorer.
GIMMS 3g NDVI: Sourced from NASA Earthdata.
NCEI Climate Data: Monthly Palmer Modified Drought Index (PMDI) data from the National Centers for Environmental Information. NClimDiv
Access information
Other publicly accessible locations of the data:
- VegScape: Data is accessible via the USDA NASS geospatial portal (nassgeodata.gmu.edu/VegScape) and the USDA Ag Data Commons (Identifier: USDA-NASS-00005).
- GIMMS 3g+: The full long-term time series (1981–2022) is archived at the NASA Oak Ridge National Laboratory (ORNL) Distributed Active Archive Center (DAAC) (doi.org/10.3334/ORNLDAAC/2187).
- eBird Status and Trends: Data products (Version 2022) are available through the Cornell Lab of Ornithology’s science portal (science.ebird.org) and the
ebirdstR package (doi.org/10.2173/ebirdst.2022) using a personal access key. - NCEI PMDI: The Palmer Modified Drought Index is hosted by the NOAA National Centers for Environmental Information (NCEI) within the nClimDiv (U.S. Climate Divisional) dataset (ncei.noaa.gov/pub/data/cirs/climdiv/).
- Oregon State PRISM: Gridded climate data is available through the PRISM Climate Group at Oregon State University (prism.oregonstate.edu).
Data was derived from the following sources:
- VegScape: Derived from the 250-meter Moderate Resolution Imaging Spectroradiometer (MODIS) sensors on NASA’s Terra and Aqua satellites, processed by the USDA National Agricultural Statistics Service (NASS) and the Center for Spatial Information Science and Systems at George Mason University.
- GIMMS 3g+: Derived from the Advanced Very High Resolution Radiometer (AVHRR) instruments on the NOAA satellite series (NOAA-7 through NOAA-19) and MetOp-A/B/C.
- eBird Status and Trends: Derived from semi-structured citizen-science observations modeled and a variety of spatiotemporal datasets, including NASA MODIS land cover and SRTM elevation data.
- NCEI PMDI: Derived from station-based temperature and precipitation observations within the Global Historical Climatology Network (GHCN-Daily), aggregated into the nClimDiv divisional boundaries.
- Oregon State PRISM: Derived from multiple weather station networks (including NOAA COOP/ASOS, USDA SNOTEL/SCAN, USFS RAWS, CoCoRaHS) using the Parameter-elevation Regressions on Independent Slopes Model (PRISM).
