[R] setting parameters equal in lm

Rui Barradas ruipbarradas at sapo.pt
Tue May 29 13:39:42 CEST 2012


Hello,

Your model is equivalent of

y = b1(X1 + X3) + b2X2

(plus error)

So, use I() to add X1 and X3. You don't need to create an extra variable 
X13 <- X1 + X3. See the help page for it. The point on function formula.

?I

linMod2 = lm(Y ~ -1 + I(X1  + X3) + X2, data=data.set)
summary(linMod2)
# The same.
linMod3 = lm(Y ~ 0 + I(X1  + X3) + X2, data=data.set)
summary(linMod3)

With set.seed(1) your common slope is

coef(linMod2)
I(X1 + X3)         X2
  0.4237869  3.3626984

Also, I find it better to put 'library', 'require', etc as the first 
lines of code.

Hope this helps,

Rui Barradas

Em 29-05-2012 04:14, Dustin Fife escreveu:
> Forgive me if this is a trivial question, but I couldn't find it an answer
> in former forums. I'm trying to reproduce some SAS results where they set
> two parameters equal. For example:
>
> y = b1X1 + b2X2 + b1X3
>
> Notice that the variables X1 and X3 both have the same slope and the
> intercept has been removed. How do I get an estimate of this regression
> model? I know how to remove the intercept ("-1" somewhere after the tilde).
> But how about setting parameters equal? I have used the car package to set
> up linear hypotheses:
>
>
> X1 = rnorm(20, 10, 5); X2 = rnorm(20, 10, 5); X3 = rnorm(20, 10, 5)
> Y = .5*X1 + 3*X2 + .5*X3 + rnorm(20, 0, 15)
> data.set = data.frame(cbind(X1, X2, X3, Y))
> linMod = lm(Y~X1 + X2 + X3, data=data.set)
> require(car)
> linearHypothesis(linMod, c("(Intercept)=0", "X1-X3=0"))
>
> (forgive the unconventional use of the equal sign....old habit).
> Unfortunately, the linearHypothesis is always compared to a full model
> (where the parameters are freely estimated). I want to have an ANOVA
> summary table for the reduced model. Any ideas? Thanks in advance for the
> help!
>



More information about the R-help mailing list