| inv.chisqMlink {VGAMextra} | R Documentation |
Link functions for the mean of 1–parameter continuous distributions: The inverse chi–squared distribution.
Description
Computes the inv.chisqMlink transformation, its inverse and
the first two derivatives.
Usage
inv.chisqMlink(theta, bvalue = NULL, inverse = FALSE,
deriv = 0, short = TRUE, tag = FALSE)
Arguments
theta |
Numeric or character. This is |
bvalue, inverse, deriv, short, tag |
See |
Details
This link functions models the mean of the
inverse chi–squared distribution,
inv.chisqff.
It is defined as
\eta = -\log ( df - 2),
where df denotes the (non–negative) degrees of freedom, as in
inv.chisqff.
Notice, however, that df > 2 is required for the mean of
this distribution to be real. Consequently, the domain set for
df for this link function is (2, \infty).
Numerical values of df out of range will
result in NA or NaN.
Value
For deriv = 0, the inv.chisqMlink transformation of
theta when inverse = FALSE.
If inverse = TRUE, then the inverse exp(-theta) + 2.
For deriv = 1,
d eta / d theta when inverse = FALSE.
If inverse = TRUE, then
d theta / d eta as a function of
theta.
When deriv = 2, the second derivatives in
terms of theta are returned.
Note
Numerical instability may occur for values theta too large or
possibly, too close to 2. Use argument bvalue to replace them
before computing the link.
If theta is character, then arguments inverse and
deriv are ignored. See Links
for further details.
Author(s)
V. Miranda and Thomas W. Yee.
See Also
Examples
## E1. Modelling the mean of the exponential distribution ##
set.seed(17010502)
dof <- 2.5
isq.data <- data.frame(x2 = runif(100, 0, 1))
isq.data <- transform(isq.data, y = rinv.chisq(n = 100, df = dof + x2))
hist(isq.data$y)
fit.inv <- vglm(y ~ x2, family = inv.chisqff(link = "inv.chisqMlink"),
data = isq.data, trace = TRUE )
coef(fit.inv, matrix = TRUE)
summary(fit.inv)
## E3. Special values in a matrix ##
(theta <- matrix(c(Inf, -Inf, NA, NaN, 1 , 2, 3, 4), ncol = 4, nrow = 2))
inv.chisqMlink(theta = theta) ## NaNs for df = theta <= 2
## E2. inv.chisqMlink() and its inverse ##
theta <- 0.1 + 1:5 # dof = df
my.diff <- theta - inv.chisqMlink(inv.chisqMlink(theta = theta), inverse =TRUE)
summary(my.diff) # Zero