First CRAN release. This version adds a new interface and is otherwise backwards compatible: code written for 0.3.0 keeps working and gives the same fits, predictions and random number use. The algorithms, defaults and C++ code are those of 0.3.0.
batts_boost() and batts_bart() with settings
collected in boost_control() and bart_control(). They give the same
results as boots() and batts() with the corresponding settings; the
fitted object also records the call and the settings.bart_control() omits the boosting-only arguments of batts() (n_bins,
learn_rate, use_gradient, n_min_obs_per_node), which have no effect on
BART fits. keep_draws (saving the posterior forests) stays FALSE by default
because the forests can take over 100 MB with the default settings.batts_boost() and batts_bart() accept a numeric matrix, a data frame with
numeric columns or, for one variable, a numeric vector as x. Group labels
may be numeric, logical, character or a factor with two values; the first
level (for non-factors, the smaller value in sort order) is the numerator
group p. The labels are recorded in fit$group_levels and shown by
print().batts_boost(x, y = y) estimates the
ratio of the density of x to that of y.batts_boost or batts_bart, both inheriting
batts_fit; this includes fits from boots() and batts(). The contents
of the returned list are unchanged, so code that reads fields such as
tree_list keeps working.print(), summary() and nobs() methods. Printing a fit now shows a
short description instead of dumping the whole list; use unclass(fit) or
str(fit) for the previous output.predict() and fitted() methods and a density_ratio() extractor.
The method is chosen by the fit's class, so there is no is_Bayes argument.
type selects what is returned: "log_ratio" (the default) gives the
log-density ratio 2 * log(w) = log(p/q), "ratio" gives w ^ 2 = p/q, and
"weight" gives the balancing weight w = sqrt(p/q) that
eval_balance_weight() returns. Group 0 (the first group) is in the
numerator throughout.batts_bart fit, summary and interval collapse the posterior
draws. Each draw is transformed as type asks before being summarized, so
the result summarizes the posterior of the transformed quantity.predict() accepts a data frame or a vector as newdata and matches columns
by name when the training data had column names. Points outside the fitted
domain can give NA (outside = "na") or be moved to the boundary
(outside = "clamp"); the default ("error") stops and names the offending
values.predict() on a BART fit without saved forests explains how to refit with
keep_draws = TRUE.plot() methods, drawn with base graphics. A boosting fit shows the
cross-validation loss with the selected number of trees, or the fitted
log-density ratio for one variable; a Bayesian additive trees fit shows the
trace of the loss temperature, or the posterior mean of the log-density
ratio with a pointwise credible band for one variable.boots(), batts() and eval_balance_weight() are deprecated in favour of
batts_boost(), batts_bart() and predict(). They still work, keep their
arguments and defaults, and return the same results, but warn once per
session. ?"BATTS-deprecated" maps the old arguments to the new settings.
Note that predict() returns the log-density ratio by default, whereas
eval_balance_weight() returns the balancing weight; pass
type = "weight" for the older scale.?boots still
works, but they are marked internal and left out of the reference manual
and the help index.vignette("BATTS-introduction")):
one-dimensional location and scale examples with credible bands, and the
two-dimensional global and local shift examples based on the paper.Description and citation("BATTS") cite the paper,
arXiv:2508.03059 (doi:10.48550/arXiv.2508.03059).RcppArmadillo is only linked to, not imported; graphics is imported.boots() and batts() are now the settings of the paper's
simulations. boots(): gradient boosting (use_gradient = TRUE), at most
1000 trees (num_trees_max) selected by 5-fold CV (K_CV = 5) and per-tree
subsampling of one half (subsample_fraction = 0.5); depth 4, learning rate
0.01, 32 bins and margin 0.1 are unchanged. batts(): 200 trees
(num_trees), 2000 burn-in iterations (size_burnin) and 1000 saved draws
(size_backfitting, previously required); the other defaults are unchanged.v0.2.2) with explicit settings.example.R use the new defaults, with a shorter
MCMC run (500 burn-in iterations and 500 draws) for a quick demonstration.subsample_fraction to boots() (default 1, unchanged behavior and
RNG use). A value below one builds each tree from a random subsample of
ceiling(subsample_fraction * m) training observations, drawn as in ada
with bag.frac: one observation per group, the rest uniformly without
replacement regardless of group. Splits, gradients and leaf values use the
subsample; all weights are updated, and the forward-stagewise normalization
and CV losses use the whole training set and held-out folds, respectively.run_adaboost() entry point takes the per-tree subsample
indices as an additional argument; batts() does not subsample.thin and validate prediction matrix dimensions
and finite values before passing data to C++ (U14, U17).update_lambda, lambda_prior_parameters, and
alpha_cutpoint. Leaf scale stays fixed at num_trees * lambda_0; cut
spacing/proposals use the previous default. Remove these named arguments
from existing calls. Nondefault cut grids and scale updating are no longer
supported. The C++ interface is regenerated with the reduced argument list.Official distribution: https://github.com/nawaya040/BATTS.
This release integrates commits 6ea6722 through 909ea357 after the
previous default-branch commit 6f625ba. They correct forward-stagewise
normalization and prediction constants, posterior-forest storage and guards,
CV group handling, gradient CV scaling, split loss and split-boundary rules,
PRUNE indices, and empty-leaf sampling and GROW moves. They add input guards
and restrict Bayesian initialization to unsplit trees. They also reduce
unnecessary copies, history allocation and internal-node index storage.
These existing changes can alter estimates and RNG streams. A run using 0.1.0 must record its own version and settings; numerical identity with the previous public version or every reported paper result is not asserted.
The new type-name fix preserves mathematical operations and RNG calls. Build-level equivalence and limitations are documented in inst/VALIDATION.md. No model, prior, canonical experiment setting or saved result is changed by this release preparation.