New primary API: bca_nonpar() replaces bcajack(), bcajack2(),
and bcanon(). bca_par() replaces bcapar().
All computation functions now return a canonical "bcaboot" object
with consistent structure: $limits (9x4 matrix), $stats (2x5
matrix), $B_mean, $ustats. The old field names ($lims,
$B.mean) are aliased via $.bcaboot for backward compatibility.
User-facing parameter conf.level (e.g., c(0.95, 0.90)) replaces
alpha (e.g., c(0.025, 0.05)). Internally, alpha expansion is
unchanged.
Descriptive parameter names: n_groups (was m), group_reps
(was mr), kl_fraction (was pct), n_jack (was K),
jack_groups (was J), truncation (was trun),
conf_density (was cd), boot_data (was overloaded B).
bcanon() removed (was never on CRAN).
bcajack(), bcajack2(), bcapar(), and bcaplot() are
deprecated with lifecycle warnings (once per session). They will
continue to work through thin wrappers that translate to the new
API.Issue #2: Fixed grouped jackknife (n_groups < n) using
sapply(seq_len_m, sample.int, ...) which accidentally passed
iteration values as the first positional arg, overriding the
n= keyword and enabling replacement. Replaced with
matrix(sample.int(n, n-r), nrow=m) for correct without-replacement
partition. (Reported by admash)
Issue #7: Fixed dimension drop when x is a single-column
matrix (vector input). x[-i, ] on an n x 1 matrix returned a
vector instead of a matrix, causing type inconsistency between
jackknife and bootstrap code paths. Added drop = FALSE to all
matrix subsetting passed to func. (Reported by R180)
Issue #4 / #1: regression_accel now checks for underdetermined
regression (nearby samples < ncol(Y)) and errors with an
actionable message instead of silently returning NAs. Suggests
increasing B, increasing kl_fraction, or switching to
accel = "jackknife". (Reported by Tim Pollington, Thomas Covert)
PR #8: Fixed missing return() in K = 0 early-exit path of
bcajack(), bcajack2(), and bcapar(), which caused execution
to fall through to the K > 0 code. In the rewrite, all early
exits use explicit return(new_bcaboot(...)). (Reported by Bettina
Gruen)
tidy() method: returns a tibble with one row per (confidence
level, method) pair, following broom conventions (conf.level,
method, estimate, conf.low, conf.high).
glance() method: returns a one-row tibble summarizing the
bootstrap run (method, accel, theta, sdboot, z0, a,
sdjack, B, boot_mean).
autoplot() method: ggplot2 visualization of BCa vs standard
confidence intervals. Requires ggplot2 (in Suggests).
Improved print(): formatted summary with confidence limits table
instead of raw list dump.
bca_nonpar() always computes the gbca diagnostic when using
accel = "regression" (with tryCatch for robustness).
All user-facing messages use cli for consistent formatting.
cli, tibble, generics, lifecycle to Imports.ggplot2 to Suggests (for autoplot()).R/bca_core.R: expand_alpha(),
bootstrap_resample(), jackknife_accel(), regression_accel(),
compute_ustats().new_bcaboot() canonical constructor guarantees consistent return
structure across all computation functions.