The Dirichlet distribution in likelihood (for p) form, including the generalized Dirichlet distribution due to Connor and Mosimann

dirichlet(powers, alpha)
dirichlet3(powers, lambda=NULL)
GD(alpha, beta, beta0=0)
GD_wong(alpha, beta)
rdirichlet(n,H)
is.dirichlet(H)
rp_unif(n,H)

Arguments

powers

In function dirichlet() a (named) vector of powers

alpha,beta

A vector of parameters for the Dirichlet or generalized Dirichlet distribution

beta0

In function GD(), an arbitrary parameter

H

Object of class hyper2

lambda

Vector of weights in dirichlet3()

n

Number of observations

Details

These functions are really convenience functions.

Function rdirichlet() returns random samples drawn from a Dirichlet distribution. If second argument H is a hyper2 object, it is tested [with is.dirichlet()] for being a Dirichlet distribution. If so, samples from it are returned. If not, (e.g. icons), an error is given. If H is not a hyper2 object, it is interpreted as a vector of parameters \(\alpha\) [not a vector of powers].

Function rp_unif() returns uniformly distributed vectors, effectively using H*0; but note that this uses Dirichlet sampling which is much faster and better than the Metropolis-Hastings functionality documented at rp.Rd.

Functions GD() and GD_wong() return a likelihood function corresponding to the Generalized Dirichlet distribution as presented by Connor and Mosimann, and Wong, respectively. In GD_wong(), alpha and beta must be named vectors; the names of alpha give the names of \(x_1,\ldots,x_k\) and the last element of beta gives the name of \(x_{k+1}\).

Function dirichlet3() returns a hyper3 object with weights lambda. If lambda is length less than that of powers, it is padded with 1s [so default NULL corresponds to unit weights, that is, a hyper2 object]. A use-case is given in inst/rock_paper_scissors_monster.Rmd.

References

  • R. J. Connor and J. E. Mosimann 1969. “Concepts of independence for proportions with a generalization of the Dirichlet distribution”. Journal of the American Statistical Association, 64:194–206

  • T.-T. Wong 1998. “Generalized Dirichlet distribution in Bayesian Analysis”. Applied Mathematics and Computation, 97:165–181

Author

Robin K. S. Hankin

Note

A dirichlet distribution can have a term with zero power. But this poses problems for hyper2 objects as zero power brackets are dropped.

Function dirichlet3() is a replacement for now removed function pair3().

See also

Examples


x1 <- dirichlet(c(a=1,b=2,c=3))
x2 <- dirichlet(c(c=3,d=4))

x1+x2
#> log( a * (a + b + c)^-6 * b^2 * c^6 * (c + d)^-7 * d^4)

H <- dirichlet(c(a=1,b=2,c=3,d=4))
rdirichlet(10,H)
#> Warning: NAs produced
#>               a         b         c          d
#>  [1,]       NaN       NaN       NaN        NaN
#>  [2,]       NaN       NaN       NaN        NaN
#>  [3,]       NaN       NaN       NaN        NaN
#>  [4,] 0.1647510 0.1562823 0.4987722 0.18019453
#>  [5,]       NaN       NaN       NaN        NaN
#>  [6,]       NaN       NaN       NaN        NaN
#>  [7,]       NaN       NaN       NaN        NaN
#>  [8,]       NaN       NaN       NaN        NaN
#>  [9,] 0.4421702 0.1811956 0.2933874 0.08324683
#> [10,]       NaN       NaN       NaN        NaN
colMeans(rdirichlet(1e4,H))
#> Warning: NAs produced
#>   a   b   c   d 
#> NaN NaN NaN NaN 

dirichlet3(c(fish=3,chips=2),lambda=1.8)
#> log( (chips=1)^2 * (chips=1, fish=1.8)^-5 * (fish=1.8)^3)
dirichlet3(c(x=6,y=5,z=2),1:3)
#> log( (x=1)^6 * (x=1, y=2, z=3)^-13 * (y=2)^5 * (z=3)^2)