Maximum likelihood point for the hyperdirichlet distribution

Share:

Description

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

Usage

1
2
3
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()

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.

Value

Returns a k-tuple.

Note

The functions minimize -dhyperdirichlet(...,log=TRUE); so there is no need to set fnscale.

Be aware that the aylmer package includes a function maxlike(), which does something different.

Author(s)

Robin K. S. Hankin

See Also

dhyperdirichlet_p,optim

Examples

1
2
3
4
5
6
7
8
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

Want to suggest features or report bugs for rdrr.io? Use the GitHub issue tracker.