hyperdirichlet (version 1.5-1)

maximum_likelihood: Maximum likelihood point for the hyperdirichlet distribution

Description

Maximum likelihood point for the hyperdirichlet distribution as estimated using numerical maximization.

Usage

maximum_likelihood(HD, start_p = NULL, give = FALSE, disallowed = NULL, zero=NULL, ...)
               mle(HD, start_p = NULL, give = FALSE, disallowed = NULL,            ...)
    mle_restricted(HD, start_p = NULL, give = FALSE, disallowed = NULL, zero=NULL, ...)

Arguments

HD
Object of class hyperdirichlet
start_p
Start value for the ps. See details section
give
Boolean with default FALSE meaning to return just the point estimate and TRUE meaning to return all the output from optim()
disallowed
A function of p returning a Boolean to restrict the search for the MLE. See examples
zero
In function maxlike_restricted(), a Boolean vector with TRUE elements corresponding to components that are constrained to be zero. See details section
Further arguments sent to optim()

Value

Returns a \(k\)-tuple.

Details

The user should use function maximum_likelihood(), which is a user-friendly wrapper for one of the two functions (mle() or mle_rst()) depending on whether argument zero is or is not NULL.

Argument start_p specifies the start point for the optimization; default NULL is interpreted as rep(1/n,n) where n is dim(HD) (ie neutral position).

It is not necessary to normalize start_p: this is done by dhyperdirichlet().

Non-default values for this argument are interpreted by dhyperdirichlet().

Argument zero, if not default NULL, is Boolean in the standard case; but if it is not Boolean, it is interpreted as a numeric vector of integers indicating which components of the distribution are restricted to zero. An example is given below.

See Also

dhyperdirichlet_p,optim

Examples

Run this code
maximum_likelihood(dirichlet(1:4))      # Should be 0:3

jj.numerical <- maximum_likelihood(dirichlet(3:8), zero=2:3)$MLE

jj <- c(2,0,0,5,6,7)
jj.analytical <- jj/sum(jj)

jj.numerical - jj.analytical  # should be small


Run the code above in your browser using DataLab