Learn R Programming

VGAM (version 0.9-3)

nbolf: Negative Binomial-Ordinal Link Function

Description

Computes the negative binomial-ordinal transformation, including its inverse and the first two derivatives.

Usage

nbolf(theta, cutpoint = NULL, k = NULL,
      inverse = FALSE, deriv = 0, short = TRUE, tag = FALSE)

Arguments

theta
Numeric or character. See below for further details.
cutpoint, k
Here, k is the $k$ parameter associated with the negative binomial distribution; see negbinomial. The cutpoints should be non-negative integers. If nbolf() is used as
inverse, deriv, short, tag
Details at Links.

Value

  • See Yee (2012) for details.

Warning

Prediction may not work on vglm or vgam etc. objects if this link function is used.

Details

The negative binomial-ordinal link function (NBOLF) can be applied to a parameter lying in the unit interval. Its purpose is to link cumulative probabilities associated with an ordinal response coming from an underlying negative binomial distribution.

See Links for general information about VGAM link functions.

References

Yee, T. W. (2012) Ordinal ordination with normalizing link functions for count data, (in preparation).

See Also

Links, negbinomial, polf, golf, nbolf2, cumulative, CommonVGAMffArguments.

Examples

Run this code
nbolf("p", cutpoint = 2, k = 1, short = FALSE)
nbolf("p", cutpoint = 2, k = 1, tag = TRUE)

p <- seq(0.02, 0.98, by = 0.01)
y <- nbolf(p,cutpoint = 2, k = 1)
y. <- nbolf(p,cutpoint = 2, k = 1, deriv = 1)
max(abs(nbolf(y,cutpoint = 2, k = 1, inv = TRUE) - p))  # Should be 0

par(mfrow = c(2, 1), las = 1)
plot(p, y, type = "l", col = "blue", main = "nbolf()")
abline(h = 0, v = 0.5, col = "red", lty = "dashed")

plot(p, y., type = "l", col = "blue",
     main = "(Reciprocal of) first NBOLF derivative")

# Another example
nn <- 1000
x2 <- sort(runif(nn))
x3 <- runif(nn)
mymu <- exp( 3 + 1 * x2 - 2 * x3)
k <- 4
y1 <- rnbinom(nn, mu = mymu, size = k)
cutpoints <- c(-Inf, 10, 20, Inf)
cuty <- Cut(y1, breaks = cutpoints)
plot(x2, x3, col = cuty, pch = as.character(cuty))
table(cuty) / sum(table(cuty))
fit <- vglm(cuty ~ x2 + x3, trace = TRUE,
            cumulative(reverse = TRUE, mv = TRUE,
                       parallel = TRUE,
                       link = nbolf(cutpoint = cutpoints[2:3], k = k)))
head(depvar(fit))
head(fitted(fit))
head(predict(fit))
coef(fit)
coef(fit, matrix = TRUE)
constraints(fit)
fit@misc

Run the code above in your browser using DataLab