dirichlet.Rd
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)
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 1
s [so default NULL
corresponds to unit weights, that is, a hyper2
object]. A
use-case is given in inst/rock_paper_scissors_monster.Rmd
.
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
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()
.
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)