| aggregate_experts | R Documentation |
Combines elicited priors from multiple experts into a single consensus distribution using either linear pooling (mixture) or logarithmic pooling (normalised product of densities). Includes diagnostics for inter-expert disagreement.
aggregate_experts(
priors,
weights = NULL,
method = c("linear", "logarithmic"),
disagreement_threshold = 0.5
)
priors |
A named list of |
weights |
Numeric vector of expert weights (summing to 1). If |
method |
Character. |
disagreement_threshold |
Numeric in (0, 1). Triggers a warning when
the pairwise Bhattacharyya coefficient drops below this value, flagging
substantial expert disagreement. Default |
Linear pooling satisfies the marginalization property (McConway,
1981): pooling a joint distribution and then marginalising gives the
same result as marginalising each expert's distribution first and then
pooling. The consensus density is a weighted mixture
\pi(\theta) = \sum_k w_k \pi_k(\theta). This is the most commonly
used approach in clinical trial settings (O'Hagan et al., 2006). The
resulting prior always lies within the convex hull of individual expert
priors. The mixture's summary mean and SD (in $fit_summary, used
e.g. by sensitivity_grid to derive a working prior) are
computed exactly from the component means/SDs and weights, without
numerical integration:
\text{mean} = \sum_k w_k \bar{x}_k, \quad
\text{var} = \sum_k w_k \left(s_k^2 + \bar{x}_k^2\right) - \text{mean}^2
Logarithmic pooling satisfies external Bayesianity (Genest, Weerahandi
& Zidek, 1984): pooling experts' priors and then updating on data gives
the same result as updating each expert's prior individually and then
pooling the posteriors – pooling and Bayesian updating commute. This is
in fact the only pooling operator with this property (Genest,
McConway & Schervish, 1986); no pooling method can satisfy both external
Bayesianity and marginalization simultaneously. The consensus density is
proportional to \prod_k \pi_k(\theta)^{w_k}, which produces a
sharper consensus when experts agree, but can be severely influenced by
outlying expert opinions. Unlike linear pooling, no closed-form summary
SD exists for the pooled density in general; $fit_summary$sd is
NULL for logarithmically-pooled priors.
A bayprior object (dist = "mixture" for linear pooling,
dist = "log_pool" for logarithmic), with an additional
$aggregation component containing:
methodPooling method used
weightsApplied weights
disagreementPairwise Bhattacharyya coefficients
n_expertsNumber of experts
O'Hagan, A., et al. (2006). Uncertain Judgements: Eliciting Experts' Probabilities. Wiley.
McConway, K. J. (1981). Marginalization and linear opinion pools. Journal of the American Statistical Association, 76(374), 410-414.
Genest, C., Weerahandi, S., & Zidek, J. V. (1984). Aggregating opinions through logarithmic pooling. Theory and Decision, 17(1), 61-70.
Genest, C., McConway, K. J., & Schervish, M. J. (1986). Characterization of externally Bayesian pooling operators. The Annals of Statistics, 14(2), 487-501.
p1 <- elicit_beta(mean = 0.25, sd = 0.08, method = "moments", expert_id = "E1",
label = "Response rate")
p2 <- elicit_beta(mean = 0.35, sd = 0.10, method = "moments", expert_id = "E2",
label = "Response rate")
p3 <- elicit_beta(mean = 0.30, sd = 0.09, method = "moments", expert_id = "E3",
label = "Response rate")
consensus <- aggregate_experts(
priors = list(E1 = p1, E2 = p2, E3 = p3),
weights = c(0.4, 0.3, 0.3),
method = "linear"
)
print(consensus)
plot(consensus)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.