[R] why does lm() not allow for negative weights?

Duncan Murdoch murdoch at stats.uwo.ca
Fri Aug 4 19:35:51 CEST 2006


On 8/4/2006 1:26 PM, Jens Hainmueller wrote:
> Dear List,
> 
> Why do commonly used estimator functions (such as lm(), glm(), etc.) not
> allow negative case weights? 

Residual sums of squares (or deviances) could be negative with negative 
case weights.  This doesn't seem like a good thing:  would you really 
want the fit to be far from those points?

 > I suspect that there is a good reason for this.
> Yet, I can see reasonable cases when one wants to use negative case weights.
> 
> Take lm() for example:
> 
> ###
> 
> n <- 20
> Y <- rnorm(n)
> X <- cbind(rep(1,n),runif(n),rnorm(n))
> Weights <- rnorm(n)
> # Includes Pos and Neg Weights
> Weights
> 
> # Now do Weighted LS and get beta coeffs:
> b <- solve(t(X)%*%diag(Weights)%*%X) %*% t(X) %*% diag(Weights)%*%Y

That formula does not necessarily give least squares estimates in the 
case where weights might be negative.  For example, with a single 
observation y, a single parameter mu, design matrix X = 1, and weight 
-1, that formula becomes

b <- y,

but that is the worst possible estimator in a least squares sense.  The 
residual sum of squares can be made arbitrarily large and negative by 
setting b to a large value.

Duncan Murdoch


> b
> 
> # This seems like a valid model, but when I try
> lm(Y ~ X[,2:3],weights=Weights)
> 
> # I get: "missing or negative weights not allowed"
> 
> ###
> 
> What is the rationale for not allowing negative weights? I ask this, because
> I am currently trying to implement a (two stage) estimator into R that
> involves negative case weights. Weights are generated in the first stage, so
> it would be nice if I could use canned functions such as
> lm(,weights=Weights) in the second stage.
> 
> Thank you for your help.
> 
> Best,
> Jens
> 
> ______________________________________________
> 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
> and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list