[R] Bug in predict.lm?
Rolf Turner
r.turner at auckland.ac.nz
Fri Nov 15 23:23:06 CET 2013
I *do* see the same phenomenon that Bert describes and the code of
predict.lm()
*does* appear to contain a bug. There is a line:
> XRinv <- if (missing(newdata) && is.null(w))
But "w" gets assigned (as object$weights) only if (is.null(scale)).
If that assignment is moved outside of the applicable "if field" (e.g.
and is put
just after the line:
> if (se.fit || interval != "none") {
then predict.lm() throws no error.
> > sessionInfo()
> R version 3.0.2 Patched (2013-09-26 r64005)
> Platform: x86_64-unknown-linux-gnu (64-bit)
>
> locale:
> [1] C
>
> attached base packages:
> [1] stats graphics grDevices utils datasets methods base
>
> other attached packages:
> [1] fortunes_1.5-0 misc_0.0-15
>
> loaded via a namespace (and not attached):
> [1] tools_3.0.2
The operative difference between my set-up and Chuck's is that I am using
version 3.0.2 Patched. So I am very puzzled as to why Chuck does *not* get
an error thrown!
BTW traceback() was not helpful:
> > predict(z,int="conf",scale=1)
> Error in predict.lm(z, int = "conf", scale = 1) : object 'w' not found
> > traceback()
> 2: predict.lm(z, int = "conf", scale = 1)
> 1: predict(z, int = "conf", scale = 1)
cheers,
Rolf
On 11/16/13 10:55, Charles Berry wrote:
> Bert Gunter <gunter.berton <at> gene.com> writes:
>
>> Yes, I realize that it is more likely a misunderstanding on my part.
>> Suitable humility will be tendered if this is pointed out.
>>
>> The claimed "bug" is that predict.lm throws an error when the scale
>> argument is specified with interval = "conf" (and in some other
>> cases):
>>
>>> z <- lm(rnorm(10)~I(1:10))
>>> predict(z,int="conf",scale=1)
>> Error in predict.lm(z, int = "conf", scale = 1) : object 'w' not found
>>
>> R version 3.0.2 (2013-09-25)
>> Platform: i386-w64-mingw32/i386 (32-bit)
>>
>> Cheers,
>> Bert
>>
> I do not see this (see below).
>
> Maybe traceback() or options(recover=browser) to get
> to the bottom??
>
>
>
>> z <- lm(rnorm(10)~I(1:10))
>> predict(z,int="conf",scale=1)
> fit lwr upr
> 1 0.02491723 -1.1270591 1.1768935
> 2 0.06402057 -0.9129873 1.0410284
> 3 0.10312392 -0.7185606 0.9248085
> 4 0.14222726 -0.5569958 0.8414504
> 5 0.18133060 -0.4477852 0.8104464
> 6 0.22043395 -0.4086818 0.8495497
> 7 0.25953729 -0.4396858 0.9587604
> 8 0.29864063 -0.5230439 1.1203252
> 9 0.33774398 -0.6392639 1.3147518
> 10 0.37684732 -0.7751290 1.5288236
>> version
> _
> platform x86_64-apple-darwin10.8.0
> arch x86_64
> os darwin10.8.0
> system x86_64, darwin10.8.0
> status
> major 3
> minor 0.2
> year 2013
> month 09
> day 25
> svn rev 63987
> language R
> version.string R version 3.0.2 (2013-09-25)
> nickname Frisbee Sailing
> ______________________________________________
> R-help at r-project.org 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