[Rd] nobs(lm(...)) != nobs(glm(...)) when there are 0s in weights
William Dunlap
wdunlap at tibco.com
Thu Sep 8 22:45:49 CEST 2011
What is the rationale for nobs.lm omitting observations with
zero weights while nobs.glm includes them?
> df <- data.frame(x1=log(1:10), x2=1/(1:10), y=1:10, wt=c(0,2,0,4,0,6,7,8,9,10))
> nobs(lm(data=df, y~x1+x2, weights=wt))
[1] 7
> nobs(glm(data=df, y~x1+x2, weights=wt))
[1] 10
The anova methods for lm and glm seem to agree on the number
of degrees of freedom here, although anova.glm issues a message
about it:
> anova(lm(data=df, y~x1+x2, weights=wt))
Analysis of Variance Table
Response: y
Df Sum Sq Mean Sq F value Pr(>F)
x1 1 196.682 196.682 1034.648 5.569e-06 ***
x2 1 11.514 11.514 60.572 0.00147 **
Residuals 4 0.760 0.190
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
> anova(glm(data=df, y~x1+x2, weights=wt))
Analysis of Deviance Table
Model: gaussian, link: identity
Response: y
Terms added sequentially (first to last)
Df Deviance Resid. Df Resid. Dev
NULL 6 208.957
x1 1 196.682 5 12.275
x2 1 11.514 4 0.760
Warning message:
In summary.glm(object, dispersion = dispersion) :
observations with zero weight not used for calculating dispersion
Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com
More information about the R-devel
mailing list