RELEASE 3.3.0

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).

RELEASE 3.2.0

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.

RELEASE 3.1.0

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, ...).

RELEASE 3.0.0

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.

RELEASE 2.1.0

Major refactoring/enhancement to functions downstream from entry varpro() function.


RELEASE 2.0.0

Functionality of ivarPro improved. Code refactored to improve speed. All mclapply() have been eliminated or replaced by PSOCK providing Windows compatibility as well.


RELEASE 1.0.0. Initial release on CRAN on 2025/12/11!

RELEASE 0.0.1. The birthday of varPro is 2022-05-23