Forecast aggregation
Suppose $m$ forecasters each report a probability distribution over the same outcomes. We want one consensus distribution. An opinion pool is a rule that maps the panel of forecasts to that single distribution. The two canonical pools, linear and logarithmic, differ in whether they average probabilities or average evidence, and that one choice fixes almost everything else about how the consensus behaves.
The problem of combining forecasts
Take a categorical outcome with $K$ classes. Forecaster $i$ submits a probability vector $p_i = (p_{i1}, \dots, p_{iK})$ with $p_{ik} \ge 0$ and $\sum_k p_{ik} = 1$, and carries a weight $w_i \ge 0$ with $\sum_i w_i = 1$. A pool is a map $(p_1, \dots, p_m) \mapsto \bar p$ returning another probability vector. The defining survey is Genest & Zidek (1986), Combining Probability Distributions: A Critique and an Annotated Bibliography, which frames the question axiomatically: which natural properties, preservation of unanimity, the external Bayesianity of commuting with a shared likelihood update, marginalisation, can a pool satisfy, and which are mutually exclusive. No single pool satisfies all of them, so the operator is a modelling decision, not a default.
A panel disagrees in two ways that a pool must handle differently: truthful spread of opinion, which we want to summarise, and a few badly wrong or adversarial reports, which we want to discount. The first three pools below treat all reports as truthful; the fourth defends against the second case.
The linear opinion pool
The linear pool is the weighted arithmetic mean of the forecasts:
It is the most transparent pool: the consensus probability of an outcome is
just the weighted fraction of belief the panel placed there. It preserves the
support: if any single forecaster assigns positive probability to an outcome,
so does the pool, which makes it robust to confident dissent and the natural
pool when forecasters are exchangeable. It is also generically multimodal:
it can reproduce a panel's clusters as separate bumps rather than
reconciling them. In code,
linear_opinion_pool(forecasts, weights) in
mechanisms/aggregation.py;
with $w_i = 1/m$ it is the plain average.
The pool's dispersion is usually described as under-confidence, and two separate theorems get run together under that heading. Keeping them apart matters, because only one of them is about confidence at all.
Entropy. Concavity of entropy gives $\sum_i w_i H(p_i) \le H\!\left(\sum_i w_i p_i\right) \le \sum_i w_i H(p_i) + H(w)$, the gap being the generalized Jensen–Shannon divergence (Cover & Thomas, Theorem 2.7.3; Lin 1991). So the pool is at least as diffuse as the average member. It is not always at least as diffuse as the sharpest: a uniform forecast on four atoms mixed with a point mass at weights $(0.01, 0.99)$ has entropy $0.076$ bits, below both members. And entropy is a property of the forecast alone.
Under-confidence is a property of the joint law of forecast and outcome, so the entropy inequality cannot establish it. The results that do: for binary outcomes, if the components are calibrated and at least two of them differ with positive probability, the pool is not calibrated, not sharp, and beaten by its own recalibration under every strictly proper score (Ranjan & Gneiting 2010, Theorem 2.1). More generally, neutrally dispersed regular components pool to something overdispersed, which is under-confidence in the PIT sense $\operatorname{var}(\mathrm{PIT}) < 1/12$ (Gneiting & Ranjan 2013, Definition 2.6(c) and Theorem 3.1(c)).
Calling the linear pool intrinsically underconfident overstates it. What linear pooling does is push dispersion up. That overshoots when the inputs are already calibrated, and it helps when they are overconfident, which is the common empirical case and part of why linear pooling performs as well as it does. Extremizing is the standard repair, and it is not guaranteed to help: optimal Bayesian ensembles sometimes anti-extremize when the forecasters share information, and the literature does not even agree on whether extremizing means moving away from $1/2$ or away from the prior predictive.
The logarithmic opinion pool
The logarithmic pool is the normalised weighted geometric mean, a weighted average in log-space, renormalised to sum to one:
It is externally Bayesian: pooling and then applying a shared likelihood update gives the same answer as updating first and then pooling. And it is decisive, because any zero probability annihilates the product, so the log pool zeroes out any outcome that any forecaster rules out. (In floating point the implementation floors the logarithm at $10^{-15}$, so a ruled-out outcome returns as a denormal rather than an exact zero. That is a guard against $-\infty$, not exact annihilation.)
Two things this page used to say about it are false, and both are worth correcting because both are widespread.
It does not multiply independent evidence. Combining conditionally independent evidence under a common prior $\pi$ gives $p \propto \pi^{1-m}\prod_i p_i$, with a prior correction that divides out the $m-1$ extra copies of the shared prior (Genest & Schervish 1985, Theorem 4.1; Dietrich 2010, Corollary 1). The identity $\pi\prod_i(p_i/\pi)^{w_i} = \pi^{\,1-\sum_i w_i}\prod_i p_i^{w_i}$ shows that correction vanishes exactly when the weights sum to one, which is the normalisation used here and the one external Bayesianity forces. So the averaging log pool and the evidence-multiplying product are different operators: the product needs $\sum_i w_i = m$, and in that form it is not externally Bayesian (Genest & Zidek 1986, eq. 4.4). Hinton's product of experts is the $w_i = 1$ case, and it escapes the double-counting only because its experts are trained jointly, with no shared prior to divide out.
It is not sharper than its members. Take $p_1 = (0.98, 0.01, 0.01)$ and $p_2 = (0.01, 0.98, 0.01)$ at equal weights. The pool is $(0.476, 0.476, 0.048)$, whose entropy $0.853$ nats is seven times either member's $0.112$ — and larger than the linear pool's $0.742$, so even the weaker folklore that the log pool is sharper than the linear one fails. The Gaussian case explains it: pooling $\mathcal N(\mu_i,\sigma_i^2)$ gives precision $\sum_i w_i/\sigma_i^2$, so the pooled variance is the weighted harmonic mean of the members' and always lies between the smallest and the largest. The log pool is never sharper than its sharpest member. Sharpening is what the unnormalised product does, and that is the same $\sum_i w_i = m$ that breaks external Bayesianity. Unanimity is the one case where nothing happens at all: identical forecasts pool to themselves.
Nor is the logarithmic form the unique externally Bayesian pool. Without a locality axiom the externally Bayesian operators are pinned down only within likelihood-ratio equivalence classes (Genest, McConway & Schervish 1986, Theorem 2.5), and the logarithmic form is recovered only on a sample space partitionable into at least four non-negligible sets; three atoms was open as of 1986, and for two there is an explicit non-logarithmic counterexample. The linear pool's own characterisation, by the marginalization property, needs at least three outcomes (McConway 1981).
The log pool is intimately tied to scoring. Its log-domain form is exactly the
operator that, given the panel, minimises the weighted sum of
Kullback–Leibler divergences $\sum_i w_i \, D_{\mathrm{KL}}(\bar p \,\|\, p_i)$:
the consensus is the distribution closest to the whole panel in total
KL. That is the same relative-entropy geometry that makes the
logarithmic score strictly proper, so the
log pool is the aggregation counterpart of log-score elicitation. In code,
logarithmic_opinion_pool(forecasts, weights).
Robust pooling against adversarial nodes
Both pools above are linear or log-linear in the reports, so a single extreme forecast can drag the consensus arbitrarily far, fine for a truthful panel, dangerous for an open network where some nodes may be broken, stale, or adversarial. The depth-trimmed mean hardens the linear pool by discarding outliers first. Each forecast is scored by its outlyingness, here the $L_1$ distance from the coordinate-wise median forecast, a simple proxy for low statistical depth, and the most outlying $\mathrm{trim}$ fraction is dropped before averaging the rest:
where $\mathcal{D}_{1-\mathrm{trim}}$ is the deepest $1 - \mathrm{trim}$
fraction of the panel and the result is renormalised. With $\mathrm{trim} = 0$
this is exactly the linear pool; raising it trades a little efficiency for a
bounded influence per node, so a minority of bad forecasts cannot move the
consensus past the trimming threshold. The median anchor is itself a deep,
hard-to-manipulate summary, which is what makes the trim adversarially robust
rather than merely tidy. In code,
depth_trimmed_mean(forecasts, trim).
Choosing the weights
Every pool above takes the weights $w_i$ as given, but choosing them is the substantive question. Equal weights are the truthful default when nothing distinguishes the forecasters; performance weights, set from past scores, so that consistently accurate forecasters count for more, are the usual refinement, and tie the pool back to the scoring rule used to evaluate the panel.
A different lens applies when the reports are point forecasts of the same
quantity: the weights that minimise the variance of the
combined forecast are the classic result of Bates & Granger (1969). With
forecast-error covariance $\Sigma$, the optimal weights are
$w \propto \Sigma^{-1}\mathbf{1}$, normalised by
$\mathbf{1}^{\top}\Sigma^{-1}\mathbf{1}$, exactly the minimum-variance
portfolio, with forecasts in place of assets and forecast errors in place of
returns. The whole difficulty then collapses to estimating the precision
matrix $\Sigma^{-1}$ from short, noisy histories: estimate it badly and the
“optimal” weights underperform a flat average, the
forecast-combination puzzle (Timmermann 2006; Smith & Wallis 2009).
The microprediction
precise package
is a battery of exactly these covariance / precision estimators and the
portfolio and aggregation rules built on them.
The most interesting case makes the weights endogenous: rather than assigning weights administratively, let forecasters stake on their own reports and read the weights off the resulting allocation. This is the wealth-weighted regime, where a forecaster's influence is the capital they are willing to risk and the pool is realised as a settlement rule rather than a formula imposed from outside. The nearest-the-pin parimutuel pool develops exactly this idea: a density-based pot-splitting mechanism in which stakes determine weights, the consensus emerges from the allocation, and proper-scoring incentives keep truthful reporting optimal, aggregation and reward fused into a single mechanism.
Try it
Two categorical forecasts over outcomes A/B, equally weighted. The linear pool is the arithmetic mean; the logarithmic pool is the normalised geometric mean, which pulls toward agreement and, contrary to folklore, is not generally sharper.
Code: mechanisms/aggregation.py · Demo: examples/sim_aggregation.py · Related: scoring rules