The ITE methodology paper cited in the Description field (Sadatsafavi et al.) is now published; the citation has been updated from the arXiv preprint used in 0.1.0 to the published article in Statistics in Medicine (doi:10.1002/sim.70724).
Added a ties argument to cumulcalib()
and cumulcalibITE(), controlling how observations with
exactly tied predictor values (p for
cumulcalib(), h for
cumulcalibITE()) are handled. Options are
"group" (the new default), "random", and
"ignore". Ties are only checked for, and acted on, when
they are actually present, so there is no overhead for the common case
of continuous, untied predictors.
Behavior change: previously, when predictor
values were tied (as routinely happens with tree-based models,
e.g. causal forests, which often produce many repeated predicted
values), results depended on the arbitrary order in which tied
observations appeared in the input data – the same data could yield a
different p-value on every run. With the new default,
ties = "group", results are fully deterministic regardless
of input row order: tied observations are treated as one group (a
macro-observation) and the time/location change is averaged out across
the group; for cumulcalibITE(), this is supported for both
the conditional (p supplied) and marginal
(p = NULL) approaches. ties = "ignore"
reproduces the previous (order-dependent) behavior, and
ties = "random" resolves ties via random reordering, for
users who want an explicit robustness check.
Added cumulcalibITE(), extending the cumulative
calibration methodology to the assessment of moderate calibration of
individualized treatment effect (ITE) models using data from a
randomized trial (Sadatsafavi et al. 2026, doi:10.1002/sim.70724). A
companion vignette demonstrates its use.
Added print() methods for objects returned by
cumulcalib() and cumulcalibITE(), and extended
summary() to also support cumulcalibITE()
output.
print() and summary() now report the
direction of the maximum cumulative calibration error C* (as a worded
tag, e.g. “observed benefit < predicted”) together with the predicted
value at its location. Direction is reported only for C, the
descriptive metric; the test statistics (S_n, S, B*) are referred
to null distributions of absolute deviations and remain unsigned. The
direction is derived on the fly and is consistent with
plot().
summary() now describes the shape of miscalibration
around the maximum cumulative calibration error (C): whether the
cumulative error reverses at an interior peak (opposite directions on
either side of that location) or is one-directional (a monotone
accumulation), with the direction(s) worded in terms of observed vs
predicted. Reported only when the standardized maximum deviation S
is at least shape_threshold (default 1.5), so it stays
silent for unremarkable processes. Added the crossover
element to the summary object and the shape_threshold
argument to summary().
Behavior change: plot() no longer
draws significance-threshold lines by default; only the statistic
line(s) are drawn. Pass stats_config = list(lines = "vh")
to restore the previous default of showing both, or
list(lines = "h") for thresholds only.
Fixed a bug where the bridge test’s significance line was not drawn parallel to the line connecting the start and end of the random walk.
Fixed an error in summary() for the
BM2p method caused by a stray writeLines()
call.