# [Rd] weighted.residuals for glm objects (PR#7961)

henric.nilsson@statisticon.se henric.nilsson at statisticon.se
Tue Jun 21 19:13:22 CEST 2005

```Full_Name: Henric Nilsson
Version: 2.2.0 (2005-06-20 r34776)
OS: Windows 2000
Submission from: (NULL) (213.115.23.26)

The help page for `weighted.residuals' states that the function can be used with
both `lm' and `glm' objects. However, it's unclear what's meant by the following
passage

"Weighted residuals are the usual residuals Ri, multiplied by wi^0.5, where wi
are the weights as specified in lm's call."

when it comes to a GLM. What's "...usual residuals..." in this context?

After reading the code it's clear that the function multiplies the deviance
residuals by wi^0.5, but this doesn't seem sensible for a GLM. Consider e.g.

> set.seed(1)
> x <- runif(10)
> y <- x + rnorm(10)
> w <- 0:9
> weighted.residuals(lm(y ~ x, weights = w))
2          3          4          5          6          7          8
0.3845201  1.0361636  1.2689516 -0.9817686  3.7205310  1.3823979 -1.5458433
9         10
-6.2029822  2.6149474
> weighted.residuals(glm(y ~ x, weights = w))
2           3           4           5           6           7
0.3845201   1.4653567   2.1978886  -1.9635372   8.3193602   3.3861695
8           9          10
-4.0899170 -17.5446831   7.8448423

I suggest that the code for `weighted.residuals' is changed to

weighted.residuals <- function (obj, drop0 = TRUE)
{
w <- weights(obj)
r <- residuals(obj, type = "deviance")
if (is.null(w))
r
else if (drop0)
r[w != 0]
else r
}

which seems to do the "right thing" for both `lm' and `glm' objects.

```