[Rd] rstandard.glm() in base/R/lm.influence.R

Martin Maechler maechler at stat.math.ethz.ch
Tue Jan 20 16:04:44 MET 2004


>>>>> "Roger" == Roger Bivand <Roger.Bivand at nhh.no>
>>>>>     on Tue, 20 Jan 2004 14:16:42 +0100 (CET) writes:

    Roger> I contacted John Fox about this first, because parts
    Roger> of the file are attributed to him. He says that he
    Roger> didn't write rstandard.glm(), and suggests asking
    Roger> r-devel.

    Roger> As it stands, rstandard.glm() has
    Roger> summary(model)$dispersion outside the sqrt(), while
    Roger> in rstandard.lm(), the sd is already sqrt()ed. This
    Roger> seems to follow stdres() in VR/MASS/R/stdres.R.

    Roger> Of course for the c("poisson", "binomial") families,
    Roger> summary(model)$dispersion is 1, so sqrt doesn't make
    Roger> a difference, but working with an epidemiologist,
    Roger> Marilia Carvalho, we wanted to map the standardised
    Roger> residuals of a quasipoisson null model of cases
    Roger> offset by log(pop.at.risk), and rstandard.glm()
    Roger> seemed to compress the values more than we'd have
    Roger> expected. Her colleague: "Valeska (L.  Andreozzi)
    Roger> says that she has already noticed that, and as
    Roger> McCullagh & Nelder (2nd ed, pg 397) says, the
    Roger> dispersion is inside the sqrt". (That's the way I
    Roger> read 12.5 on p. 397 too). I can't see that
    Roger> summary(model)$dispersion has already been subject to
    Roger> sqrt() in sum(object$weights *
    Roger> object$residuals^2)/df.r in summary.glm().

    Roger> Should:

    Roger>     res / (summary(model)$dispersion * sqrt(1 -
    Roger> infl$hat))

    Roger> be:

    Roger>     res / (sqrt(summary(model)$dispersion * (1 -
    Roger> infl$hat)))

    Roger> on line 117 in base/R/lm.influence.R?

Yes, to all what you said.
Only "base/" is "stats/" in R-devel where I've just committed
the fix.
It's been kind of a typo I had introduced when making rstandard
generic.

Martin



More information about the R-devel mailing list