| idr | R Documentation |
Fits isotonic distributional regression (IDR) to a training dataset.
idr(y, X, y_observed = NULL, weights = NULL, decreasing = FALSE,
groups = setNames(rep(1, ncol(X)), colnames(X)), orders = c("comp" = 1),
stoch = "sd", pars = list(verbose = FALSE, eps_abs = 1e-5,
eps_rel = 1e-5, max_iter = 10000L), progress = TRUE)
y |
numeric vector (the response variable). |
X |
data frame of numeric or ordered factor variables (the regression covariates). |
y_observed |
vector of indicators (TRUE or 1 for observed, FALSE or 0
for right-censored). At least one observation must be uncensored. Default
is all observed ( |
weights |
vector of finite, non-negative weights (same length as y), at least one of which must be positive; observations with zero weight are dropped from the fit. Default is all weights equal to one. Weights are processed in single precision; it is up to the caller to avoid extreme imbalance (as a rule of thumb, no weight below ~1e-7 of the total weight). |
decreasing |
boolean indicating whether |
groups |
named vector of length |
orders |
named vector giving for each group in |
stoch |
stochastic order constraint used for estimation. Default is
|
pars |
parameters for quadratic programming optimization (only relevant
if |
progress |
display a progress bar while fitting ( |
This function computes the isotonic distributional regression (IDR)
of a response y on on one or more covariates X. IDR estimates
the cumulative distribution function (CDF) of y conditional on
X by monotone regression, assuming that y is more likely to
take higher values, as X increases. Formally, IDR assumes that the
conditional CDF F_{y | X = x}(z) at each fixed threshold z
decreases, as x increases, or equivalently, that the exceedance
probabilities for any threshold z P(y > z | X = x) increase
with x.
The conditional CDFs are estimated at each threshold in unique(y).
This is the set where the CDFs may have jumps. If X contains more
than one variable, the CDFs are estimated by solving
length(unique(y)) quadratic programs with a built-in operator
splitting solver (see references). This might take a while if the training
dataset is large.
Use the argument groups to group exchangeable covariates.
Exchangeable covariates are indistinguishable except from the order in
which they are labelled (e.g. ensemble weather forecasts, repeated
measurements under the same measurement conditions).
The following orders are available to perform the monotone regression in IDR:
Componentwise order ("comp"): A covariate
vector x1 is greater than x2 if x1[i] >= x2[i] holds
for all components i. This is the standard order used in
multivariate monotone regression and should not be used for
exchangeable variables (e.g. perturbed ensemble forecasts).
Stochastic dominance ("sd"): x1 is greater than x2 in
the stochastic order, if the (empirical) distribution of the elements of
x1 is greater than the distribution of the elements of x2 (in
first order) stochastic dominance. The "sd" order is invariant under
permutations of the grouped variables and therefore suitable for
exchangeable covariables.
Increasing convex order ("icx"):
The "icx" order can be used for groups of exchangeable variables. It
should be used if the variables have increasing variability, when their
mean increases (e.g. precipitation forecasts or other variables with
right-skewed distributions). More precisely, "icx" uses the
increasing convex stochastic order on the empirical distributions of the
grouped variables.
An object of class "idrfit" containing the following
components:
X |
the training covariates as provided, one row per observation (in input order, including duplicated rows). |
y |
numeric vector of the training responses. |
cdf |
matrix containing the estimated CDFs, one CDF per row,
evaluated at |
weights |
the observation weights as provided ( |
response_unique |
the thresholds at which the CDFs in
|
groups, orders |
the groups and orders used for estimation. |
diagnostic |
diagnostics of the CDF estimation. For univariate
fits (total order) this is |
The function idr is only intended for fitting IDR model for a
training dataset and storing the results for further processing, but not
for prediction or evaluation, which is done using the output of
predict.idrfit.
The fitted object contains an external pointer to memory managed by the
internal Rust library. It is only valid within the R session that created
it: fits saved with saveRDS cannot be restored in a new session.
Henzi, A., Moesching, A. & Duembgen, L. Accelerating the Pool-Adjacent-Violators Algorithm for Isotonic Distributional Regression. Methodol Comput Appl Probab (2022). https://doi.org/10.1007/s11009-022-09937-2
Bladt, M., Henzi, A., van den Heuvel, B. and Ziegel, J. (2026). Survival Isotonic Distributional Regression. arXiv:2608.02914. https://doi.org/10.48550/arXiv.2608.02914
The S3 method predict.idrfit for predictions based on
an IDR fit.
data("rain")
## Fit IDR to data of 185 days using componentwise order on HRES and CTR and
## increasing convex order on perturbed ensemble forecasts (P1, P2, ..., P50)
varNames <- c("HRES", "CTR", paste0("P", 1:50))
X <- rain[1:185, varNames]
y <- rain[1:185, "obs"]
## HRES and CTR are group '1', with componentwise order "comp", perturbed
## forecasts P1, ..., P50 are group '2', with "icx" order
groups <- setNames(c(1, 1, rep(2, 50)), varNames)
orders <- c("comp" = 1, "icx" = 2)
fit <- idr(y = y, X = X, orders = orders, groups = groups)
fit
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.