[R] glm with negative binomial family

From: Elizabeth Rainwater <wheresmybacon_at_gmail.com>
Date: Sat 10 Jun 2006 - 01:54:06 EST


I am analysing parasite egg count data and am having trouble with glm with a negative binomial family.

In my first data set, 55% of the 3000 cases have a zero count, and the non-zero counts range from 94 to 145,781. Eventually, I want to run bic.glm, so I need to be able to use glm(family= neg.bin(theta)). But first I ran glm.nb to get an estimate of theta:

> hook.nb<- glm.nb(fh, data=hook)

This works fine, with no errors, and summary( hook.nb) produces the following:

Call:
glm.nb(formula = fh, data = hook, init.theta = 0.0938126159640384,

    link = log)

Deviance Residuals:

     Min 1Q Median 3Q Max -1.45830 -1.16385 -1.01820 0.00535 2.86513

<snip>

              Theta:  0.09381
          Std. Err.:  0.00299

 2 x log-likelihood: -23750.45300

Then I tried to use this estimate of theta to specify a glm of the negative binomial family but got the following error:

> hook.fam<-glm(fh, data=hook, family=neg.bin(0.09381))
Error: NA/NaN/Inf in foreign function call (arg 1) In addition: Warning message:
step size truncated due to divergence

When I change theta to be 1 or more, the glm converges (as does bic.glm), so I thought maybe the estimate of theta was wrong. But when I ran a negative binomial regression in Stata, I got the same theta. (theta = 1/alpha = 1/10.65954 = .09381268)

In my second set of data, 75% of the cases have zero counts, and the non-zero cases range from 94 - 16,688. In this case, I get errors when I run the glm.nb:

> asc.nb<-glm.nb (fa, data=asc)

There were 26 warnings (use warnings() to see them)
> warnings()

Warning messages:
1: algorithm did not converge in: glm.fitter(x = X, y = Y, w = w, etastart = eta, offset = offset, ...

    <exactly the same message in 2-24>
25: algorithm did not converge in: glm.fitter(x = X, y = Y, w = w, etastart = eta, offset = offset, ...
26: alternation limit reached in: glm.nb(fa, data = asc)

Despite these errors, I do get output:

Call:
glm.nb(formula = fa, data = asc, init.theta = 0.030379484707051,

    link = log)

Deviance Residuals:

   Min 1Q Median 3Q Max
- 0.949 -0.787 -0.745 -0.645 2.576

<snip>

              Theta:  0.03038
          Std. Err.:  0.00125

Warning while fitting theta: alternation limit reached

 2 x log-likelihood: -15743.70600

Again, this estimate of theta agrees with pretty well with Stata's estimate (theta = 1/alpha = 1/32.45225 = .03081451). But the glm with negative binomial family specification gave the same error as above:

> asc.fam<-glm(fa, data=asc, family=neg.bin(0.0304))
Error: NA/NaN/Inf in foreign function call (arg 1) In addition: Warning message:
step size truncated due to divergence

Everything runs smoothly when theta is 1 or more, so I don't think anything is wrong with my data (which has no missings and all real numbers). I think the problem must be with theta or with my specification of it. I have the Venables and Ripley book, and am able to run glm(family=negative binomial( 0.03)) and bic.glm(glm.family=negative.binomial(0.03)) on the quine data that comes with MASS. I have looked in the R-help archives and googled, but have not found much besides a few old bug reports (which have been fixed) to help me figure out why one of the glm.nb algorithms did not converge and why both of the glm(family=neg.bin()) calls throw errors. Any ideas?

Thanks,
Elizabeth

        [[alternative HTML version deleted]]



R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Sat Jun 10 01:58:49 2006

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Sun 11 Jun 2006 - 05:34:58 EST.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.