NEWS
varPro 3.3.1
Bug fixes and refinements
- Improved
partialpro() validation of predictor limits, learner predictions,
virtual-twin scores, and classification targets and probabilities. Named
class targets now match named probability columns, and unsupported
multivariate responses are rejected explicitly.
- Failed or rank-deficient partial-profile fits now remain unavailable instead
of producing flat curves. Supported-data fits are retained when no valid
out-of-sample error comparison favors the unrestricted fit.
- Fixed
plot.partialpro() predictor indexing and limits, single-case
summaries, and missing-profile handling. Unavailable standard errors remain
NA, while available mean curves can still be displayed.
- Improved binary partial-profile plots to preserve complete predictor labels,
group identities, and graphics settings. Baseline-contrast plots now use
the axis label "change from baseline".
- Fixed
gbm.learner() binary-response encoding and probability-column labels.
GBM and BART learners now accept single numeric survival targets, and RF and
GBM learners avoid collisions between response and predictor names.
- Fixed test-data hot-encoding to preserve rows with missing factor values,
retain encoding metadata after column selection, and prevent new factor
levels from displacing existing training columns through name collisions.
- Fixed
outpro(reduce = TRUE) to expand selected original predictors to their
fitted hot-encoded columns using the encoding map, preserving priority
order and assigning each column its original predictor's weight.
- Corrected
uvarpro() importance weighting to use original-region OOB counts.
Explicitly supplied seeds are now passed to forest construction, and
generated response names no longer collide with predictor names.
- Improved UVarPro local lasso fitting by excluding constant predictors,
supporting a single varying predictor, and avoiding dummy-column name
collisions.
- Corrected
varpro.strength() importance standardization for single responses
stored as matrices or data frames and for multivariate regression, scaling
each response's importance by its own standard deviation.
Documentation
- Expanded documentation for importance and variable selection, cross-validation,
iVarPro gradients and plotting, outPro scoring and calibration, UVarPro local
analysis, and partial profiles. Clarified prediction scales, uncertainty
guides, baseline contrasts, and reproducibility controls.
varPro 3.3.0 (2026-09-22)
New features
cv.varpro() gains optional outer cross-validation through cv.folds and
foldid, with held-out prediction errors, selection frequencies, and
importance-stability summaries for all three selection rules. The default,
cv.folds = 0, retains OOB-based selection without outer cross-validation.
varpro() objects now include model.info, recording original and working
responses, survival targets and RMST horizons, class-label mappings, and
effective forest settings. model.info$observations also records input,
retained, and omitted row counts, including in split.weight.only
results (#7).
Interface changes
- Removed iVarPro cut-ladder storage and plotting bands.
plot() for iVarPro
objects no longer supports ladder, ladder.cuts, or ladder.max.segments;
remove these arguments from existing calls.
varpro(), partialpro(), rf.learner(), gbm.learner(), and
bart.learner() now reject unnamed options, unrecognized names, and
duplicate names in ... (#7). This includes unsupported na.action
in varpro() and RMST, rmst, and time in partialpro().
rf.learner() now rejects user-supplied formula, data, xvar.wt,
and perf.type, which the wrapper sets internally (#7).
Bug fixes and refinements
- Added long vector support for SEXP input-output, internal transient
allocations, and offset handling.
- Importance summaries now map encoded columns to original predictors exactly,
avoiding substring and regular-expression name collisions and incorrect
pooling across responses.
get.orgvimp() now reuses a supplied vmp summary.
- Fixed multivariate importance-column handling and CV importance extraction
for empty selections and forced one-variable models.
- Improved hot-encoding of single-level factors and factors with nonsyntactic
names. Internal survival-response names now avoid predictor-name collisions.
- Fixed
ivarpro() to honor scale = "global" and scale = "none" throughout
neighborhood searches and exclude invalid local fits with use.loo = FALSE.
- Corrected multivariate VarPro OOB-prediction extraction in
ivarpro() and
preserved all columns of user-supplied y.external responses.
- Fixed iVarPro prediction to reuse training hot-encoding, preserve row
alignment, honor
noise.na overrides, and restore training OOB scores when
predict() is called without newdata, including on a prediction result.
- Improved iVarPro plotting with a single retained predictor, numeric gradient
matrices, and plotting data containing unrelated nonnumeric columns.
- Corrected survival CRPS evaluation to use the evaluation outcomes and
matching censoring predictions, including in the fast fitting path.
Evaluation with
nblocks = 1 now respects supplied held-out data.
- Improved
cv.varpro() input validation, cutoff ordering, and handling of
unavailable prediction errors, with warnings when no candidate error is finite.
- Applied RFQ imbalance controls consistently in the rule-generating forest
and cross-validation candidate forests.
- Fixed
get.rmst() to use full-ensemble survival estimates with an OOB
fallback, validate time horizons, and preserve matrix dimensions for small
inputs and response identities for multiple horizons. The integral now
uses survival at each interval's left endpoint (#7).
- Fixed
varpro.strength(..., stat = "oob") to return meanOOB for regression.
- Fixed
sdependent() to align importance-matrix rows and columns by variable
name before clearing self-links, fill missing release rows with zeros, and
validate matrix values and names.
varpro() now warns when preprocessing omits observations with missing
values, reporting the input, omitted, and retained counts (#7).
Documentation
- Expanded documentation and examples for VarPro selection, cross-validation,
iVarPro fitting and prediction, outPro scoring and calibration, and UVarPro
local lasso analysis and dependence graphs.
- Documented
shap.ivarpro() with the iVarPro plotting methods and
get.beta.entropy() and sdependent() with uvarpro().
- Documented validation of additional arguments, supported learner controls,
and observation counts (#7).
varPro 3.2.0 (2026-08-22)
New features
partialpro() gains a new vt.filter argument for selecting the virtual-twin filtering engine. The default, vt.filter = "isopro", preserves the existing isolation-forest filtering behavior. New alternatives are vt.filter = "outpro", which uses outpro-based out-of-distribution support, and vt.filter = "none", which disables VT filtering.
- Added
outpro-based VT filtering to partialpro(). For vt.filter = "outpro", virtual twins are scored by an outpro distance, calibrated against an outpro.null() reference distribution, and converted to a support score. The existing cut option is retained: larger values require stronger support and cut = 0 disables VT filtering.
- Added
distancef = "knn" to outpro(). The KNN distance is computed in the standardized selected predictor subspace and provides a faster option for large prediction or virtual-twin grids because it does not require the forest-neighborhood distance construction.
- The
outpro VT filter in partialpro() uses KNN distance by default through the hidden option out.distancef = "knn". Additional advanced controls are available through ..., including out.neighbor, out.reduce, out.cutoff, out.max.rules.tree, out.max.tree, out.knn.chunk.size, and out.null.
outpro() now supports newdata.xscale, allowing package-internal callers to pass new data that are already aligned to the fitted VarPro x-scale. This is useful for functions such as partialpro(), where virtual data are constructed directly from the stored VarPro design matrix.
outpro.null() now supports nulldata.xscale, providing the corresponding x-scale option for null/reference data.
Documentation
- Expanded the
partialpro() help file with a fuller description of the case-local partial-profile method, virtual-twin filtering, local polynomial smoothing, classification log-odds handling, binary-variable handling, and advanced options passed through ....
- Expanded the
outpro() documentation to describe the KNN distance option and the x-scale handling used by package-internal calls.
Bug fixes and refinements
- Fixed hidden-option parsing in
partialpro() so that nodesize is read from nodesize, not from ntree.
outpro.null() now uses cutoff = NULL by default, matching the main outpro() cutoff-selection rule and keeping null calibration consistent with ordinary outpro() calls.
varPro 3.1.0 (2026-04-19)
Breaking changes
importance() is now a true S3 generic rather than an alias-style front end.
partial.ivarpro() has been replaced by plot.ivarpro().
- The supported user-facing interfaces for fitted objects are now the corresponding S3 generics, such as
importance(), predict(), and plot().
S3 interface cleanup
- Registered
importance() methods for "varpro" and "uvarpro" objects.
- Registered
plot() methods for "ivarpro" and "partialpro" objects.
- Continued support for class-specific
predict() methods through standard S3 dispatch for "varpro", "uvarpro", "ivarpro", and "isopro" objects.
Documentation
- Help topics retain dotted method names such as
plot.ivarpro, plot.partialpro, predict.ivarpro, predict.varpro, predict.uvarpro, and predict.isopro so that method pages remain easy to find in the reference manual and via ?topic.
- Usage sections were updated to show S3 method signatures consistently, for example
\method{plot}{ivarpro}(x, ...) and \method{predict}{ivarpro}(object, ...).
- Examples were updated to use the generic forms
plot(x, ...), predict(object, ...), and importance(object).
- The iVarPro plotting documentation now uses
data for the original feature matrix and documents target explicitly for multivariate and multiclass outputs.
Migration notes
- Replace calls of the form
partial.ivarpro(iv, var = ...) with plot(iv, var = ...).
- Prefer
importance(fit) over direct calls to importance.varpro(fit).
- Prefer
predict(fit, ...) over direct calls to predict.class(fit, ...).
varPro 3.0.0 (2026-04-08)
Improvements
- Refactored
varpro.strength() to reduce R-side post-processing overhead after the native varProStrength call, improving performance on large forests and large membership reconstructions.
- Improved scalability and stability of
varpro.strength(..., membership = TRUE) for very large analyses.
- For RHF grow objects,
varpro.strength() now uses the integrated hazard exposure values stored on the fitted object (int.haz.oob) as the default working response when available.
- Internal cleanup of native-output decoding and membership reconstruction logic.
Bug fixes
- Fixed a failure that could occur on very large analyses when rebuilding membership lists in R after native execution, which could previously surface as an integer-overflow warning from
cumsum() followed by a downstream missing-value error in membership reconstruction.
varPro 2.1.0 (2026-02-12)
- Major refactoring and enhancement to functions downstream from the entry
varpro() function.
varPro 2.0.0 (2026-01-11)
- Improved
ivarPro.
- Refactored code to improve speed.
- Eliminated or replaced
mclapply() with PSOCK-based parallel execution, improving Windows compatibility.
varPro 1.0.1 (2025-12-14)
varPro 1.0.0 (2025-12-11)