\examples from the unexported internal
functions new_xplus() and validate_xplus();
the package no longer uses \dontrun{} anywhere; and
xplus() no longer reads or writes .GlobalEnv
directly (the optional seed argument uses a plain
set.seed() call).Description to avoid false-positive spelling flags
and removed the private development repository URL from
NEWS.md and README.md.This is a major, breaking upgrade of the PLUS-derived package
extensions, not an exact reproduction of the paper or evidence of
predictive superiority. Response-scale model scores are not guaranteed
to be calibrated probabilities. The package remains xplus;
the production repository is alrobles/xplus on GitHub.
Development, audit harnesses and historical baselines live in the
private development repository
alrobles/xplus-develeopment.
learning_rate = 0; the accepted interval is
(0, 1]."0",
"1"; multiple lambdas retain a 0/1 matrix. Classification
uses a strict > object$cutoff comparison.newx in predict().
Validate finite numeric features; named training features require an
exact set of nonempty unique prediction names and are automatically
aligned. Reject mismatches and unsupported dots.s for training and new-data prediction,
including numeric lambdas. Cache-only objects support only
"lambda.min" without new data. get_auc()
forwards prediction arguments and requires one lambda;
assess() can return per-lambda metrics.assess()/auc_matrix()). Soft vectors are not
binary truth. Weights must be finite, nonnegative and row-aligned,
without recycling. Invalid rows are errors, not silently dropped
observations.NA with a warning when either
effective class mass is zero. Zero effective total mass/weight makes
assessment undefined. Ties receive half credit; constant scores with
both classes have AUC 0.5.[1e-5, 1 - 1e-5];
other metrics do not inherit that clipping.sampling = "bootstrap" preserves replacement
multiplicities as case weights on unique rows. Duplicate identities
never cross CV folds. sampling = "unique" retains legacy
deduplication, not all legacy behavior.sample_use_time is a budget of completed inclusion
rounds per identity, not bootstrap draws. Record both
sampling_counts and draw_counts.cv_measure = "deviance" in both iterative and
final fitting stages. AUC remains opt-in, with an explicit warning and
deviance fallback for fewer than 10 observations per fold on average;
iterative effective measures appear in history.stop_reason = "degenerate_labels".learning_rate < 1;
learning_rate = 1 uses sampled Bernoulli updates. Final
targets remain soft in both paths. Reference sampling budgets and
smoothing should not be mistaken for newly invented package
extensions.sigmoid_scale = 10 separately from glmnet
elastic-net alpha.min_iter = 5,
stability_window = 5, min_coverage = 0.9.
Stability compares undamped mapped scores against previous pseudo-labels
over all unlabeled cases. A full window of consecutive scores strictly
above convergence_threshold and minimum coverage are
required; damping alone cannot create convergence. Record
max_iter, budget_exhausted,
degenerate_labels and label_stability
distinctly rather than implying every stop is success.1e-5 and 1 - 1e-5). Soft labels all above 0.5
remain valid when mass is sufficient; hard-class counts do not trigger
final fallback.fallback_used and fallback_reason. Preserve
original_y, proposed pseudo_labels, actual
final_labels/y, iteration
history, sampling/draw counts and
final_foldid. Insufficient original-label mass is an error,
not a hidden recovery.seed from the caller’s RNG stream
and restore its prior state, including when no .Random.seed
existed.alrobles/xplus without
embedded credentials.alrobles/xplus-develeopment; they are not part
of the production source tree.Rscript -e 'devtools::test(stop_on_failure = TRUE)' and
require inspection of FAIL/WARN/SKIP counts. Keep build/check output
outside the tracked checkout.stop_reason = "degenerate_labels" instead of failing inside
glmnet::cv.glmnet().sample() error).xplus() fitting function with iterative
pseudo-label updates.predict(), coef(),
summary(), print(), assess(),
get_auc(), and get_predictions().lacs, lacsSample,
and binexample.