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

Duncan Murdoch
2006-08-04T17:35:51Z

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.