dirichlet {VGAM} | R Documentation |
Fitting a Dirichlet Distribution
Description
Fits a Dirichlet distribution to a matrix of compositions.
Usage
dirichlet(link = "loglink", parallel = FALSE, zero = NULL,
imethod = 1)
Arguments
link |
Link function applied to each of the |
parallel , zero , imethod |
See |
Details
In this help file the response is assumed to be a -column
matrix with positive values and whose rows each sum to unity.
Such data can be thought of as compositional data. There are
linear/additive predictors
.
The Dirichlet distribution is commonly used to model compositional
data, including applications in genetics.
Suppose is
the response. Then it has a Dirichlet distribution if
has density
where
,
,
and the density is defined on the unit simplex
One has
,
which are returned as the fitted values.
For this distribution Fisher scoring corresponds to Newton-Raphson.
The Dirichlet distribution can be motivated by considering
the random variables
which are
each independent
and identically distributed as a gamma distribution with density
.
Then the Dirichlet distribution arises when
.
Value
An object of class "vglmff"
(see vglmff-class
).
The object is used by modelling functions
such as vglm
,
rrvglm
and vgam
.
When fitted, the fitted.values
slot of the object
contains the -column matrix of means.
Note
The response should be a matrix of positive values whose rows
each sum to unity. Similar to this is count data, where probably
a multinomial logit model (multinomial
) may be
appropriate. Another similar distribution to the Dirichlet
is the Dirichlet-multinomial (see dirmultinomial
).
Author(s)
Thomas W. Yee
References
Lange, K. (2002). Mathematical and Statistical Methods for Genetic Analysis, 2nd ed. New York: Springer-Verlag.
Forbes, C., Evans, M., Hastings, N. and Peacock, B. (2011). Statistical Distributions, Hoboken, NJ, USA: John Wiley and Sons, Fourth edition.
See Also
rdiric
,
dirmultinomial
,
multinomial
,
simplex
.
Examples
ddata <- data.frame(rdiric(1000,
shape = exp(c(y1 = -1, y2 = 1, y3 = 0))))
fit <- vglm(cbind(y1, y2, y3) ~ 1, dirichlet,
data = ddata, trace = TRUE, crit = "coef")
Coef(fit)
coef(fit, matrix = TRUE)
head(fitted(fit))