[R] Forcing coefficients in lm object

Greg Snow
Tue, 28 Aug 2007 19:50:04 -0000

The important element in the fit object is named coefficients not coef.
Sometimes the partial matching can cause confusion when it tries to help.  In
your case it creates a copy of the coefficients, changes the 2nd value, then
creates a new component to fit called coef with these values (not changing the
original coefficients).  Since the predict, print, summary, etc. functions use
the coefficients element rather than your new coef element, your changes are
silently ignored.

One option is to spell out coefficients fully to replace that (though that could
end up breaking other things), another possible option is to create the model
using offsets (but I'm not sure how that would work in this case).

Hope this helps,

--
Gregory (Greg) L. Snow Ph.D.
Statistical Data Center
Intermountain Healthcare
greg.snow at intermountainmail.org
(801) 408-8111



> -----Original Message-----
> From: r-help-bounces at stat.math.ethz.ch
> [mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of
> J.J.P.Lebrec at lumc.nl
> Sent: Tuesday, August 28, 2007 7:33 AM
> To: r-help at stat.math.ethz.ch
> Subject: [R] Forcing coefficients in lm object
>
> Dear all,
>
> I would like to use predict.lm() with an existing lm object
> but with new arbitrary coefficients. I modify 'fit$coef' (see
> example below) "by hand" but the actual model in 'fit'
used
> for prediction does not seem to be altered (although fit$coef is!).
>
> Can anyone please help me do this properly?
>
> Thanks in advance,
>
> J?r?mie
>
>
>
> > dat <- data.frame(y=c(0,25,32,15), x=as.factor(c(1,1,2,2))) fit
<-
> > lm(y ~ x, data=dat) fit
>
> Call:
> lm(formula = y ~ x, data = dat)
>
> Coefficients:
> (Intercept)           x2
>        12.5         11.0
>
> > fit$coef[[2]] <- 100
> > dat.new <- data.frame(x=as.factor(c(1,2,1,2)))
> > predict.lm(fit, dat.new)
>    1    2    3    4
> 12.5 23.5 12.5 23.5
> > fit
>
> Call:
> lm(formula = y ~ x, data = dat)
>
> Coefficients:
> (Intercept)           x2
>        12.5         11.0
>
> > fit$coef
> (Intercept)          x2
>        12.5       100.0
> >
>
>
>
> J?r?mie Lebrec
> Dept. of Medical Statistics and Bioinformatics Leiden
> University Medical Center Postzone S-05-P P.O. Box 9600 2300
> RC Leiden The Netherlands j.j.p.lebrec at lumc.nl
>
> ______________________________________________
> 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