From maechler at stat.math.ethz.ch  Tue Jan 20 16:04:44 2004
From: maechler at stat.math.ethz.ch (Martin Maechler)
Date: Tue Jan 20 16:03:42 2004
Subject: [Rd] rstandard.glm() in base/R/lm.influence.R
In-Reply-To: <Pine.LNX.4.44.0401201408060.12918-100000@reclus.nhh.no>
References: <Pine.LNX.4.44.0401201408060.12918-100000@reclus.nhh.no>
Message-ID: <16397.17292.23183.558300@gargle.gargle.HOWL>

>>>>> "Roger" == Roger Bivand <Roger.Bivand@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


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