Dear R-List users, Can anyone explain exactly the difference between Weights options in lm glm and gls? I try the following codes, but the results are different.> lm1Call: lm(formula = y ~ x) Coefficients: (Intercept) x 0.1183 7.3075> lm2Call: lm(formula = y ~ x, weights = W) Coefficients: (Intercept) x 0.04193 7.30660> lm3Call: lm(formula = ys ~ Xs - 1) Coefficients: Xs Xsx 0.04193 7.30660 Here ys= y*sqrt(W), Xs<- sqrt(W)*cbind(1,x) So we can see weights here for lm means the scale for X and y. But for glm and gls I try> glm1Call: glm(formula = y ~ x) Coefficients: (Intercept) x 0.1183 7.3075 Degrees of Freedom: 1242 Total (i.e. Null); 1241 Residual Null Deviance: 1049000 Residual Deviance: 28210 AIC: 7414> glm2Call: glm(formula = y ~ x, weights = W) Coefficients: (Intercept) x 0.1955 7.3053 Degrees of Freedom: 1242 Total (i.e. Null); 1241 Residual Null Deviance: 1548000 Residual Deviance: 44800 AIC: 11670> glm3Call: glm(formula = y ~ x, weights = 1/W) Coefficients: (Intercept) x 0.03104 7.31033 Degrees of Freedom: 1242 Total (i.e. Null); 1241 Residual Null Deviance: 798900 Residual Deviance: 19900 AIC: 5285> glm4Call: glm(formula = ys ~ Xs - 1) Coefficients: Xs Xsx 2.687 6.528 Degrees of Freedom: 1243 Total (i.e. Null); 1241 Residual Null Deviance: 4490000 Residual Deviance: 506700 AIC: 11000 With weights, the glm did not give the same results as lm why? Also for gls, I use varFixed here.> gls3Generalized least squares fit by REML Model: y ~ x Data: NULL Log-restricted-likelihood: -3737.392 Coefficients: (Intercept) x 0.03104214 7.31032540 Variance function: Structure: fixed weights Formula: ~W Degrees of freedom: 1243 total; 1241 residual Residual standard error: 4.004827> gls4Generalized least squares fit by REML Model: ys ~ Xs - 1 Data: NULL Log-restricted-likelihood: -5500.311 Coefficients: Xs Xsx 2.687205 6.527893 Degrees of freedom: 1243 total; 1241 residual Residual standard error: 20.20705 We can see the relation between glm and gls with weight as what I think, but what's the difference between lm wit gls and glm? why? Thanks so much.! Goeland [[alternative HTML version deleted]]
Dear r-users?? Can anyone explain exactly the difference between Weights options in lm glm and gls? I try the following codes, but the results are different.> lm1Call: lm(formula = y ~ x) Coefficients: (Intercept) x 0.1183 7.3075> lm2Call: lm(formula = y ~ x, weights = W) Coefficients: (Intercept) x 0.04193 7.30660> lm3Call: lm(formula = ys ~ Xs - 1) Coefficients: Xs Xsx 0.04193 7.30660 Here ys= y*sqrt(W), Xs<- sqrt(W)*cbind(1,x) So we can see weights here for lm means the scale for X and y. But for glm and gls I try> glm1Call: glm(formula = y ~ x) Coefficients: (Intercept) x 0.1183 7.3075 Degrees of Freedom: 1242 Total (i.e. Null); 1241 Residual Null Deviance: 1049000 Residual Deviance: 28210 AIC: 7414> glm2Call: glm(formula = y ~ x, weights = W) Coefficients: (Intercept) x 0.1955 7.3053 Degrees of Freedom: 1242 Total (i.e. Null); 1241 Residual Null Deviance: 1548000 Residual Deviance: 44800 AIC: 11670> glm3Call: glm(formula = y ~ x, weights = 1/W) Coefficients: (Intercept) x 0.03104 7.31033 Degrees of Freedom: 1242 Total (i.e. Null); 1241 Residual Null Deviance: 798900 Residual Deviance: 19900 AIC: 5285> glm4Call: glm(formula = ys ~ Xs - 1) Coefficients: Xs Xsx 2.687 6.528 Degrees of Freedom: 1243 Total (i.e. Null); 1241 Residual Null Deviance: 4490000 Residual Deviance: 506700 AIC: 11000 With weights, the glm did not give the same results as lm why? Also for gls, I use varFixed here.> gls3Generalized least squares fit by REML Model: y ~ x Data: NULL Log-restricted-likelihood: -3737.392 Coefficients: (Intercept) x 0.03104214 7.31032540 Variance function: Structure: fixed weights Formula: ~W Degrees of freedom: 1243 total; 1241 residual Residual standard error: 4.004827> gls4Generalized least squares fit by REML Model: ys ~ Xs - 1 Data: NULL Log-restricted-likelihood: -5500.311 Coefficients: Xs Xsx 2.687205 6.527893 Degrees of freedom: 1243 total; 1241 residual Residual standard error: 20.20705 We can see the relation between glm and gls with weight as what I think, but what's the difference between lm wit gls and glm? why? Thanks so much.! Goeland Goeland goeland at gmail.com 2006-03-16
Spencer Graves
2006-Mar-23 16:50 UTC
[R] DIfference between weights options in lm GLm and gls.
In my tests, "gls" did NOT give the same answers as "lm" and "glm", and I don't know why; perhaps someone else will enlighten us both. I got the same answers from "lm" and "glm". Since you report different results, please supply a replicatable example. I tried the following: set.seed(1) DF <- data.frame(x=1:8, xf=rep(c("a", "b"), 4), y=rnorm(8), w=1:8, one=rep(1,8)) fit.lm.w <- lm(y~x, DF, weights=w) fit.glm.w <- glm(y~x, data=DF, weights=w) fit.gls.w <- gls(y~x, data=DF, weights=varFixed(~w))> coef(fit.lm.w)(Intercept) x -0.2667521 0.0944190> coef(fit.glm.w)(Intercept) x -0.2667521 0.0944190> coef(fit.gls.w)(Intercept) x -0.5924727 0.1608727 I also tried several variants of this. I know this does not answer your questions, but I hope it will contribute to an answer. spencer graves Goeland wrote:> Dear r-users?? > > Can anyone explain exactly the difference between Weights options in lm glm > and gls? > > I try the following codes, but the results are different. > > > >>lm1 > > > Call: > lm(formula = y ~ x) > > Coefficients: > (Intercept) x > 0.1183 7.3075 > > >>lm2 > > > Call: > lm(formula = y ~ x, weights = W) > > Coefficients: > (Intercept) x > 0.04193 7.30660 > > >>lm3 > > > Call: > lm(formula = ys ~ Xs - 1) > > Coefficients: > Xs Xsx > 0.04193 7.30660 > > Here ys= y*sqrt(W), Xs<- sqrt(W)*cbind(1,x) > > So we can see weights here for lm means the scale for X and y. > > But for glm and gls I try > > >>glm1 > > > Call: glm(formula = y ~ x) > > Coefficients: > (Intercept) x > 0.1183 7.3075 > > Degrees of Freedom: 1242 Total (i.e. Null); 1241 Residual > Null Deviance: 1049000 > Residual Deviance: 28210 AIC: 7414 > >>glm2 > > > Call: glm(formula = y ~ x, weights = W) > > Coefficients: > (Intercept) x > 0.1955 7.3053 > > Degrees of Freedom: 1242 Total (i.e. Null); 1241 Residual > Null Deviance: 1548000 > Residual Deviance: 44800 AIC: 11670 > >>glm3 > > > Call: glm(formula = y ~ x, weights = 1/W) > > Coefficients: > (Intercept) x > 0.03104 7.31033 > > Degrees of Freedom: 1242 Total (i.e. Null); 1241 Residual > Null Deviance: 798900 > Residual Deviance: 19900 AIC: 5285 > > >>glm4 > > > Call: glm(formula = ys ~ Xs - 1) > > Coefficients: > Xs Xsx > 2.687 6.528 > > Degrees of Freedom: 1243 Total (i.e. Null); 1241 Residual > Null Deviance: 4490000 > Residual Deviance: 506700 AIC: 11000 > > With weights, the glm did not give the same results as lm why? > > Also for gls, I use varFixed here. > > >>gls3 > > Generalized least squares fit by REML > Model: y ~ x > Data: NULL > Log-restricted-likelihood: -3737.392 > > Coefficients: > (Intercept) x > 0.03104214 7.31032540 > > Variance function: > Structure: fixed weights > Formula: ~W > Degrees of freedom: 1243 total; 1241 residual > Residual standard error: 4.004827 > >>gls4 > > Generalized least squares fit by REML > Model: ys ~ Xs - 1 > Data: NULL > Log-restricted-likelihood: -5500.311 > > Coefficients: > Xs Xsx > 2.687205 6.527893 > > Degrees of freedom: 1243 total; 1241 residual > Residual standard error: 20.20705 > > We can see the relation between glm and gls with weight as what > > I think, but what's the difference between lm wit gls and glm? why? > > Thanks so much.! > > Goeland > > > > Goeland > goeland at gmail.com > 2006-03-16 > > > > ------------------------------------------------------------------------ > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html