Ji 2024 - Gibbs Posterior and Learning-Rate Calibration
Summary
Concept note, no raw source for the theory. The AL “likelihood” with scale σ is a Gibbs (generalised-Bayes) posteriorπ(β∣D)∝exp{−ω∑iρτ(yi−xi′β)}π(β) with learning rate ω=1/σ. ω sets the spread, not the mode. Calibrate ω (e.g. by bootstrap so that intervals attain nominal coverage) to get honest quantile credible intervals. Ji et al. cite this route as an alternative (Syring and Martin 2019) but do not pursue it.
Overview
Ji et al. (Sec. 2.2): “For the broader class of approaches that choose a likelihood because its maximum minimizes a loss function, Syring and Martin (2019) suggest selecting the scale parameter so that the credible intervals have approximately correct empirical coverage. Such an approach could be used in AL-based Bayesian quantile regression but is not further pursued here.” Sec. 1 notes that “the general approach of constructing a posterior through a loss function is discussed by, for instance, Syring and Martin (2019).”
Main Content
Gibbs posterior with learning rate
For a loss ℓβ(y,x) with risk minimiser β∗=argminβEℓβ, prior π, and learning rate ω>0:
πω(β∣D)∝exp{−ωi=1∑nℓβ(yi,xi)}π(β).
For quantile regression with ℓβ=ρτ(y−x′β), ω=1/σ reproduces the AL posterior with fixed σ (up to the constant τ(1−τ)/σ factor in σ that does not depend on β). Bissiri, Holmes and Walker (2016) justify it as a coherent belief update for a loss-targeted parameter. ω=1 is “Bayes” only if the loss is a true negative log-likelihood.
Why the interval is mis-scaled (consequence of Eq. 1 in Ji et al.)
Under regularity, πω(β∣D)≈N(β^,ω−1H−1/n) where H=limn1∑fALD-type curvature of the risk, while the sampling covariance of β^ is the sandwich H−1VH−1/n with V=Var{ρτ′(y−x′β)x}. Credible sets have the right coverage only if ω−1H−1=H−1VH−1, i.e. ω equals a matrix ratio that depends on the unknown density of the errors at the quantile - not on anything the modeller sets. For scalar parameters: ω∗=H/V.
Bootstrap-calibrated learning rate (algorithm, Syring and Martin 2019 style)
Compute the loss minimiser β^ (e.g. Frisch-Newton LP).
For b=1..B: resample (y,x) pairs, recompute β^(b).
For a grid of ω: draw from πω (MCMC) and find ω s.t. the posterior covariance (or the credible-interval width) matches the bootstrap covariance of β^(b), or such that the bootstrap-estimated coverage of 100(1−a)% credible intervals equals 1−a. A stochastic-approximation (Robbins-Monro) version updates ω iteratively.
Report the Gibbs posterior at the calibrated ω∗.
Relation to the paper’s methods. IJ SEs (Ji 2024 - Infinitesimal Jackknife Standard Errors) replace the bootstrap by a one-run approximation and correct the standard error post hoc; Gibbs calibration corrects the posterior itself (including shape - useful for the skewed posteriors at extreme τ where the mean is biased, Fig. 8). The Yang-Wang-He adjustment (Ji 2024 - Yang-Wang-He Sandwich Adjustment) is asymptotically the matrix version of ω∗.
“When it lies” (E83): the AL mode is right (consistent point estimate, also valid for the quantile process), the spread is wrong (arbitrary σ), and there is a units trap (σ=1 means different weights for dollars vs thousands). Coverage simulations in Ji 2024 - Simulation Results and Applications quantify it.
Examples
Python: Gibbs posterior for a quantile by Metropolis, calibrated by bootstrap
import numpy as nprng = np.random.default_rng(0)y = rng.standard_normal(300); tau = 0.9rho = lambda u: u * (tau - (u < 0))def post_sd(omega, n_it=4000): b, out = np.quantile(y, tau), [] for _ in range(n_it): prop = b + 0.2 * rng.standard_normal() if np.log(rng.random()) < -omega * (rho(y - prop).sum() - rho(y - b).sum()): b = prop out.append(b) return np.std(out[1000:])boot_sd = np.std([np.quantile(rng.choice(y, len(y)), tau) for _ in range(500)])grid = np.exp(np.linspace(-2, 3, 12))sds = np.array([post_sd(w) for w in grid])omega_star = grid[np.argmin(np.abs(sds - boot_sd))] # calibrated learning rateprint(boot_sd, omega_star)
Rescaling y by c changes ω∗ by 1/c, which removes the units trap.
PyMC sketch (untested).pm.Potential("gibbs", -omega * pt.sum(rho(y - X @ beta))) with omega fixed to the calibrated value (not a free parameter: sampling it would reward ever-larger ω).