ebgm: Calculate EBGM scores

View source: R/f_posteriorCalcs.R

ebgmR Documentation

Calculate EBGM scores

Description

ebgm calculates the Empirical Bayes Geometric Mean (EBGM), which is ‘the geometric mean of the empirical Bayes posterior distribution of the “true” RR’ (DuMouchel 1999, see Eq.11). The EBGM is essentially a version of the relative reporting ratio (RR) that uses Bayesian shrinkage.

Usage

ebgm(theta_hat, N, E, qn, digits = 2)

Arguments

theta_hat

A numeric vector of hyperparameter estimates (likely from autoHyper or from directly minimizing negLLsquash) ordered as: \alpha_1, \beta_1, \alpha_2, \beta_2, P.

N

A whole number vector of actual counts from processRaw.

E

A numeric vector of expected counts from processRaw.

qn

A numeric vector of posterior probabilities that \lambda came from the first component of the mixture, given N = n (i.e., the mixture fraction). See function Qn.

digits

A scalar whole number that determines the number of decimal places used when rounding the results.

Details

The hyperparameter estimates (theta_hat) are:

  • \alpha_1, \beta_1: Parameter estimates of the first component of the prior distribution

  • \alpha_2, \beta_2: Parameter estimates of the second component

  • P: Mixture fraction estimate of the prior distribution

Value

A numeric vector of EBGM scores.

References

DuMouchel W (1999). "Bayesian Data Mining in Large Frequency Tables, With an Application to the FDA Spontaneous Reporting System." The American Statistician, 53(3), 177-190.

See Also

autoHyper, exploreHypers, negLLsquash, negLL, negLLzero, and negLLzeroSquash for hyperparameter estimation.

processRaw for finding counts.

Qn for finding mixture fractions.

Other posterior distribution functions: Qn(), quantBisect()

Examples

data.table::setDTthreads(2)  #only needed for CRAN checks
theta_init <- data.frame(
  alpha1 = c(0.5, 1),
  beta1  = c(0.5, 1),
  alpha2 = c(2,   3),
  beta2  = c(2,   3),
  p      = c(0.1, 0.2)
)
data(caers)
proc <- processRaw(caers)
squashed <- squashData(proc, bin_size = 300, keep_pts = 10)
squashed <- squashData(squashed, count = 2, bin_size = 13, keep_pts = 10)
theta_hat <- autoHyper(data = squashed, theta_init = theta_init)$estimates
qn <- Qn(theta_hat, N = proc$N, E = proc$E)
proc$EBGM <- ebgm(theta_hat, N = proc$N, E = proc$E, qn = qn)
head(proc)


openEBGM documentation built on Sept. 15, 2023, 1:08 a.m.