NEWS
margEVT 0.4.0
Breaking changes
fit_nhpp(lambda_scaling = ) now defaults to "common" (one scalar
penalty for all parameter blocks), the convention used in the
dissertation and articles. Use lambda_scaling = "gradient" for the
previous score-calibrated block penalties.
- With
lambda = "bic", the returned model is now the regularization-path
solution at the selected penalty, so the reported fit is exactly the one
scored by the BIC.
- Convergence is now certified by the Karush-Kuhn-Tucker conditions of the
penalized problem (
grad_tol, scaled by the number of exceedances)
rather than by the optimizer's return code. Fits that previously reported
convergence may now warn, and vice versa.
summary() returns an object of class summary.nhpp_fit (printed as
before) instead of printing directly.
- The
vars dependency was removed. VAR(p) generators are fitted by
least squares with Schwarz order selection on a common sample, which
reproduces vars::VARselect() and vars::VAR(); a single covariate is a
VAR(p) with K = 1 rather than a separate AR model.
- Random-number streams changed: bootstrap replicates use independent
L'Ecuyer-CMRG streams and trajectories are simulated jointly, so results
for a given seed differ from 0.3.0.
Estimation
- Adaptive LASSO:
penalty_weights = "adaptive" computes weights
1 / |theta|^adaptive_gamma from an unpenalized fit (ridge fallback);
numeric coordinate weights are also accepted.
- New
fit_nhpp() arguments lambda_grid, init, and grad_tol. The
optimizer falls back from BFGS to L-BFGS-B and a restarted BFGS when the
KKT check fails.
- Fitted objects store the penalty weights, the KKT violation, the
evaluated regularization path (
fit$path), and the observed series.
- The likelihood, gradient, and penalty are evaluated once per parameter
vector and shared between objective and gradient calls.
Methods and diagnostics
- New methods
logLik(), nobs(), predict(), residuals(), and
coef() for nhpp_fit; AIC() and BIC() work through logLik().
residuals() returns time-rescaling interarrival residuals and
magnitude residuals, both standard exponential under the model.
plot.nhpp_fit() gains type = "path" (BIC curve and coefficient
paths) and type = "qq" (exponential Q-Q plots with exact pointwise
bands).
n_exceedances() uses the stored series when y is omitted.
Marginalization and covariates
- New
seasonal_harmonics(); harmonics of any order (cos<k>, sin<k>,
sen<k>) are recognized and rebuilt automatically.
marginalize() returns an nhpp_rl object with Monte Carlo standard
errors of the return-level roots (se_mc), accepts fixed covariate
values (e.g. list(trend = 1)), fills inactive design columns silently,
and has a plot() method.
fit_var_generator() gains n_harmonics, excludes deterministic
variables from the VAR, and supports derived covariates (lags, moving
averages) through derive and derive_lead. simulate_covariates()
simulates all trajectories at once and gains seed.
Bootstrap and walk-forward assessment
- Bootstrap refits start from the original estimate and keep the original
penalty weights, gradient tolerance, and scaling. Results do not depend
on the new
cores argument; replicate matrices are returned as the
attribute "replicates".
backtest() gains trend_col (trend renormalized within each training
window), fixed, reselect_lambda, and cores. Adaptive weights are
recomputed inside each training window, and covariates inactive in a
window refit are filled without warnings.
Documentation
- New vignette, examples for every exported function, and an updated
citation file.
margEVT 0.3.0 (2026-09-23)
Estimation consistency and reproducibility
- Added
lambda_scaling to fit_nhpp(). Automatic BIC selection can retain
the score-calibrated block penalties introduced in 0.2.0 or use a common
scalar penalty to reproduce the estimation convention used in the
dissertation analyses.
- Corrected automatic BIC selection so that both the unpenalized likelihood
and the effective parameter count are evaluated at the thresholded
operational estimator. Smooth optimizer solutions, rather than thresholded
vectors, are retained as warm starts along the regularization path.
- Fitted objects now store both the smooth optimizer solution (
par) and the
operational activity-thresholded solution (par_oper). Downstream parameter
prediction uses the operational estimator by default, while
coef(fit, operational = FALSE) preserves access to the smooth solution.
- Coefficient bootstrap replicates now use the operational estimator, allowing
percentile distributions to retain an atom at zero.
- Univariate covariate generators now fit a genuine stable AR model selected
by BIC instead of padding the series with an artificial noise coordinate.
- Covariate simulation now supports exact Gaussian stationary-state
initialization, while retaining zero-state burn-in as an explicit
sensitivity option.
Validation and defensive checks
- Return-level integration now rejects non-finite fitted parameters and
non-positive scales instead of silently omitting invalid contributions.
- Parametric and empirical marginalization verify all direct and interaction
input covariates before constructing annual trajectories.
- Prediction matrices are rebuilt directly from the stored design columns,
avoiding formula reinterpretation of non-syntactic or interaction-like
column names.
- Package metadata and the dissertation citation were synchronized for the
0.3.0 development line.
margEVT 0.2.0 (2026-08-26)
Consistency and temporal resolution
- Added
active_tol to fit_nhpp() and stored it in fitted objects. The same
tolerance is now used by automatic BIC selection, print(), summary(),
bic_nhpp(), active_covariates(), bootstrap refits, and downstream
covariate generators.
build_cov_annual(), fit_var_generator(), simulate_covariates(),
marginalize(), and backtest() now inherit the temporal resolution from
the fitted model unless the user supplies an explicit override.
- Added frequency-aware behavior for weekly and other non-daily analyses.
fit_var_generator() now verifies the VAR root condition, stores the root
moduli and spectral radius, and refuses to simulate from an unstable fit.
simulate_covariates() now generates independent annual Monte Carlo paths,
each with its own burn-in, instead of splitting one dependent long path into
nominal annual replicates.
- Corrected GEV endpoint handling in marginalized probabilities: levels below
the lower endpoint when the shape is positive now have zero non-exceedance
probability, while levels above a finite upper endpoint retain probability
one conditionally on that trajectory.
Inference and documentation
- Backtesting now reports
not_rejected alongside the legacy calibrated
field and uses language appropriate for nominal binomial comparisons and
exploratory tail-conditional PIT diagnostics.
- Validation years with insufficient observed coverage are now excluded from
binomial denominators instead of being silently counted as non-exceedances.
- Approach C now uses a locally preserved random seed, preventing its annual
block sampling from resetting the outer bootstrap stream and repeating
subsequent parametric bootstrap draws.
bootstrap_rl() now reports the original fitted-model return level in
RL_est; previous versions reported the mean of successful bootstrap roots.
- Clarified that the bootstrap is conditional on the observed occurrence
pattern and selected model specification.
- Corrected the documentation of empirical annual-block marginalization and
the event-based BIC convention.
- Added strict validation for block-specific penalty controls, return periods,
Monte Carlo samples, and covariate trajectory lengths to prevent silent
recycling or malformed fits.
- Return-level root finding no longer expands below the fitted threshold. It
expands only the upper bracket and returns
NA when the requested quantile
lies outside the point-process tail domain.
margEVT 0.1.1 (2026-07-30)
- Added
plot.nhpp_fit() for cumulative-intensity and fitted-parameter plots.
- Added package URL and bug-report metadata.