| Type: | Package |
| Title: | Calculate the Revealed Aggregator of Probability Predictions |
| Version: | 0.1.1 |
| Description: | Forecasters predicting the chances of a future event may disagree due to differing evidence or noise. To harness the collective evidence of the crowd, Ville Satopää (2021) "Regularized Aggregation of One-off Probability Predictions"https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3769945 proposes a Bayesian aggregator that is regularized by analyzing the forecasters' disagreement and ascribing over-dispersion to noise. This aggregator requires no user intervention and can be computed efficiently even for a large numbers of predictions. The author evaluates the aggregator on subjective probability predictions collected during a four-year forecasting tournament sponsored by the US intelligence community. The aggregator improves the accuracy of simple averaging by around 20% and other state-of-the-art aggregators by 10-25%. The advantage stems almost exclusively from improved calibration. This aggregator – know as "the revealed aggregator" – inputs a) forecasters' probability predictions (p) of a future binary event and b) the forecasters' common prior (p0) of the future event. In this R-package, the function sample_aggregator(p,p0,...) allows the user to calculate the revealed aggregator. Its use is illustrated with a simple example. |
| License: | GPL-2 |
| Copyright: | (c) Ville Satopaa |
| Encoding: | UTF-8 |
| RoxygenNote: | 7.1.1 |
| LinkingTo: | Rcpp |
| Imports: | Rcpp |
| Suggests: | testthat (≥ 3.0.0) |
| Config/testthat/edition: | 3 |
| NeedsCompilation: | yes |
| Packaged: | 2021-05-29 12:57:04 UTC; ville.satopaa |
| Author: | Ville Satopää [aut, cre, cph] |
| Maintainer: | Ville Satopää <ville.satopaa@gmail.com> |
| Repository: | CRAN |
| Date/Publication: | 2021-05-29 13:10:02 UTC |
Revealed Aggregator
Description
This function allows the user to compute the revealed aggregator fromSatopää, V.A. (2021):Regularized Aggregation of One-off Probability Predictions.The current version of the paper is available athttps://papers.ssrn.com/sol3/papers.cfm?abstract_id=3769945.
Usage
sample_aggregator( p, p0 = NULL, alpha = NULL, beta = NULL, a = 1/2, b = 1/2, num_sample = 1e+06, burnin = num_sample/2, thin = 1, seed = 1)Arguments
p | Vector of |
p0 | The forecasters' common prior. This represents a probability prediction based on some of the forecasters' common evidence and must be strictly between 0 and 1. |
alpha,beta | The shape and scale parameters of the prior beta distribution of the common prior.If omitted, the sampler uses the fixed common prior given by |
a,b | The parameters for the prior distribution of |
num_sample | The number of posterior samples to be drawn.This does not take into account burnin and thinning. |
burnin | The number of the initial |
thin | After |
seed | The seed value for random value generation. |
Value
A data frame with rows representing posterior draws of(p*, \rho, \gamma, \delta, p0). The columns are:
aggregate: The posterior samples of the oracle aggregatorp*.The average of these values gives the revealed aggregatorp''.The 95% interval of these values gives the 95% credible interval of the oracle aggregator.rho: The posterior samples of the forecasters' shared evidence,\rho.gamma: The posterior samples of the forecasters' total evidence,\gamma.The differencegamma-rhogives the posterior samples ofthe forecasters' rational disagreement.delta: The posterior samples of the forecasters' total evidence plus noise,\delta.The differencedelta-gammagives the posterior samples ofthe forecasters' irrational disagreement.p0: The posterior samples of the forecasters' common prior.If a beta prior distribution is not specified via the argumentsalphaandbeta,then all elements of this column are equal to the fixed common prior given by thep0argument.
Examples
# Illustration on Scenario B in Satopää, V.A. (2021).# Forecasters' probability predictions:p = c(1/2, 5/16, 1/8, 1/4, 1/2)# Aggregate with a fixed common prior of 0.5.# Sample the posterior distribution:post_sample = sample_aggregator(p, p0 = 0.5, num_sample = 10^6, seed = 1)# The posterior means of the model parameters:colMeans(post_sample[,-1])# The posterior mean of the oracle aggregator, a.k.a., the revealed aggregator:mean(post_sample[,1])# The 95% credible interval for the oracle aggregator:quantile(post_sample[,1], c(0.025, 0.975))# Aggregate based a uniform distribution on the common prior# Recall that Beta(1,1) corresponds to the uniform distribution.# Sample the posterior distribution:post_sample = sample_aggregator(p, alpha = 1, beta = 1, num_sample = 10^6, seed = 1)# The posterior means of the oracle aggregate and the model parameters:colMeans(post_sample)