Skip to contents

bcaboot 1.0

Breaking changes

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

Deprecations

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

Bug fixes

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

New features

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

Dependencies

  • Added cli, tibble, generics, lifecycle to Imports.
  • Added ggplot2 to Suggests (for autoplot()).

Internal

  • Shared helpers extracted to 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.
  • Test suite expanded from 14 to 34 tests, including adapter tests proving numerical equivalence against pre-1.0 fixtures.