glm.nb
Fit a Negative Binomial Generalized Linear Model
A modification of the system function glm()
to include
estimation of the additional parameter, theta
, for a
Negative Binomial generalized linear model.
- Keywords
- models, regression
Usage
glm.nb(formula, data, weights, subset, na.action,
start = NULL, etastart, mustart,
control = glm.control(...), method = "glm.fit",
model = TRUE, x = FALSE, y = TRUE, contrasts = NULL, ...,
init.theta, link = log)
Arguments
- formula, data, weights, subset, na.action, start, etastart, mustart, control, method, model, x, y, contrasts, ...
- arguments for the
glm()
function. Note that these excludefamily
andoffset
(butoffset()
can be used). - init.theta
- Optional initial value for the theta parameter. If omitted a moment estimator after an initial fit using a Poisson GLM is used.
- link
- The link function. Currently must be one of
log
,sqrt
oridentity
.
Details
An alternating iteration process is used. For given theta
the GLM
is fitted using the same process as used by glm()
. For fixed means
the theta
parameter is estimated using score and information
iterations. The two are alternated until convergence of both. (The
number of alternations and the number of iterations when estimating
theta
are controlled by the maxit
parameter of
glm.control
.)
Setting trace > 0
traces the alternating iteration
process. Setting trace > 1
traces the glm
fit, and
setting trace > 2
traces the estimation of theta
.
Value
- A fitted model object of class
negbin
inheriting fromglm
andlm
. The object is like the output ofglm
but contains three additional components, namelytheta
for the ML estimate of theta,SE.theta
for its approximate standard error (using observed rather than expected information), andtwologlik
for twice the log-likelihood function.
References
Venables, W. N. and Ripley, B. D. (2002) Modern Applied Statistics with S. Fourth edition. Springer.
See Also
glm
, negative.binomial
,
anova.negbin
, summary.negbin
,
theta.md
There is a simulate
method.
Examples
quine.nb1 <- glm.nb(Days ~ Sex/(Age + Eth*Lrn), data = quine)
quine.nb2 <- update(quine.nb1, . ~ . + Sex:Age:Lrn)
quine.nb3 <- update(quine.nb2, Days ~ .^4)
anova(quine.nb1, quine.nb2, quine.nb3)
## PR#1695
y <- c(7, 5, 4, 7, 5, 2, 11, 5, 5, 4, 2, 3, 4, 3, 5, 9, 6, 7, 10, 6, 12,
6, 3, 5, 3, 9, 13, 0, 6, 1, 2, 0, 1, 0, 0, 4, 5, 1, 5, 3, 3, 4)
lag1 <- c(0, 7, 5, 4, 7, 5, 2, 11, 5, 5, 4, 2, 3, 4, 3, 5, 9, 6, 7, 10,
6, 12, 6, 3, 5, 3, 9, 13, 0, 6, 1, 2, 0, 1, 0, 0, 4, 5, 1, 5, 3, 3)
lag2 <- c(0, 0, 7, 5, 4, 7, 5, 2, 11, 5, 5, 4, 2, 3, 4, 3, 5, 9, 6, 7,
10, 6, 12, 6, 3, 5, 3, 9, 13, 0, 6, 1, 2, 0, 1, 0, 0, 4, 5, 1, 5, 3)
lag3 <- c(0, 0, 0, 7, 5, 4, 7, 5, 2, 11, 5, 5, 4, 2, 3, 4, 3, 5, 9, 6,
7, 10, 6, 12, 6, 3, 5, 3, 9, 13, 0, 6, 1, 2, 0, 1, 0, 0, 4, 5, 1, 5)
(fit <- glm(y ~ lag1+lag2+lag3, family=poisson(link=identity),
start=c(2, 0.1, 0.1, 0.1)))
try(glm.nb(y ~ lag1+lag2+lag3, link=identity))
glm.nb(y ~ lag1+lag2+lag3, link=identity, start=c(2, 0.1, 0.1, 0.1))
glm.nb(y ~ lag1+lag2+lag3, link=identity, start=coef(fit))
glm.nb(y ~ lag1+lag2+lag3, link=identity, etastart=rep(5, 42))