Released 2026-09-12
pooling_surv() is the new general entry point for fitting Bayesian
pooling models for right-censored log-normal survival data. It runs the
same data-augmented Gibbs sampler under three pooling modes, selected
with the new pooling argument:
pooling = "exnex" — the EXNEX hierarchy (default, as in previous
releases);pooling = "complete" — a single shared basket effect with prior
N(m_mu, v_mu) (complete pooling);pooling = "none" — independent basket effects with priors
N(m_nex_j, v_nex_j) (no pooling).exnex_surv() is deprecated in favour of pooling_surv(); it now emits
a one-line deprecation message and forces pooling = "exnex". All
existing calls continue to work."pooling_surv"; all methods
(summary(), print(), plot(), survival_curves(),
median_survival(), rmst(), probability_superiority(),
compute_waic(), compare_waic()) accept them.pooling mode (e.g. p_mix
under "complete" or "none") now trigger a warning naming the ignored
fields.print() output now labels the fitted pooling variant.thin argument in pooling_surv(): keep every thin-th
post-warmup draw (default 1, keep all). Thinning reduces memory and
posterior autocorrelation without changing the sampler.verbose argument in pooling_surv() (default TRUE): a live
progress bar (progressr) reports progress while the chains run;
silenced with verbose = FALSE.compare_waic() now names rows with the argument names used in the call
(e.g. fit_exnex) instead of the anonymous fit1/fit2 labels; when no
informative name is available it falls back to the fitted pooling
variant.parallel_chains in pooling_surv() is now a logical flag:
TRUE runs all chains concurrently on background sessions through the
future framework (progress from workers is relayed to your console,
so it works in RStudio too); FALSE (default) runs chains sequentially.verbose = TRUE, a live progress bar (progressr) now updates
while the chains run, in both sequential and parallel execution; the
per-chain text lines were removed.convergence_diagnostics() computes split R-hat, bulk ESS and tail
ESS per parameter; summary()/print() now include these columns and a
one-line convergence verdict automatically.rank_probabilities() gives the posterior probability of each rank
position per basket (median survival, S(t_0), or RMST summaries).posterior_predictive_check() overlays the posterior predictive mean
survival curve with the observed Kaplan-Meier curve per basket.shrinkage_plot() contrasts EXNEX posterior estimates against
unpooled Kaplan-Meier medians to visualise partial pooling.compute_waic() and compare_waic() now return se_elpd_waic instead
of se_waic, matching the convention of the loo package.simulate_data() replaces argument n_each with n (scalar or
per-basket vector) and adds argument K (number of baskets).simulate_data() now actually uses the n argument; previously n_each
was accepted but ignored in favour of a hard-coded size sequence.survival_curves() now emits a warning when more than one group exists
in the fitted model but newdata is not supplied.rmst() now correctly defaults tmax to max(fit$data$time) instead
of requiring it.probability_superiority() no longer returns a useless level = NULL
element; its newdata handling is now consistent and better documented.survival_curves() computes posterior survival curves S(t) (with
plot.survival_exnex() for plotting);median_survival() returns posterior median survival times;rmst() returns the restricted mean survival time up to a horizon;compute_waic()/compare_waic() provide WAIC model comparison;probability_superiority() estimates the posterior probability that one
group beats another on median, survival probability, or RMST;simulate_data() generates log-normal basket-trial datasets (with
resistant baskets) for studies and examples.