multilogit {VGAM} | R Documentation |
Computes the multilogit transformation, including its inverse and the first two derivatives.
multilogit(theta, refLevel = "last", M = NULL, whitespace = FALSE, bvalue = NULL, inverse = FALSE, deriv = 0, short = TRUE, tag = FALSE)
theta |
Numeric or character. See below for further details. |
refLevel, M, whitespace |
See |
bvalue |
See |
inverse, deriv, short, tag |
Details at |
The multilogit()
link function is a generalization of the
logit
link to M levels/classes.
It forms the basis of the multinomial
logit model.
It is sometimes called the multi-logit link
or the multinomial logit link.
When its inverse function is computed it returns values which
are positive and add to unity.
For multilogit
with deriv = 0
, the multilogit of theta
,
i.e.,
log(theta[, j]/theta[, M+1])
when inverse = FALSE
,
and if inverse = TRUE
then
exp(theta[, j])/(1+rowSums(exp(theta)))
.
For deriv = 1
, then the function returns
d eta
/ d theta
as a function of theta
if inverse = FALSE
,
else if inverse = TRUE
then it returns the reciprocal.
Here, all logarithms are natural logarithms, i.e., to base e.
Numerical instability may occur when theta
is
close to 1 or 0 (for multilogit
).
One way of overcoming this is to use, e.g., bvalue
.
Currently care.exp()
is used to avoid NA
s being
returned if the probability is too close to 1.
Thomas W. Yee
McCullagh, P. and Nelder, J. A. (1989) Generalized Linear Models, 2nd ed. London: Chapman & Hall.
Links
,
multinomial
,
logit
,
normal.vcm
,
CommonVGAMffArguments
.
pneumo <- transform(pneumo, let = log(exposure.time)) fit <- vglm(cbind(normal, mild, severe) ~ let, multinomial, trace = TRUE, data = pneumo) # For illustration only! fitted(fit) predict(fit) multilogit(fitted(fit)) multilogit(fitted(fit)) - predict(fit) # Should be all 0s multilogit(predict(fit), inverse = TRUE) # rowSums() add to unity multilogit(predict(fit), inverse = TRUE, refLevel = 1) # For illustration only multilogit(predict(fit), inverse = TRUE) - fitted(fit) # Should be all 0s multilogit(fitted(fit), deriv = 1) multilogit(fitted(fit), deriv = 2)