\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
https://github.com/alrobles/xplus. Development, audit harnesses and
historical baselines live in a separate development repository.
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.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.