DOI: 10.5061/dryad.7m0cfxq9h
title: Data and code from: Bergmann’s rule: Why does body size increase with latitude?

description: 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.
description: # Data and code from: Bergmann’s rule: Why does body size increase with
 latitude? Dataset DOI:
 [10.5061/dryad.7m0cfxq9h](https://doi.org/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/](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/](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](https://science.ebird.org/en/status-and-trends) 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](https://prism.oregonstate.edu). VegScape NDVI:
 Sourced from the USDA [VegScape
 explorer](https://nassgeodata.gmu.edu/VegScape/). GIMMS 3g NDVI: Sourced
 from [NASA Earthdata](https://www.earthdata.nasa.gov). NCEI Climate Data:
 Monthly Palmer Modified Drought Index (PMDI) data from the National
 Centers for Environmental Information.
 [NClimDiv](https://www.ncei.noaa.gov/access/metadata/landing-page/bin/iso?id=gov.noaa.ncdc:C00005) 
 
 ## Access information Other publicly accessible locations of the data: *
 **VegScape:** Data is accessible via the USDA NASS geospatial portal
 ([nassgeodata.gmu.edu/VegScape](https://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](https://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](https://science.ebird.org)) and the `ebirdst` R
 package
 ([doi.org/10.2173/ebirdst.2022](https://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/](https://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](https://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).