This is an open access article under the terms of the Creative Commons Attribution License, which permits use, distribution and reproduction in any medium, provided the original work is properly cited.

**Appendix S1.**

Climate‐driven changes to phenology are some of the most prevalent climate change impacts, yet there is no commonly accepted approach to modeling phenological shifts. Here, we present a hierarchical modeling framework for estimating intra‐annual patterns in phenology (e.g., peak phenological expression) and analyzing interannual rates of change in peak phenology. Our approach allows for the estimation of multiple sources of uncertainty, including observation error (e.g., imperfect observations of intra‐annual patterns in phenology like peak flowering date) and variation in phenological processes (e.g., uncertainty in the rate of change in annual peak phenological expression). Covariates may be included as predictors of annual peaks or interannual variability in phenological responses. We demonstrate the use of our hierarchical modeling framework in two migratory species—juvenile chum salmon and Swainson's thrush. We acknowledge that the complexity of hierarchical models can be difficult to implement from scratch and present an R package that can be used to model peak dates and range (number of days between 25th‐ and 75th‐quartile dates), as well as a rate of change in peak phenology. Increasing precision, calculating uncertainty, and allowing for imperfect data sets when estimating phenological shifts should help ecologists understand how organisms respond to climate change.

The prevalence and implications of climate‐driven phenological changes to population dynamics is a key concern in the ongoing biodiversity loss crisis (Bowlin et al., 2010; Iler et al., 2021). However, there is no commonly accepted approach to analyzing long‐term shifts in often nonlinear phenological expression data. The discovery of climate change‐driven phenological shifts in the late 1990s (Parmesan & Yohe, 2003; Root et al., 2003; Visser et al., 1998) has led to a recent increase in phenology data collection, though a few data sets span centuries (e.g., cherry blossom phenology; Aono, 2015). As a result, many phenological data sets are now reaching a length on which phenological shifts could be detected (10–20 years in length).

A key challenge with phenology time series data is that while population‐level expression of a phenological trait may be linear across years, it is often bell‐shaped within a year. This has led to the use of seasonal summary‐level data, such as observed onset (e.g., date of first flowers; Pope et al., 2013) or cumulative proportion analyses (e.g., date of 50% cumulative migration; Teichert et al., 2020), in the examination of long‐term phenological shifts. These approaches pose several problems. Because finer‐scale observations (daily, weekly) are often collapsed into these seasonal measurements, the observed onset methods fail to characterize the shape of the phenology trait distribution and can conflate changes in onset (i.e., earlier/later) with changes in the trait distribution (i.e., wider/narrower) (e.g., Stemkovski et al., 2022). Additionally, both observed onset and cumulative proportion analysis are sensitive to the period of observation. For example, if surveys always begin on a set calendar date, but phenology is advancing, an increasing proportion of individuals will not be counted. Finally, both techniques fail to account for and propagate intra‐annual uncertainty in the timing of a phenological event (e.g., peak flowering) to overall interannual rates of phenological shifts. Thus, there is a need for new techniques that can both characterize intra‐annual phenological trait distribution and propagate uncertainty in the annual timing of phenological events to more accurately reflect rates of changing species phenology.

Here we developed a hierarchical modeling framework for identifying annual peak phenology and analyzing interannual phenological shifts using seasonal trait expression data. Our approach estimates (1) intra‐annual patterns of trait expression such that date of peak (mean) and 25th and 75th quartiles, as well as the interquartile range (days between 25th and 75th quartile), with associated uncertainty and (2) an interannual rate of change in peak phenology that incorporates intra‐annual uncertainty. This modeling framework is available as an R package, phenomix. To demonstrate the utility of our approach, we compare our modeling framework with the cumulative proportion analysis approach using the migration of juvenile chum salmon (*Oncorhynchus keta*) and Swainson's thrush (*Catharus ustulatus swainsoni*) as case studies.

We begin by briefly summarizing our statistical approach to modeling phenology, combining parametric assumptions and mixed‐effects hierarchical models. We apply these methods to two case studies to (1) demonstrate how our modeling framework can be used to quantify shifts in phenology and (2) compare our modeling framework with cumulative proportion analyses, one of the most common types of analysis for phenology data.

Previous research highlighted that model‐based approaches to estimating phenological change perform better than the use of simple empirical observations (e.g., observed onset; Moussus et al., 2010). A variety of parametric and nonparametric models exist to characterize phenological change from empirical observations. While nonparametric methods can be more flexible for data that are well modeled with existing distributions (e.g., generalized additive model), parametric methods offer a simple approach to simultaneously (1) summarize processes with a small number of parameters and (2) produce outputs that are comparable across systems and with other approaches (e.g., 25th and 75th quartiles). Historically, the most common parametric approach has been to use a normal (Gaussian) distribution (Devaux & Lande, 2010). In this model, the expectation of a response on day *d* is expressed as

We expand on modeling trait phenology with a normal distribution in three ways to add flexibility: (1) use heavy‐tailed distributions to better handle extremes, (2) use asymmetric distributions to capture skewed timing, and (3) allow time‐varying covariates to affect the location and scale parameters of interest. First, as an alternative to the normal distribution, we adopt a generalized Student's *t*‐distribution. The generalized Student's *t*‐distribution is similar to a normal distribution but adds an additional degrees of freedom (df) parameter, $\mathrm{\nu}$, that allows for wider tails to better capture extremes (Figure 1; Anderson & Ward, 2019). We also allow the tails to be modeled with a generalized normal distribution, which permits a range of additional curves (Figure 1; Appendix S1: Equation S1; Nadarajah, 2005).

As a second extension, we adopt distributions that allow the variability ($\mathrm{\nu}$ or $\mathrm{\sigma}$) in phenological response before the mean to be different from the phenological response after the mean (“double normal” or “double Student's *t*” distribution, Figure 1; Rubio & Steel, 2020; Wallis [2014], Equation 2),

All code to implement various combinations of the foregoing models are provided in the R programming language (R Core Team, 2022) as the package phenomix (*t*, generalized normal) to represent the phenological process, we implement several common error distributions for observation models (Gaussian, lognormal, binomial, Poisson, negative binomial). Output from these models may be used to compute traditional model selection criteria (e.g., AIC) to compare modeling assumptions. Examples of hypotheses that can be tested include whether the data support a distribution with heavy tails or there is support for a temporal shift in the distribution (or its variance). Additional output statistics that may be summarized include quantiles of the distribution (e.g., dates at which 25% or 75% of plants have flowered) or the interquartile range (number of days between the 25th and 75th quartile dates).

Every year juvenile salmon in the North Pacific region migrate from freshwater rearing lakes and streams to the ocean. In some cases, the timing of these migrations has been shifting as a result of climate‐driven changes to temperature and flow (Kovach et al., 2013; Taylor, 2007). As part of long‐term monitoring efforts in the state of Washington, juvenile salmon have been intercepted and counted annually in a number of rivers (see Zimmerman et al. [2015] for more information on methodology). We used juvenile chum salmon data from an incline plane trap and 2.4 m (8‐foot)‐diameter rotary screw trap fished in tandem in the Skagit River in Washington state (−122.34° E, 48.44° N). The traps were monitored every night and every third day between approximately late January and late July each year (1990–2019). The analyzed data set contains 30 years and 4636 monitoring days in which 2,358,284 migrating chum salmon were counted. We used raw count data, and not mark‐recapture estimates, and assumed that capture efficiency did not vary throughout the year.

We compared models fit with six different distributions (asymmetric and symmetric Gaussian, Student's *t*, or generalized normal) and five different error distributions (Gaussian, lognormal, binomial, Poisson, negative binomial) and used the most parsimonious model (lowest AIC, see Appendix S1: Table S1) to estimate peak, interquartile range, and rates of change in peak across years. All models were fit with random effects in the mean and both variance parameters, allowing the distributions to vary randomly through time. We included an annual trend over time as a linear predictor for the mean and both variance parameters. Compared to models with a Gaussian or generalized normal distribution, the double Student's *t* process model with a Gaussian error distribution had the lowest AIC and was used to estimate intra‐annual migration traits (i.e., annual peak, 25th and 75th quantiles, range [number of days between 25th and 75th quantile]), as well as the interannual rate of change of annual peak across the 30‐year data set (Figure 2, Appendix S1: Figure S1). The double Student's *t*‐distribution enabled the tails of the migration distribution to be more extreme than Gaussian tails and allowed for asymmetry between the tails (e.g., the left tail of migration is different than the right). In this case, the right tail tended to be skewed to be longer than the left tail of the migration (Figure 2). In general, model estimates were close to the cumulative proportion estimates, except in years where the beginning or peak of the migration was missed, suggesting that the model fit the observations.

The juvenile chum salmon data set encompassed two common issues in phenological data: (1) In some years, the entire migration window was not captured and (2) there were periods of missing observations due to a lack of site access. For the first 5 years of the smolt monitoring program (1991–1996), the majority of the migration, including the probable peak of the migration, was missed because the monitoring project targeted other species that migrated later in the season (e.g., coho salmon). These sampling issues led to inaccurate estimates of intra‐annual migration traits when using the cumulative proportion approach (e.g., 50% cumulative migration date was estimated to be later in the year than the modeled peak; Figure 2), resulting in an overestimate of the rates of change in migration phenology. Our model incorporated the uncertainty in the observation of migration timing of those years and provided a more plausible representation of the peak migration. As a result, the change in peak phenology estimated using our model was lower than the rates of change estimated with cumulative proportion analysis (e.g., ∆ modeled peak date = 5.81 days/decade earlier; ∆ 50% migration date = 8.86 days/decade earlier; Figure 2), as was the rate of change of the modeled 75th‐percentile date (i.e., ∆ modeled 75th‐quartile date = 6.60 days/decade earlier, ∆ 75th‐cumulative migration date = 9.02 days/decade later, Appendix S1: Figure S1). However, the modeled rate of change in the interquartile range was in a different direction than cumulative proportion analysis (i.e., ∆ modeled interquartile range = 0.24 days/decade narrower, ∆ interquartile range = 0.55 days/decade wider; Figure 2). Additionally, a few periods had missing observations due to high flows and other logistical constraints. In general, these did not affect the determination of the peak but may have slightly altered the calculation of the 75th quartile when using the cumulative proportion approach (e.g., 2001, 2008; Figure 2). The hierarchical model provides a more plausible representation of migration timing and rate of phenological change in a data set with some problematic sampling years.

Coastal Swainson's thrush (also known as russet‐backed thrush) overwinter in Central America and migrate during the spring to the coastal continental United States and coastal British Columbia, where they reside until early fall. Swainson's thrush observations in Metro Vancouver and the Fraser Valley were completed by citizen scientists and made publicly available by eBird (

Because of its sparsity, the Swainson's thrush data set contains different problems than the chum salmon example. More complex models, such as models with generalized normal tails, would not converge when random effects were included, so to compare support for alternative models with trends in the mean or variance, we did not estimate random effects. The right tail of the annual distribution of Swainson's thrush abundance was heavily skewed, and the flexibility of the double Student's *t*‐distribution fit the data well and described the 75th quartile more precisely than cumulative proportion estimates (Figure 3). For example, the heavily skewed distribution led to an earlier estimate of the peak (mean modeled peak date = 163, mean 50% cumulative migration date = 173; Figure 3) but a slight difference in the rate of change in peak (∆ modeled peak date = 0.21 days/decade earlier; ∆ 50% migration date = 0.54 days/decade later; Figure 3). The rate of change in the interquartile range also differed between the two methods (i.e., ∆ modeled interquartile range = 13.60 days/decade wider, ∆ interquartile range = 6.75 days/decade wider). Our hierarchical approach captured the shape of the distribution and was not as biased by the heavy tails of the distribution.

Climate‐driven shifts in phenology are pervasive, yet there is no common, robust analytical framework for estimating intra‐annual and interannual phenological patterns from imperfect ecological data. Here we have applied a hierarchical modeling approach to phenology time series data to enable the description of intra‐annual patterns in phenology (e.g., day of peak migration), as well as interannual rates of change in peak phenology. Our approach was robust to missing observations and was a more plausible representation of phenological patterns with biased sampling start or end dates and skewed distributions. In the juvenile chum salmon migration example, in years with good data (i.e., entire run was observed with few missing dates), the hierarchical modeling approach and the cumulative proportion approach performed similarly. However, the first few years of the sampling program missed the majority of the migration, leading to a divergence of estimates for those years and differing estimates of the rate of change in peak migration. In the Swainson's thrush example, our modeled approach accounted for the heavy right tail of the distribution, leading to differences in estimation of phenological expression data. Animal abundance and movement data can often have heavy tails and asymmetrical distributions, and our approach was flexible enough to accommodate those quasi‐normal distributions (Marquet et al., 2007). Thus, our approach should improve estimates of intra‐ and interannual patterns of phenology.

Our framework and modeling package complement several other existing approaches to modeling phenology and fills some critical gaps. The majority of tools in R for phenological modeling involve remote sensing data. Examples include (1) the phenor R package for linking phenological observations from remote sensing data and climate drivers in North America (Hufkens et al., 2018), the (2) phenofit package for extracting phenology information from remotely sensed vegetation data (Kong et al., 2021), and (3) the CropPhenology package for the analysis of data from agriculture (Araya et al., 2018). Several existing packages also include statistical approaches to fitting observed phenological data to parametric distributions; for example, the package nlstimedist (Steer et al., 2019) fits an extension of the exponential distribution to phenological data, and the phenology package fits parametric curves to phenological data, though without heavy‐tailed distributions or random variation (Girondot, 2020). Of these tools, our package differs significantly in that it allows for different distributions, allows for asymmetry before and after peak, and allows for additional flexibility in across‐model levels (random effects).

There are several limitations to this approach, which constrains its utility with some types of phenological time series data. Our modeling approach is data hungry in that fitting complex models (including random effects, asymmetric distributions, heavy‐tailed distributions) often requires fine‐scale temporal resolution (e.g., daily or weekly surveys within a year). In the absence of fine‐scale data, coarser data with replicate observations may also be used. These surveys could be daily, weekly, or biweekly, so this method does not require daily observations, but it does require enough observations to estimate the shape of intra‐annual distributions. For example, for the data sets we presented, we found that model convergence and parameter estimation required more than 15 sampling days per year. We suggest that model fit be assessed with each data set to verify that the temporal resolution can capture the distribution. We provide options for visual assessment using the “plot_diagnostics()” function in the phenomix package. Additionally, our approach is limited in the types of intra‐annual distributions that can be fit; multimodal distributions and flat (i.e., uniform) distributions are currently not supported in our software. Flat distributions are difficult to parameterize as uncertainty around the peak is high, likewise, multimodal distributions (“finite mixture models”; Benaglia et al., 2010) are particularly challenging to estimate when the number of mixture components is variable through time. In some cases, when the underlying biology is known (e.g., different populations or year classes), multimodal distributions could be truncated and fit as a single Gaussian (or similar) distribution. For example, data could be truncated to only include the earliest peak in each year; however, without identifiers for each modality, it would be difficult to discern whether each peak had a consistent interpretation across years. Finally, while not a limitation per se, we encourage users to use population estimates (e.g., mark‐recapture corrected estimates) if there is within‐year variability in detection efficiency, as differences in detection efficiency through time could influence the shape of the within‐year distribution of phenology.

Our modeling framework represents a robust approach to quantifying patterns in nonlinear phenological data and phenological shifts while accounting for multiple sources of uncertainty and temporal autocorrelation. Observation error and sampling frequency will determine how our model compares to conventional methods. Our approach is more resilient to missing observations, particularly early or late in the annual time series, which could occur due to inclement weather or other logistical realities. We have developed a companion R package that has flexible options for model fitting and allows for the inclusion of covariates to interannual shifts in phenology. Understanding how changes in peak and breadth of phenological expression may impact demographic rates is an important step for predicting the impacts of climate change (Iler et al., 2021). We hope this approach provides a framework and toolkit to increase the robustness of quantification of phenological expression, including climate‐driven phenological change.

We thank the scientists and organizations that collected the two long‐term data sets used in this project: (1) juvenile chum salmon outmigration monitoring collected by scientists and technicians from the Washington Department of Fish and Wildlife and (2) observations of Swainson's thrush abundance by citizen scientists and collected and made available by eBird (

The authors declare no conflicts of interest.

Juvenile chum salmon data (Wilson et al., 2023) are available in Dryad at