[Rd] Bug in glm.fit() or plot.lm() (PR#778)

murdoch@stats.uwo.ca murdoch@stats.uwo.ca
Tue, 19 Dec 2000 20:56:11 +0100 (MET)


Here's a bug one of my students noticed.

When you call plot() on a glm object, plot.lm gets called.  The second
plot it shows is supposed to give a normal QQ plot of the standard
deviance residuals, but it doesn't.  The glm object created by glm.fit
returns something (the IRLS weights?) in fit$weights which plot.lm
takes as observation weights, so  you get strange residuals in the QQ
plot.

For example, here I fit a simulated Poisson model where the model
perfectly fine, but the plot.lm QQ plot makes the residuals look huge,
ranging between -45 and 40.

>set.seed(1)
>x <- seq(4,5,len=1000)
>y <- rpois(1000,exp(x))
>fit <- glm(y ~ x, family=poisson)
>plot(fit, which=2)

If I extract the residuals myself and plot them, I see that the model
is fine:

>qqnorm(residuals(fit))

The problem is that the weights are big; plot.lm should be using
prior.weights, or glm should be returning the big weights under a
different name:

> summary(fit$weights)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  54.35   69.90   89.90   93.76  115.60  148.70 

> summary(fit$prior.weights)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
      1       1       1       1       1       1 

Duncan Murdoch

--please do not edit the information below--

Version:
 platform = i386-pc-mingw32
 arch = x86
 os = Win32
 system = x86, Win32
 status = 
 major = 1
 minor = 2.0
 year = 2000
 month = 12
 day = 15
 language = R

Windows 9x 4.10 (build 1998)  

Search Path:
 .GlobalEnv, package:ctest, Autoloads, package:base

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-devel-request@stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._