Two corrections to the GLME objective and penalty layer, following the revised methodology paper (Shin et al., 2026).
log(det(V))/2
(the correct multivariate-normal constant) instead of log(det(V)),
in both glme.gev() and glme.gev11(). This term does not depend on
the parameters, so all parameter estimates are unchanged; only the
reported nllh.glme values shift by a constant.pen = "ms", "park", "cannon") are
now evaluated on the shape-parameter interval (-0.5, 0.5), matching
their definitions in the literature (e.g., the Martins-Stedinger
geophysical prior), instead of (-1, 0.5). Estimates obtained with
these three penalties change; the adaptive "beta"/"norm"
penalties, "cd", and "no" are unaffected.This release integrates the revised GLME methodology of Shin et al. (2026 revised version of arXiv:2512.20385) for both the stationary GEV and the non-stationary GEV11 models. All functions and datasets of v1.3.1 remain available and callable, but several defaults, hyperparameter presets, and output fields changed, so numerical results differ from v1.3.1.
lme.gev11() - pure L-moment estimation (renames gado.prop_11();
Shin et al. 2025b, JKSS).strup.gev11() - weighted least squares estimation
(Strupczewski & Kaczmarek 2001) with the modified final specification.GN16.gev11() - quantile-based GN16 estimation.ran.gev_all() - random number generation from stationary and
non-stationary GEV models (gev, gev01, gev10, gev11, gev20).pk.beta(), the unified data-adaptive beta
penalty now shared by the stationary and non-stationary methods.
pk.beta.stnary() is kept as an alias of the new implementation.PhliuAgromet documentation now notes the significant increasing
trend in the annual maxima (Mann-Kendall tau = 0.235, p = 0.033), which
makes it the recommended example data for the non-stationary methods."glme", "glme11", "lme11",
"magev") with print(), summary(), and plot() methods; plot()
draws quantile-quantile diagnostics (on the standard Gumbel scale for
the GEV11 fits). The objects remain plain lists, so all documented
fields stay accessible; a data field storing the input series was
added to support the diagnostics.glme.gev() and glme.gev11() gained arguments c0 (beta penalty
support half-width), q (fixed beta shape), and show (verbose);
glme.gev() also gained method, maxit, abstol for optim().streamflow, Trehafod, and glanteifi datasets were removed.
All three originate from the UK National River Flow Archive (NRFA), whose
data terms and conditions do not permit making the data available for
download or redistributing them to third parties, so they cannot be
shipped in a CRAN package. Users can obtain the underlying series
directly from the NRFA Peak Flow Dataset
(<https://nrfa.ceh.ac.uk/peak-flow-dataset>). The remaining example
datasets are PhliuAgromet, bangkok, and haenam; all examples,
tests, and documentation now use these.pen.choice 1-6: (p, c1, c2) = (6,3,1), (6,5,2), (6,7,3),
(2,3,0.5), (2,5,1), (2,7,1.5) [was (6,10,5), (6,20,7), (6,30,9),
(2,10,5), (2,20,7), (2,30,9)].pen.choice 1-4: (mu, std) = (-0.5,0.25), (-0.5,0.15),
(-0.6,0.25), (-0.6,0.15) [std was 0.2/0.1].glme.gev(ntry=5, pen.choice=1, c1=3, c2=1)
(was ntry=10, pen.choice=NULL, c1=10, c2=5);
glme.gev11(ntry=5, opt.choose="nllh", pen.choice=1, std=0.2, c1=5, c2=2)
(was ntry=10, opt.choose="gof", pen.choice=NULL, std=0.3, c1=10, c2=5).glme.gev11() was restructured following the revised methodology:
the penalized estimation now starts from the WLS pre-estimate of
strup.gev11() and uses the fixed asymptotic covariance matrix of the
sample L-moments (Eq. 26 of the paper, rescaled by 300/n) instead of the
bootstrap covariance. This is substantially faster.
para.lme is now returned only when pen="no"
(use lme.gev11() to obtain the pure L-moment estimates otherwise).strup.org, para.wls, para.gado, lme.sta are
still returned for compatibility.convergence, pen_pen.choice, c0_c1_c2
(in addition to pen, p_q, c1_c2, mu_std).glme.pre is deprecated and ignored (warning);
init.rob is still honored (passed to strup.gev11()).pk.beta.stnary() behavior changed (now an alias of pk.beta()):
the adaptive support is (max(-1, xi-c0), min(0.3, xi+c0)) with default
c0=0.35 (was 0.3), the q-adaptation triggers at xi <= -0.05 (was 0),
values outside the support return 1e-100 (was 1), and for fixed q the
default support is (-1, 0.5) (was (-0.5, 0.5)). Consequently the fixed
literature penalties ("ms", "park", "cannon") inside glme.gev() /
glme.gev11() are now evaluated on (-1, 0.5), following the revised
reference code.init.glme() is now the multi-model initializer (first argument data,
new arguments model, pretheta); calls using the old named argument
xdat= still work. The old behavior is available as init.gevmax().glme.gev() output: parameter vectors are now named (mu, sig, xi) and
convergence, pen_pen.choice, c0_c1_c2 were added. The v1.x fields
pen, p_q, c1_c2, covinv.lmom, lcovdet are still returned.gado.prop_11() is deprecated in favor of lme.gev11(); it still
returns the v1.x output fields (para.prop, para.gado, para.wls,
strup.org, lme.sta), now reassembled from lme.gev11(),
GN16.gev11(), and strup.gev11().nsgev() is kept as a convenience wrapper around lme.gev11().check.penalty(), penalty.fun() (unified
penalty dispatcher), boot.cov(), fun.lme.gev11(), find_max_beta.pk(),
trans.gum01() (vectorized).::: users only): pk.beta.ns(),
obj.lme.gev11(), gev11.GLD(), init.glme.gev11(),
strup.glme.gev11(), and the old optim.glme.gev11() (replaced by
opt.glme.gev11()).set.prior() (BMA prior) now uses a
frozen internal copy of the v1.x beta preference function, so ma.gev()
results are identical to v1.3.1.optim()/nleqslv()
try no longer aborts the remaining tries.time.m.gev11(): fixed the checkmom= typo (now checklmom=FALSE).message() or is gated behind show=TRUE.\dontrun{} with unwrapped examples or \donttest{} per CRAN policy.Trehafod and glme.gev11() examples in \donttest{} (> 5 sec on Debian).glme.gev() output names changed for consistency:
lme → para.lmeglme → para.glmenllh.pref → nllh.glmecovinv → covinv.lmomma.gev() output names changed for consistency:
zp.ma → qua.mazp.bma → qua.bmafin.se.ma → fixw.se.maadj.se.ma → ranw.se.manumk_ma and numk_bma → run.numkpick_xi_ma and pick_xi_bma → pick_xiremle1 → para.remle1 (in return and internal use)remle2 → para.remle2 (in return and internal use)::: accessor):
init.glme() → init.gevmax()new_pf_norm() → pk.norm.stnary() (with backward-compatible alias)gev.rl.delta_new() → gev.rl.delta()lme.boots.new() → lme.boots()cand.xi.new.paper() → cand.xi()weight.com.new() → weight.com()cov.interp.new() → cov.interp()gev.profxi.mdfy.paper() → gev.profxi.mdfy()comp.prof.ci.new() → comp.prof.ci()gev1.CD() → mle.gev.CD()gev.remle() → remle.gev()ginit.max() → init.gevmax()pargev.xifix.ma() → pargev.xifix()set.prior() now use pk.beta.stnary() from glme.gev.Rglme.gev11() output para.jkss renamed to para.lme for consistency.
Users accessing result$para.jkss should update their code to use result$para.lme.glme.gev11() and gado.prop_11() output strup.final renamed to para.wls.
Users accessing result$strup.final should update their code to use result$para.wls.glme.gev11() no longer returns strup.sta in its output.glme.gev11() with new parameters:
glme.pre = "wls": Pre-estimation method selection ("wls" or "gado")choose = "gof": Model selection criterion ("gof" for goodness-of-fit, "nllh" for negative log-likelihood)pen.choice = 6: Default penalty hyperparameter choice changed from NULL to 6quagev.NS() function for calculating quantiles from non-stationary GEV models
ma.gev() with new estimation options:
CD = TRUE: Coles-Dixon penalized MLE for shape parameter regularizationremle = TRUE: Restricted MLE with mean/median constraintsmle.CD, qua.CD, remle1, remle2, qua.remle1, qua.remle2quant in output for conveniencebma.se.between and bma.se.withinmagev.ksensplot(): K sensitivity analysis to select optimal number of submodelsmagev.qqplot(): 2x2 Q-Q diagnostic plot comparing MLE, LME, surrogate, and REMLEmagev.rlplot(): Return level plot with 95% confidence intervalsbangkok dataset: Annual maximum daily rainfall from Bangkok, Thailandhaenam dataset: Annual maximum daily rainfall from Haenam, South Koreanumq = 1) in ma.gev()ma.gev()) for high quantile estimation.
like, gLd, med, cvt and variantsbma=TRUE) with normal/beta priorsqua.ma) with standard errorsismev, Rsolnp, zoo.glme.gev()).glme.gev11()) where location
(mu) and scale (sigma) parameters vary linearly with time.
para.glme: Proposed GLME estimatespara.lme: L-moment based estimates for non-stationary modelnsgev(): Simple interface for L-moment based non-stationary estimationgado.prop_11(): Comprehensive estimation with multiple methods"beta" (default), "norm", "ms"
(Martins-Stedinger), "park", "cannon", "cd" (Coles-Dixon), and
"no" (no penalty).pen.choice or direct parameters
(p, c1, c2 for beta; mu, std for normal penalty).streamflow, PhliuAgromet, and Trehafod.