| hyperdirichlet {hyperdirichlet} | R Documentation |
Create, coerce to, or test for an object of class hyperdirichlet
hyperdirichlet(x, NC, pnames = character(), validated=FALSE) is.hyperdirichlet(x) as.hyperdirichlet(x, calculate_NC = FALSE , ...)
x |
Object to be coerced or tested for |
NC |
Normalizing constant |
pnames |
names of the columns with length-0 default resulting in
the print method using column names p1, p2, etc |
validated |
Boolean. Setting to TRUE is taken to mean
that x is known to be ‘proper’ (i.e.
x is normalizable), but the normalizing constant is not
necessarily known.
Default FALSE is taken to mean that x is not known to
be proper: it is possible that x is not normalizable so
cannot correspond to a PDF.
Setting to FALSE means that the object will be passed to
is.proper() for checking; this can be time-consuming. The
flag is set to TRUE ab initio for dirichlet()
and gd() because these distributions have an analytical
expression for the normalizing constant |
calculate_NC |
Boolean, with default FALSE meaning not to
calculate the normalizing constant and TRUE meaning to
calculate it |
... |
Further arguments passed to adapt() |
To determine the normalization constant, use something like a <-
as.hyperdirichlet(a,calculate_NC= TRUE).
Matrices may be coerced to a hyperdichlet object using
as.hyperdirichlet(): the call is dispatched to
matrix_to_HD() (qv).
If x is a matrix, be sure to specify the bernoulli
argument, which is passed on to matrix_to_HD()
Functions hyperdirichlet() and as.hyperdirichlet()
return a hyperdirichlet object; function is.hyperdirichlet()
returns a Boolean.
Robin K. S. Hankin
(a <- uniform(3))
a[c(TRUE,TRUE,FALSE)] <- 0.3
## Not run:
(a <- as.hyperdirichlet(a, calculate_NC = TRUE)) # recommended way to calculate NC
## End(Not run)
(b <- dirichlet(1:3))
as.hyperdirichlet(b) # "forgets" the normalizing constant
## Not run:
as.hyperdirichlet(b, TRUE) # recalculates NC; accuracy tolerable
# (analytic answer = 1/60)
## End(Not run)
## Not run:
# takes a long time
op <- options()
options(warn = -1)
x <- dirichlet(rep(2,4)) + justpairs(matrix(1,4,4))
f <- function(p){p[1]>p[2]}
probability(x,f) # should be 0.5: distribution is symmetric
## End(Not run)