On 3/5/2009 7:10 AM, Prof Brian Ripley wrote:
Undortunately the example is random, so not really reproducible (and I
see nothing wrong on my Mac). However, Linux valgrind on R-devel is
showing a problem:
I can reproduce it using y <- sin(x) instead of rnorm(100), on R-patched
(not R-devel).
==3973== Conditional jump or move depends on uninitialised value(s)
==3973== at 0xD76017B: ehg141_ (loessf.f:532)
==3973== by 0xD761600: lowesa_ (loessf.f:769)
==3973== by 0xD736E47: loess_raw (loessc.c:117)
I don't see why there would be errors at those spots, but I did try
tracing into loessf.f, and it's really a maze of code. In case someone
wants to follow up, it looks as though the ehg128 function returns a
garbage value on the first call. Working backwards through it, this is
because the local variable s is garbage, because g(0,1) (an array, not a
function call) is garbage at line 957, which is because it got set as
garbage somewhere between being initialized at line 918, and line 957.
I think the problem happened at lines 950/951, but I didn't follow up to
see why.
(The uninitiialized value is in someone else's code and I suspect it
was either never intended to work or never tested.) No essential
change has been made to the loess code for many years.
I would not have read the documentation to say that degree = 0 was a
reasonable value. It is not to my mind 'a polynomial surface', and
loess() is described as a 'local regression' for degree 1 or 2 in
the reference. So unless anyone wants to bury their heads in that
code I think a perfectly adequate fix would be to disallow degree = 0.
(I vaguely recall debating allowing in the code ca 10 years ago.)
I agree that's the best solution.
Duncan Murdoch
On Thu, 5 Mar 2009, Uwe Ligges wrote:
Berwin A Turlach wrote:
G'day Peter,
On Thu, 05 Mar 2009 09:09:27 +0100
Peter Dalgaard <p.dalga...@biostat.ku.dk> wrote:
rha...@stat.purdue.edu wrote:
<<insert bug report here>>
This is a CRITICAL bug!!! I have verified it in R 2.8.1 for mac
and for windows. The problem is with loess degree=0 smoothing.
For example, try the following:
x <- 1:100
y <- rnorm(100)
plot(x, y)
lines(predict(loess(y ~ x, degree=0, span=0.5)))
This is obviously wrong.
Obvious? How? I don't see anything particularly odd (on Linux).
Neither did I on linux; but the OP mentioned mac and windows.
On windows, on running that code, the lines() command added a lot of
vertical lines; most spanning the complete window but some only part.
Executing the code a second time (or in steps) gave sensible
results.
My guess would be that some memory is not correctly allocated or
initialised. Or is it something like an object with storage mode
"integer" being passed to a double? But then, why doesn't it show on
linux?
Happy bug hunting. If my guess is correct, then I have no idea how to
track down such things under windows.....
Cheers,
Berwin
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Please can you folks try under R-devel (to be R-2.9.0 in a couple of weeks)
and report if you still see it. I do not under R-devel (but do under
R-release), so my guess is that something called by loess() has been fixed in
the meantime.
Moreover it is not the plot stuff that was wrong under R-2.8.1 (release) but
the loess computations.
Uwe Ligges
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel