CaseStudy

Introduction

The fundamental concept behind Regional Frequency Analysis (RFA) is to evaluate whether a group of time series from distinct sites can be considered “acceptably homogeneous” (Hosking and Wallis 1997).

In its original version, the RFA is valid only when the variable of interest assumes strictly positive values. However, (Martins et al. 2022) verified that this technique can be effectively applied to extreme maximum (Tmax) and minimum (Tmin) air temperature series, which may assume both positive and negative values, by adopting the so-called additive approach.

Although the study by (Martins et al. 2022) showed promising results, it did not address the influence of long-term warming trends. This calls for an extension of the RFA framework to incorporate time-dependent, nonstationary statistical properties.

To overcome this limitation, (Blain et al. 2026) proposed the Non-stationary Additive Regional Frequency Analysis, an extension of the additive RFA that integrates nonstationary probabilistic models to represent temporal changes in air temperature frequency distributions at the regional scale. This package was designed to facilitate the application of this new method to extreme Tmax and Tmin data under nonstationary climate conditions.

The NSTempRFA package implements the Non-Stationary Additional Regional Frequency Analysis (NS-Add-RFA) method, designed to assess extreme temperature trends in a regional context. This vignette demonstrates the package’s application using 13 annual maximum temperature (Tmax) series (1991-2024) from São Paulo, Brazil. The data were sourced from NOAA’s Physical Sciences Laboratory (NOAA Physical Sciences Laboratory 2026), were derived using the block maxima approach (one block per calendar year).

Getting Started

Install the package from GitHub https://github.com/gabrielblain/NSTempRFA (see README) and load it into your R session:

library(NSTempRFA)

Data

Table 1 presents the longitude (lon) and latitude (lat), in decimal degrees of the 10 Tmax series.

Table1 <- lonlat_Tmax
Table1
#>        lon    lat
#> 1  -48.110 -24.81
#> 2  -48.735 -24.31
#> 3  -48.110 -24.31
#> 4  -47.485 -24.31
#> 5  -49.360 -23.81
#> 6  -48.735 -23.81
#> 7  -48.110 -23.81
#> 8  -47.485 -23.81
#> 9  -49.360 -23.31
#> 10 -48.735 -23.31

Table 2 displays the Tmax data, in Celsius degrees.

TmaxCPC_SP[, 2:11] <- round(TmaxCPC_SP[, 2:11], 1)
Table2 <- TmaxCPC_SP
Table2
#>    Year Pixel_1 Pixel_2 Pixel_3 Pixel_4 Pixel_5 Pixel_6 Pixel_7 Pixel_8 Pixel_9
#> 1  1991    36.3    33.9    34.9    35.1    33.7    33.9    34.1    32.9    34.8
#> 2  1992    34.2    32.4    33.0    33.9    34.1    33.7    33.2    31.8    34.6
#> 3  1993    34.4    33.1    33.6    33.7    35.5    34.9    33.9    31.8    36.5
#> 4  1994    34.6    32.8    33.8    35.3    35.6    34.1    34.0    32.8    35.6
#> 5  1995    35.4    32.7    34.2    35.5    34.8    33.7    33.9    32.7    35.0
#> 6  1996    35.5    32.8    33.8    34.3    33.2    33.6    33.6    31.8    34.2
#> 7  1997    38.1    35.4    36.5    36.4    35.1    35.4    35.2    33.6    36.6
#> 8  1998    35.9    33.0    34.7    35.5    33.4    34.3    34.6    32.8    34.3
#> 9  1999    36.5    31.8    32.9    33.8    33.9    32.9    32.8    32.6    34.5
#> 10 2000    34.0    31.0    32.6    34.8    33.6    33.2    32.7    31.5    35.0
#> 11 2001    35.8    31.9    33.8    35.1    33.6    32.4    31.8    31.8    34.4
#> 12 2002    35.9    34.1    35.0    36.2    35.7    36.0    35.2    33.0    36.8
#> 13 2003    36.3    35.4    35.8    36.5    36.5    36.6    35.6    33.7    35.9
#> 14 2004    33.5    31.3    32.7    33.6    33.6    32.7    32.4    30.7    34.6
#> 15 2005    35.5    34.5    35.0    34.7    33.3    33.0    34.0    31.7    33.3
#> 16 2006    35.5    35.2    36.2    36.3    33.5    34.0    35.5    33.0    34.8
#> 17 2007    35.9    34.2    34.8    34.7    33.6    33.2    33.2    31.9    35.5
#> 18 2008    34.6    33.5    34.0    33.7    34.5    34.2    33.6    31.4    35.7
#> 19 2009    35.9    33.8    34.8    35.2    34.9    34.9    34.4    31.5    35.4
#> 20 2010    37.1    34.4    34.9    34.0    35.3    34.6    33.5    31.5    35.1
#> 21 2011    35.9    33.1    34.2    34.5    34.8    33.7    33.5    31.8    36.4
#> 22 2012    36.4    33.1    34.8    35.6    35.3    34.7    34.4    33.3    37.0
#> 23 2013    34.5    31.4    32.5    34.1    34.2    33.2    33.1    32.8    35.5
#> 24 2014    35.1    33.6    34.6    35.7    36.0    35.2    35.1    34.4    37.7
#> 25 2015    36.0    34.0    35.0    35.4    35.6    35.1    34.9    33.6    36.6
#> 26 2016    36.1    33.2    34.5    34.6    35.1    34.1    34.0    33.0    36.7
#> 27 2017    33.9    33.0    33.3    33.9    35.2    34.5    33.8    32.5    36.5
#> 28 2018    35.5    32.7    33.7    34.2    34.1    33.7    33.6    31.8    35.1
#> 29 2019    36.6    34.5    35.5    35.8    36.5    36.0    35.4    33.4    38.4
#> 30 2020    36.4    36.1    36.3    37.0    38.9    37.9    37.2    35.9    39.9
#> 31 2021    34.1    34.2    34.9    35.8    37.0    36.7    36.3    35.1    38.9
#> 32 2022    34.2    32.7    33.5    34.2    34.6    34.7    34.8    33.1    34.8
#> 33 2023    35.5    35.2    36.3    37.6    37.6    37.7    37.7    36.3    38.5
#> 34 2024    35.6    34.1    34.6    35.2    37.0    35.9    35.3    34.4    38.1
#>    Pixel_10
#> 1      34.2
#> 2      34.0
#> 3      35.7
#> 4      35.3
#> 5      35.0
#> 6      35.2
#> 7      36.3
#> 8      35.0
#> 9      33.9
#> 10     34.6
#> 11     33.9
#> 12     35.8
#> 13     35.6
#> 14     33.2
#> 15     32.9
#> 16     34.1
#> 17     34.9
#> 18     35.2
#> 19     34.4
#> 20     34.6
#> 21     35.2
#> 22     36.7
#> 23     34.9
#> 24     37.7
#> 25     36.6
#> 26     36.0
#> 27     35.9
#> 28     34.7
#> 29     36.5
#> 30     38.8
#> 31     38.4
#> 32     34.7
#> 33     38.4
#> 34     37.4

Data Screening

Before analysis, ensure data quality by checking for inconsistencies or outliers. The Add_Discord() function (demonstrated below) can help identify problematic series.

Add_Discord(TmaxCPC_SP)
#>       Local SampleSize      l_1       l_2           t_3       t_4          t_5
#> 1   Pixel_1         34 35.49118 0.5728164 -0.0438190447 0.1274556  0.114240201
#> 2   Pixel_2         34 33.47353 0.7125668  0.0054878049 0.1243494 -0.018257883
#> 3   Pixel_3         34 34.43235 0.6229055  0.0007511804 0.1147091  0.047267826
#> 4   Pixel_4         34 35.05588 0.5854724  0.1074364439 0.0673508  0.079369620
#> 5   Pixel_5         34 34.97941 0.7640820  0.1798670244 0.1008154  0.102772019
#> 6   Pixel_6         34 34.54118 0.7668449  0.1738145049 0.1375776  0.028978457
#> 7   Pixel_7         34 34.30294 0.7179144  0.1194134078 0.1703085  0.020835085
#> 8   Pixel_8         34 32.82059 0.7063280  0.1988328076 0.1547777  0.091450086
#> 9   Pixel_9         34 35.96176 0.8596257  0.1867807154 0.1126398  0.011555377
#> 10 Pixel_10         34 35.46176 0.8163102  0.1566491975 0.1566598 -0.008945898
#>      discord
#> 1  1.7993460
#> 2  1.6713427
#> 3  1.2285874
#> 4  2.3643506
#> 5  1.3084772
#> 6  0.7747331
#> 7  1.5490414
#> 8  1.9429602
#> 9  1.9242423
#> 10 1.2960442

Do the 10 Tmax series form an “acceptably homogeneous” group?

We develped the Add_Heterogeneity() function to verify if a group of extreme maximum or minimum air temperature series can be deemed as “acceptably homogeneous”. This function calculates the additional heterogeneity measure (Add_H) as proposed by (Martins et al. 2022). To calculate Add_H we first need to subtract from each data its sample mean. This can be accomplished by applying the Dataset_add() function.

add.data <- Dataset_add(TmaxCPC_SP)
add.data$add_data
#>            Pixel_1     Pixel_2     Pixel_3     Pixel_4     Pixel_5     Pixel_6
#>  [1,]  0.808823529  0.42647059  0.46764706  0.04411765 -1.27941176 -0.64117647
#>  [2,] -1.291176471 -1.07352941 -1.43235294 -1.15588235 -0.87941176 -0.84117647
#>  [3,] -1.091176471 -0.37352941 -0.83235294 -1.35588235  0.52058824  0.35882353
#>  [4,] -0.891176471 -0.67352941 -0.63235294  0.24411765  0.62058824 -0.44117647
#>  [5,] -0.091176471 -0.77352941 -0.23235294  0.44411765 -0.17941176 -0.84117647
#>  [6,]  0.008823529 -0.67352941 -0.63235294 -0.75588235 -1.77941176 -0.94117647
#>  [7,]  2.608823529  1.92647059  2.06764706  1.34411765  0.12058824  0.85882353
#>  [8,]  0.408823529 -0.47352941  0.26764706  0.44411765 -1.57941176 -0.24117647
#>  [9,]  1.008823529 -1.67352941 -1.53235294 -1.25588235 -1.07941176 -1.64117647
#> [10,] -1.491176471 -2.47352941 -1.83235294 -0.25588235 -1.37941176 -1.34117647
#> [11,]  0.308823529 -1.57352941 -0.63235294  0.04411765 -1.37941176 -2.14117647
#> [12,]  0.408823529  0.62647059  0.56764706  1.14411765  0.72058824  1.45882353
#> [13,]  0.808823529  1.92647059  1.36764706  1.44411765  1.52058824  2.05882353
#> [14,] -1.991176471 -2.17352941 -1.73235294 -1.45588235 -1.37941176 -1.84117647
#> [15,]  0.008823529  1.02647059  0.56764706 -0.35588235 -1.67941176 -1.54117647
#> [16,]  0.008823529  1.72647059  1.76764706  1.24411765 -1.47941176 -0.54117647
#> [17,]  0.408823529  0.72647059  0.36764706 -0.35588235 -1.37941176 -1.34117647
#> [18,] -0.891176471  0.02647059 -0.43235294 -1.35588235 -0.47941176 -0.34117647
#> [19,]  0.408823529  0.32647059  0.36764706  0.14411765 -0.07941176  0.35882353
#> [20,]  1.608823529  0.92647059  0.46764706 -1.05588235  0.32058824  0.05882353
#> [21,]  0.408823529 -0.37352941 -0.23235294 -0.55588235 -0.17941176 -0.84117647
#> [22,]  0.908823529 -0.37352941  0.36764706  0.54411765  0.32058824  0.15882353
#> [23,] -0.991176471 -2.07352941 -1.93235294 -0.95588235 -0.77941176 -1.34117647
#> [24,] -0.391176471  0.12647059  0.16764706  0.64411765  1.02058824  0.65882353
#> [25,]  0.508823529  0.52647059  0.56764706  0.34411765  0.62058824  0.55882353
#> [26,]  0.608823529 -0.27352941  0.06764706 -0.45588235  0.12058824 -0.44117647
#> [27,] -1.591176471 -0.47352941 -1.13235294 -1.15588235  0.22058824 -0.04117647
#> [28,]  0.008823529 -0.77352941 -0.73235294 -0.85588235 -0.87941176 -0.84117647
#> [29,]  1.108823529  1.02647059  1.06764706  0.74411765  1.52058824  1.45882353
#> [30,]  0.908823529  2.62647059  1.86764706  1.94411765  3.92058824  3.35882353
#> [31,] -1.391176471  0.72647059  0.46764706  0.74411765  2.02058824  2.15882353
#> [32,] -1.291176471 -0.77352941 -0.93235294 -0.85588235 -0.37941176  0.15882353
#> [33,]  0.008823529  1.72647059  1.86764706  2.54411765  2.62058824  3.15882353
#> [34,]  0.108823529  0.62647059  0.16764706  0.14411765  2.02058824  1.35882353
#>           Pixel_7     Pixel_8     Pixel_9   Pixel_10
#>  [1,] -0.20294118  0.07941176 -1.16176471 -1.2617647
#>  [2,] -1.10294118 -1.02058824 -1.36176471 -1.4617647
#>  [3,] -0.40294118 -1.02058824  0.53823529  0.2382353
#>  [4,] -0.30294118 -0.02058824 -0.36176471 -0.1617647
#>  [5,] -0.40294118 -0.12058824 -0.96176471 -0.4617647
#>  [6,] -0.70294118 -1.02058824 -1.76176471 -0.2617647
#>  [7,]  0.89705882  0.77941176  0.63823529  0.8382353
#>  [8,]  0.29705882 -0.02058824 -1.66176471 -0.4617647
#>  [9,] -1.50294118 -0.22058824 -1.46176471 -1.5617647
#> [10,] -1.60294118 -1.32058824 -0.96176471 -0.8617647
#> [11,] -2.50294118 -1.02058824 -1.56176471 -1.5617647
#> [12,]  0.89705882  0.17941176  0.83823529  0.3382353
#> [13,]  1.29705882  0.87941176 -0.06176471  0.1382353
#> [14,] -1.90294118 -2.12058824 -1.36176471 -2.2617647
#> [15,] -0.30294118 -1.12058824 -2.66176471 -2.5617647
#> [16,]  1.19705882  0.17941176 -1.16176471 -1.3617647
#> [17,] -1.10294118 -0.92058824 -0.46176471 -0.5617647
#> [18,] -0.70294118 -1.42058824 -0.26176471 -0.2617647
#> [19,]  0.09705882 -1.32058824 -0.56176471 -1.0617647
#> [20,] -0.80294118 -1.32058824 -0.86176471 -0.8617647
#> [21,] -0.80294118 -1.02058824  0.43823529 -0.2617647
#> [22,]  0.09705882  0.47941176  1.03823529  1.2382353
#> [23,] -1.20294118 -0.02058824 -0.46176471 -0.5617647
#> [24,]  0.79705882  1.57941176  1.73823529  2.2382353
#> [25,]  0.59705882  0.77941176  0.63823529  1.1382353
#> [26,] -0.30294118  0.17941176  0.73823529  0.5382353
#> [27,] -0.50294118 -0.32058824  0.53823529  0.4382353
#> [28,] -0.70294118 -1.02058824 -0.86176471 -0.7617647
#> [29,]  1.09705882  0.57941176  2.43823529  1.0382353
#> [30,]  2.89705882  3.07941176  3.93823529  3.3382353
#> [31,]  1.99705882  2.27941176  2.93823529  2.9382353
#> [32,]  0.49705882  0.27941176 -1.16176471 -0.7617647
#> [33,]  3.39705882  3.47941176  2.53823529  2.9382353
#> [34,]  0.99705882  1.57941176  2.13823529  1.9382353
#> attr(,"scaled:center")
#>  Pixel_1  Pixel_2  Pixel_3  Pixel_4  Pixel_5  Pixel_6  Pixel_7  Pixel_8 
#> 35.49118 33.47353 34.43235 35.05588 34.97941 34.54118 34.30294 32.82059 
#>  Pixel_9 Pixel_10 
#> 35.96176 35.46176
add.data$reg_mean
#>  Pixel_1  Pixel_2  Pixel_3  Pixel_4  Pixel_5  Pixel_6  Pixel_7  Pixel_8 
#> 35.49118 33.47353 34.43235 35.05588 34.97941 34.54118 34.30294 32.82059 
#>  Pixel_9 Pixel_10 
#> 35.96176 35.46176

Then, the Add_Heterogeneity() function can be applied as follows:

set.seed(123)
rho <- 0.49 # The average spatial correlation among the series
Ns <- 500 # Number of Simulation required for calculating
Add_H <- Add_Heterogeneity(dataset.add = add.data$add_data, rho = rho, Ns = Ns)
Add_H
#> [1] 0.8884961

Add_H values equal to or lower than 2 allows us to accept that the group of series can be regarded as acceptably homogeneous. Therefore, the Add_H value obtained in this example (~0.90) allowed us to accept such a assumption. In case we had obtained Add_H values larger than 2, we probably could verified which Tmax series were preventing the group to be deemed as acceptably homogeneous. This sort of verification can be performed using the Add_Discord() function, which calculates the discordance measure under the additional approach (Add_d).

Add_Discord(TmaxCPC_SP)
#>       Local SampleSize      l_1       l_2           t_3       t_4          t_5
#> 1   Pixel_1         34 35.49118 0.5728164 -0.0438190447 0.1274556  0.114240201
#> 2   Pixel_2         34 33.47353 0.7125668  0.0054878049 0.1243494 -0.018257883
#> 3   Pixel_3         34 34.43235 0.6229055  0.0007511804 0.1147091  0.047267826
#> 4   Pixel_4         34 35.05588 0.5854724  0.1074364439 0.0673508  0.079369620
#> 5   Pixel_5         34 34.97941 0.7640820  0.1798670244 0.1008154  0.102772019
#> 6   Pixel_6         34 34.54118 0.7668449  0.1738145049 0.1375776  0.028978457
#> 7   Pixel_7         34 34.30294 0.7179144  0.1194134078 0.1703085  0.020835085
#> 8   Pixel_8         34 32.82059 0.7063280  0.1988328076 0.1547777  0.091450086
#> 9   Pixel_9         34 35.96176 0.8596257  0.1867807154 0.1126398  0.011555377
#> 10 Pixel_10         34 35.46176 0.8163102  0.1566491975 0.1566598 -0.008945898
#>      discord
#> 1  1.7993460
#> 2  1.6713427
#> 3  1.2285874
#> 4  2.3643506
#> 5  1.3084772
#> 6  0.7747331
#> 7  1.5490414
#> 8  1.9429602
#> 9  1.9242423
#> 10 1.2960442

The column discord presents the Add_d values for each series. In case of Add_H larger than 2, the series with the largest Add_d values may be removed from the group and the Add_H measure may be re-calculated. It is also worth mentioning that this discordance measure may also be used at the onset of the analysis - before pre-defining the groups - to detect series with gross errors.

Selecting the best GEV-model

In its current version, the NS-Add-RFA method offers four nonstationary models to describe the whether and how the probabilistic structure of the air temperature series, which forms the homogeneous group, are changing across time. These models are based on the Generalized Extreme Value distribution and are described as follows:

The Best_model() function selects the best model among these four candidates using the second-order Akaike Information Criterion.

best.parms <- Best_model(add.data = add.data$add_data)
# The best model is:
as.numeric(best.parms$best) #Model 2
#> [1] 2
# The at-site parameters are:
best.parms$atsite.models
#>           mu0          mu1    sigma0 sigma1       shape size
#> 1  -0.2979794 -0.004293843 0.9909926      0 -0.24466887   34
#> 2  -1.0211512  0.035332324 1.1712825      0 -0.29955609   34
#> 3  -0.7860482  0.023529005 1.0231408      0 -0.26675469   34
#> 4  -0.7063436  0.015882676 0.8530913      0 -0.09683919   34
#> 5  -1.6376049  0.063007101 0.8938221      0  0.01460033   34
#> 6  -1.5645120  0.059858600 0.9976748      0 -0.07425201   34
#> 7  -1.5118296  0.062148877 1.0467214      0 -0.21574818   34
#> 8  -1.4364012  0.056479481 0.9963016      0 -0.15399804   34
#> 9  -2.0767396  0.094513994 1.1838763      0 -0.27486284   34
#> 10 -1.9888709  0.094023360 1.2349225      0 -0.40991243   34

Having defined the best GEV model, the Reg_par() function can be applied to specify the parameters of the regional distribution, which is valid for all 13 series.

regional.parms <- Reg_par(best_model = best.parms$atsite.models)
regional.parms
#>   weighted_mu0 weighted_mu1 weighted_sigma0 weighted_sigma1 weighted_shape
#> 1    -1.302748   0.05004816        1.039183               0     -0.2021992

The analysis of the parameters of the regional distribution indicates that the frequency distribution of the Tmax data in the region is experiencing changes in the location parameter. In other words, the distribution is experiencing a change in its central tendency. More specifically, the positive value of weighted_mu1 indicates that the average the Tmax values increased from 1991 to 2024.

Additionally, we may also calculate the confidence intervals for the parameters of this regional distribution. This can be accomplished by applying the Reg_parCI() as follows:

set.seed(123)
Reg_parCI(
  add_data = add.data$add_data,
  model = best.parms$best,
  reg_par = regional.parms,
  n.boots = 500
)
#> This calculation may take some time.
#>              weighted_mu0 weighted_mu1 weighted_sigma0 weighted_sigma1
#> Lower 95% CI    -1.911827   0.02080265        0.856816               0
#> Upper 95% CI    -0.687756   0.07681375        1.188569               0
#>              weighted_shape
#> Lower 95% CI    -0.41185434
#> Upper 95% CI     0.02609041

Because the Regional Frequency Analysis uses all series within a homogeneous region to fit the regional distribution, it is expect to reduce parameter estimation uncertainties in respect to the at-site approach. To verify such assumption, we will calculate the confidence interval, through the at-site approach, for the Tmax series of Pixel_1 (see Table 2).

set.seed(123)
temperatures <- TmaxCPC_SP$Pixel_1
model <- 2
site_par <- Fit_model(temperatures, model)
if (all(is.finite(as.numeric(site_par[1, 1:5])))) {
  Site_parCI(
    atsite_temp = temperatures,
    model = model,
    site_par = site_par[1, 1:5],
    n.boots = 500
  )
}
#> This calculation may take some time.
#>                   mu0         mu1    sigma0 sigma1       shape
#> Lower 95% CI 34.47799 -0.04575717 0.7751451      0 -1.03139408
#> Upper 95% CI 36.02449  0.03469571 1.2672091      0 -0.04407012

The differences between the upper and lower 95% confidence intervals (CI) of the regional estimates are lower than those of the at-site approach for all GEV parameter. Additionally, both upper and lower limits for weighted_mu1 - regional approach (~ 0.079 and ~0.021, respectively) - indicate changes toward warmer conditions. However, for the at-site approach, while the lower limit for mu1 (~ -0.046), indicates a change toward cooler conditions, the upper limit (~0.035) indicates a change towards warmer conditions.

The narrower CI of the parameters of the regional distribution are consistent with the assumption that the NS-Add-RFA method reduces the parameter estimation uncertainties in respect to the at-site approach. Therefore, we may use its statistics to calculate the quantile estimates associated with distinct cumulative probabilities. Additionally, since the best model (model 2) is a non-stationary model, we can also calculate how these quantile estimates changed from the first year (1991) to the last year (2024) of the series. This assessment can be carried out using Add_RegQuant() function.

prob <- c(0.8, 0.85, 0.90, 0.92, 0.93, 0.94, 0.95, 0.97, 0.99)
add.data <- Dataset_add(TmaxCPC_SP)
best.parms <- Best_model(add.data = add.data$add_data)
regional_pars <- Reg_par(best_model = best.parms$atsite.models)
Quantiles_1991 <- Add_RegQuant(
  prob = prob,
  regional_pars = regional_pars,
  site_temp = TmaxCPC_SP$Pixel_1,
  n.year = 1
)
Quantiles_2024 <- Add_RegQuant(
  prob = prob,
  regional_pars = regional_pars,
  site_temp = TmaxCPC_SP$Pixel_1,
  n.year = 34
)
Quantiles_1991
#>      Q80      Q85      Q90      Q92      Q93      Q94      Q95      Q97 
#> 35.58301 35.81863 36.11727 36.26792 36.35403 36.44996 36.55892 36.84087 
#>      Q99 
#> 37.35040
Quantiles_2024
#>      Q80      Q85      Q90      Q92      Q93      Q94      Q95      Q97 
#> 37.23460 37.47022 37.76886 37.91951 38.00562 38.10155 38.21051 38.49246 
#>      Q99 
#> 39.00199

The analysis of the quantile estimates for 1991 and 2024 highlights the changes towards warmer conditions that this region in the State of Sao Paulo has experienced over the last 34 years. For example, the quantil estimates associated with a cumulative probability equal to 0.8 raised from ~35.58°C in 1991 to 37.23°C in 2024.

This package also allows an equivalent analysis to that of the Add_RegQuant()that indicates whether and how the cumulative probabilities of a given quantile changed over time. This assessment can be carried out using Add_RegProb() function.

 quantiles <- c(
   35.58301,
   35.81863,
   36.11727,
   36.26792,
   36.35403,
   36.44996,
   36.55892,
   36.84087,
   37.35040
 )
 add.data <- Dataset_add(TmaxCPC_SP)
 best.parms <- Best_model(add.data = add.data$add_data)
 regional_pars <- Reg_par(best_model = best.parms$atsite.models)
 Probs_1991 <- Add_RegProb(
   quantiles = quantiles,
   regional_pars = regional_pars,
   site_temp = TmaxCPC_SP$Pixel_1,
   n.year = 1
 )
 Probs_2024 <- Add_RegProb(
   quantiles = quantiles,
   regional_pars = regional_pars,
   site_temp = TmaxCPC_SP$Pixel_1,
   n.year = 34
 )
 Probs_1991
#>            [,1]
#>  [1,] 0.8000004
#>  [2,] 0.8499996
#>  [3,] 0.9000003
#>  [4,] 0.9199994
#>  [5,] 0.9299996
#>  [6,] 0.9399998
#>  [7,] 0.9499996
#>  [8,] 0.9700000
#>  [9,] 0.9899999
 Probs_2024
#>            [,1]
#>  [1,] 0.2638411
#>  [2,] 0.3427845
#>  [3,] 0.4494994
#>  [4,] 0.5038591
#>  [5,] 0.5345656
#>  [6,] 0.5682073
#>  [7,] 0.6054379
#>  [8,] 0.6951763
#>  [9,] 0.8257736

References

Blain, G. C., G. R. Sobierajski, and L. L. Martins. 2026. “The Non-Stationary Additive Regional Frequency Analysis Method.” Theoretical and Applied Climatology 157: 157–219. https://doi.org/10.1007/s00704-026-06148-4.
Hosking, J. R. M., and J. R. Wallis. 1997. Regional Frequency Analysis: An Approach Based on l-Moments. Cambridge University Press. https://doi.org/10.1017/CBO9780511529443.
Martins, L. L., J. C. Souza, G. R. Sobierajski, and G. C. Blain. 2022. “Is It Possible to Apply the Regional Frequency Analysis to Daily Extreme Air Temperature Data?” Bragantia 81: 1–22. https://doi.org/10.1590/1678-4499.20220061.
NOAA Physical Sciences Laboratory. 2026. CPC Global Unified Temperature Data.