[R] Forcing coefficients in lm object

Prof Brian Ripley
Tue, 28 Aug 2007 17:03:23 -0000

It is fit$coefficients, not fit$coef .

>From the help page:

     name: A literal character string or a name (possibly backtick
           quoted).  For extraction, this is normally (see under
           Environments) partially matched to the 'names' of the object.

Note the qualifier 'for extraction', so you assigned a new element with
name 'coef', and predict.lm used fit$coefficients.


On Tue, 28 Aug 2007, J.J.P.Lebrec at lumc.nl wrote:

> 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
> and provide commented, minimal, self-contained, reproducible code.
>

--
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