Skip to contents

Maximum likelihood estimation of the mean parameter of a negative binomial distribution with known size parameter.

Usage

negbinomial.size(size = Inf, lmu = "loglink", imu = NULL,
                 iprobs.y = 0.35, imethod = 1,
                 ishrinkage = 0.95, zero = NULL)

Arguments

size

Numeric, positive. Same as argument size of rnbinom. If the response is a matrix then this is recycled to a matrix of the same dimension, by row (matrix with byrow = TRUE).

lmu, imu

Same as negbinomial.

iprobs.y, imethod

Same as negbinomial.

zero, ishrinkage

Same as negbinomial. See CommonVGAMffArguments for information.

Details

This VGAM family function estimates only the mean parameter of the negative binomial distribution. See negbinomial for general information. Setting size = 1 gives what might be called the NB-G (geometric model; see Hilbe (2011)). The default, size = Inf, corresponds to the Poisson distribution.

Value

An object of class "vglmff" (see vglmff-class). The object is used by modelling functions such as vglm, rrvglm and vgam.

References

Hilbe, J. M. (2011). Negative Binomial Regression, 2nd Edition. Cambridge: Cambridge University Press.

Yee, T. W. (2014). Reduced-rank vector generalized linear models with two linear predictors. Computational Statistics and Data Analysis, 71, 889–902.

Author

Thomas W. Yee

Note

If lmu = "nbcanlink" in negbinomial.size() then the size argument here should be assigned and these values are recycled.

See also

Examples

# Simulated data with various multiple responses
size1 <- exp(1); size2 <- exp(2); size3 <- exp(0); size4 <- Inf
ndata <- data.frame(x2 = runif(nn <- 1000))
ndata <- transform(ndata, eta1  = -1 - 2 * x2,  # eta1 must be negative
                          size1 = size1)
ndata <- transform(ndata,
                   mu1  = nbcanlink(eta1, size = size1, inv = TRUE))
ndata <- transform(ndata,
              y1 = rnbinom(nn, mu = mu1,         size = size1),  # NB-C
              y2 = rnbinom(nn, mu = exp(2 - x2), size = size2),
              y3 = rnbinom(nn, mu = exp(3 + x2), size = size3),  # NB-G
              y4 =   rpois(nn, lambda = exp(1 + x2)))

# Also known as NB-C with size known (Hilbe, 2011)
fit1 <- vglm(y1 ~ x2, negbinomial.size(size = size1, lmu = "nbcanlink"),
             data = ndata, trace = TRUE)
#> Iteration 1: loglikelihood = -955.35068
#> Iteration 2: loglikelihood = -944.95956
#> Iteration 3: loglikelihood = -944.78853
#> Iteration 4: loglikelihood = -944.78846
#> Iteration 5: loglikelihood = -944.78846
coef(fit1, matrix = TRUE)
#>             nbcanlink(mu, mu(size))
#> (Intercept)              -0.9889566
#> x2                       -1.8769011
head(fit1@misc$size)  # size saved here
#>          [,1]
#> [1,] 2.718282
#> [2,] 2.718282
#> [3,] 2.718282
#> [4,] 2.718282
#> [5,] 2.718282
#> [6,] 2.718282

fit2 <- vglm(cbind(y2, y3, y4) ~ x2, data = ndata, trace = TRUE,
             negbinomial.size(size = c(size2, size3, size4)))
#> Iteration 1: loglikelihood = -26886.278
#> Iteration 2: loglikelihood = -26869.09
#> Iteration 3: loglikelihood = -26869.083
#> Iteration 4: loglikelihood = -26869.083
coef(fit2, matrix = TRUE)
#>             loglink(mu1) loglink(mu2) loglink(mu3)
#> (Intercept)     2.015789    2.9970685    1.0003008
#> x2             -1.058526    0.9525448    0.9852613
head(fit2@misc$size)  # size saved here
#>          [,1] [,2] [,3]
#> [1,] 7.389056    1  Inf
#> [2,] 7.389056    1  Inf
#> [3,] 7.389056    1  Inf
#> [4,] 7.389056    1  Inf
#> [5,] 7.389056    1  Inf
#> [6,] 7.389056    1  Inf