Hi, I would like to run a weighted least squares with the the weighting matrix W. I ran the following two regressions, (W^-1)Y = Xb + e Y = WXb+ We In both cases, E[bhat] = b. I used the following commands in R lm1 <- lm(Y/W ~ X) lm2 <- lm(Y ~ W:X, weights = W) where Y <- rnorm(10,1) X <- Y + rnorm(10,1) W <- 1:10 In lm2, I believe W is applied to the error term, resulting in WLS. However the estimated coefficients in lm1 and lm2 are really different. I tried glm as well, but the result was the same as lm. Any advice would be appreciated, Hsu Ming
On Mon, 17 Jan 2005, Ming Hsu wrote:> I would like to run a weighted least squares with the the weighting > matrix W.This is generalized not weighted least squares if W really is a matrix and not a vector of case-by-case weights.> I ran the following two regressions, > > (W^-1)Y = Xb + e > Y = WXb+ WeIf W is a diagonal matrix, the weights for the second are W^(-2) and you used W below.> In both cases, E[bhat] = b. > > I used the following commands in R > > lm1 <- lm(Y/W ~ X) > lm2 <- lm(Y ~ W:X, weights = W) > > where > > Y <- rnorm(10,1) > X <- Y + rnorm(10,1) > W <- 1:10That W is not a matrix!> In lm2, I believe W is applied to the error term, resulting in WLS. However > the estimated coefficients in lm1 and lm2 are really different. I tried glm > as well, but the result was the same as lm. > > Any advice would be appreciated,Please do check that you supply an example that agrees with your words. Use lm.gls in MASS or gls in nlme for generalized least squares, if that is what you meant. -- Brian D. Ripley, ripley at stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595
On Tue, 18 Jan 2005, Prof Brian Ripley wrote:> On Mon, 17 Jan 2005, Ming Hsu wrote: > >> I would like to run a weighted least squares with the the weighting matrix >> W. > > This is generalized not weighted least squares if W really is a matrix and > not a vector of case-by-case weights. > >> I ran the following two regressions, >> >> (W^-1)Y = Xb + e >> Y = WXb+ We > > If W is a diagonal matrix, the weights for the second are W^(-2) and you used > W below. > >> In both cases, E[bhat] = b. >> >> I used the following commands in R >> >> lm1 <- lm(Y/W ~ X) >> lm2 <- lm(Y ~ W:X, weights = W) >> >> where >> >> Y <- rnorm(10,1) >> X <- Y + rnorm(10,1) >> W <- 1:10 > > That W is not a matrix! > >> In lm2, I believe W is applied to the error term, resulting in WLS. >> However >> the estimated coefficients in lm1 and lm2 are really different. I tried >> glm >> as well, but the result was the same as lm. >> >> Any advice would be appreciated, > > Please do check that you supply an example that agrees with your words.Another difference is that your equations have no intercept, but the lm calls do, so you need to add +0 to their rhs.> Use lm.gls in MASS or gls in nlme for generalized least squares, if that is > what you meant. > > -- > Brian D. Ripley, ripley at stats.ox.ac.uk > Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ > University of Oxford, Tel: +44 1865 272861 (self) > 1 South Parks Road, +44 1865 272866 (PA) > Oxford OX1 3TG, UK Fax: +44 1865 272595 >-- Brian D. Ripley, ripley at stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595