B function

Normalizing constant for the hyperdirichlet distribution

Normalizing constant for the hyperdirichlet distribution

Numerical techniques for calculating the normalizing constant for the hyperdirichlet distribution

B(H, disallowed=NULL, give=FALSE, ...) probability(H, disallowed=NULL, ...) mgf(H, powers, ...) dhyper2(ip,H,...) dhyper2_e(e,H,include.Jacobian=TRUE) mean_hyper2(H, normalize=TRUE, ...) Jacobian(e) e_to_p(e) p_to_e(p)

Arguments

  • H: Object of class hyper2

  • powers: Vector of length dim(x) whose elements are the powers of the expectation; see details section

  • disallowed: Function specifying a subset of the simplex over which to integrate; default NULL means to integrate over the whole simplex. The integration proceeds over p with disallowed(p) evaluating to FALSE

  • e,p: A vector; see details

  • ip: A vector of probabilities corresponding to indep(p)

    where p is vector with unit sum

  • include.Jacobian: Boolean, with default TRUE meaning to include the Jacobian transformation in the evaluation, and FALSE meaning to ignore it; use FALSE for likelihood work and TRUE for probability densities

  • give: Boolean, with default FALSE meaning to return the value of the integral and TRUE meaning to return the full output of adaptIntegrate()

  • normalize: Boolean, indicates whether return value of mean_hyper2() is normalized to have unit sum

  • ...: Further arguments passed to adaptIntegrate()

Details

  • Function B() returns the normalizing constant of a hyperdirichlet likelihood function. Internally, pp is converted to e (by e_to_p()) and the integral proceeds over a hypercube. This function can be very slow, especially if disallowed is used.
  • Function dhyper2(ip,H) is a probability density function on the independent components of a unit-sum vector, that is, ip=indep(p). This function calls B() each time so might be a performance bottleneck.
  • Function probability() gives the probability of an observation from a hyperdirichlet distribution satisfying !disallowed(p).
  • Function mgf() is the moment generating function, taking an argument that specifies the powers of p needed: the expectation of c("prod\nprod\n", "ppowers p^powers") is returned.
  • Function mean_hyper2() returns the mean value of the hyperdirichlet distribution. This is computationally slow (consider maxp() for a measure of central tendency). The function takes a normalize argument, not passed to adaptIntegrate(): this is Boolean with FALSE meaning to return the value found by integration directly, and default TRUE meaning to normalize so the sum is exactly 1

Returns

  • Function B() returns a scalar: the normalization constant
  • Function dhyper2() is a probability density function over indep(p)
  • Function mean() returns a kk-tuple with unit sum
  • Function mgf() returns a scalar equal to the expectation of p^power
  • Functions is.proper() and validated() return a Boolean
  • Function probability() returns a scalar, a (Bayesian) probability

Author(s)

Robin K. S. Hankin

Note

The adapt package is no longer available on CRAN; from 1.4-3, the package uses adaptIntegrate of the cubature package.

See Also

loglik

Examples

# Two different measures of central tendency: # mean_hyper2(chess,tol=0.1) # takes ~10s to run maxp(chess) # faster # Using the 'disallowed' argument typically results in slow run times; # use high tol for speed: # probability(chess,disallowed=function(p){p[1]>p[2]},tol=0.5) # probability(chess,disallowed=function(p){p[1]<p[2]},tol=0.5) # Above should sum to 1 [they are exclusive and exhaustive events]
  • Maintainer: Robin K. S. Hankin
  • License: GPL (>= 2)
  • Last published: 2024-05-31