Skip to contents

Convert warm-start predictions to Bayesian BTL priors

Usage

make_warm_start_prior(predictions, ids = NULL, prior_sd = 0.5)

Arguments

predictions

Calibrated single-model or ensemble predictions, or finite numeric scores with names or explicit ids. Numeric input is an expert choice of relative prior location, not an automatic calibration method.

ids

Active item IDs. For prediction tables and named scores these must match the input ID set exactly and determine output order. For unnamed scores they identify input positions. Defaults to the IDs in the input.

prior_sd

Positive finite scalar or vector. An unnamed vector follows input order; a named vector aligns by ID. Defaults to 0.5. This default is a chosen prior width, not learned uncertainty calibration.

Value

A version-1 pairwiseLLM_warm_prior list containing item_id, scores, prior_mean, prior_sd, compact diagnostics, provenance, and an integrity digest. Pass this object to fit_bayes_btl_mcmc() or adaptive_rank_start().

Details

Single-model values must have learned OOF calibration. Ensembles use their equal-weight calibrated mean. Scores are centered over the active items in R; adaptive scoped refits subset the saved scores and center again in that scope. Calibration is not applied twice and original training BTL units are not used. Ensemble component predictions and sample disagreement SD remain diagnostics; disagreement never supplies the Bayesian prior SD automatically.

The normal prior applies to theta_raw; Stan centers this to obtain theta. Centering induces dependence, so the supplied SD is not the marginal SD of centered theta. Without predictive input, BTL retains raw prior mean 0 and SD 1. Adaptive BTL consumes this prior only in btl_only and both modes. Adaptive trueskill_only and both also use its centered prior_mean to initialize TrueSkill locations as 25 + (25/3) * prior_mean, with unchanged sigma by default. Explicit warm_start_trueskill = "predictive_distribution" additionally maps sigma = (25/3) * prior_sd, keeping beta = 25/6, without clipping. A prior object supplies its stored SD; model input requires explicit SD in that mode. This assumes comparable latent scales and does not turn raw-theta SD into the marginal SD of centered effects. Upstream workflows must establish calibration; explicit SD alone does not prove it. Scalar SD is a sensitivity assumption, not essay-specific calibration. Ensemble disagreement never supplies SD automatically. By default, every adaptive mode retains the same seeded connected shuffled bootstrap. The separate bootstrap_policy = "predictive_connected" opt-in uses frozen mapped means and SDs to build an allowed spanning tree; see adaptive_rank_start() for its reservoir and selection requirements. Standalone fit_bayes_btl_mcmc() retains its warm_start_prior interface without the adaptive four-mode argument.

Examples

prior <- make_warm_start_prior(c(a = -1, b = 0, c = 1))
prior$prior_mean
#> [1] -1  0  1