Summary
Tracking issue for validating and hardening the randomForest engine paths in ggRandomForests. Historically the package has been exercised mostly via rfsrc; a validation pass across the 6 randomForest-dispatching extractors (gg_rfsrc, gg_error, gg_vimp, gg_variable, gg_roc, calc_roc) × {classification, regression} surfaced real defects with no regression coverage.
Grouped issues
Scope (v2.8 cycle, own branch/PR — not the varPro Phase plans)
Non-goals
Closes #80, #81 when complete.
Summary
Tracking issue for validating and hardening the
randomForestengine paths in ggRandomForests. Historically the package has been exercised mostly viarfsrc; a validation pass across the 6randomForest-dispatching extractors (gg_rfsrc,gg_error,gg_vimp,gg_variable,gg_roc,calc_roc) × {classification, regression} surfaced real defects with no regression coverage.Grouped issues
gg_variable()returns an empty plot forrandomForestobjects (classification & regression). Root cause:plot.gg_variablereturns a barelistinstead of a singleggplot/patchworkfor the randomForest case (same bug class as the v2.7.3 plot.gg_partial*: return a single combined figure instead of a named list #77/fix: plot.gg_partial* return single patchwork figure instead of named list (#77) #78plot.gg_partial*unification); thegg_variable.randomForestextractor itself is correct.gg_roc()/calc_roc()produce a degenerate ROC (~0.5 AUC, 3 points) forrandomForest. Root cause: the curve is built from hard class labels, not OOB vote probabilities; the defaultwhich_outcome="all"path warns and silently returns class 1.Scope (v2.8 cycle, own branch/PR — not the varPro Phase plans)
tests/testthat/test_plot_layer_data.Rwith a fullrandomForestmatrix (every supported family × class/regr) using the existingexpect_layer_nonempty/expect_layer_has_variationhelpers — coverage-first (TDD: gg_variable() returns an empty plot for randomForest objects (classification & regression) #80/gg_roc()/calc_roc() produces a degenerate ROC (~0.5 AUC, 3 points) for randomForest objects #81 fail red first).test_gg_roc.R(AUC≈1 on separable iris setosa; ROC point count > n_classes; default macro-average curve, no warning).plot.gg_variable→ singleggplot/patchwork; do not regress the shared rfsrc path).calc_roc.randomForestusesobject$votesOOB probabilities; default = macro-average one-vs-rest). Per-class faceting + ROC CIs remain with Meta: gg_roc enhancements (multi-class + confidence intervals) #72, not here.test_snapshots.R's existing opt-in guard.plot.gg_rfsrcregression straylabs(colour="Outcome")(Ignoring unknown labels).gg_partial/gg_survival/gg_brieras intentionally rfsrc-only.Non-goals
rfsrc-path behavior change; varPro work.Closes #80, #81 when complete.