[R] anomalies with the loess() function
Gavin Simpson
gavin.simpson at ucl.ac.uk
Wed Oct 27 09:26:05 CEST 2010
On Tue, 2010-10-26 at 13:29 -0700, Peter Ehlers wrote:
> On 2010-10-26 11:48, Jonathan P Daily wrote:
> > ?loess
> >
> > use this instead:
If you change this:
> > fit<- loess(b~a)
to be this:
fit <- loess(b~a, na.action = na.exclude)
then this:
> > lines(a, predict(fit))
will work.
G
> I don't think that will work when there are incomplete cases,
> in which case 'a' and predict(fit) may not correspond.
>
> I think that it's always best to define a set of predictor
> values and use predict() to get the corresponding fits and
> plot according to taste:
>
> fm <- loess(b ~ a)
> aa <- seq(0, 1000, length=101)
> bb <- predict(fm, aa)
> lines(aa, bb, col="blue", lwd=2)
>
> @Federico: see further comments below.
>
> > --------------------------------------
> > Jonathan P. Daily
> > Technician - USGS Leetown Science Center
> > 11649 Leetown Road
> > Kearneysville WV, 25430
> > (304) 724-4480
> > "Is the room still a room when its empty? Does the room,
> > the thing itself have purpose? Or do we, what's the word... imbue it."
> > - Jubal Early, Firefly
> >
> >
> >
> > From:
> > Federico Bonofiglio<bonoricus at gmail.com>
> > To:
> > r-help at r-project.org
> > Date:
> > 10/26/2010 02:38 PM
> > Subject:
> > [R] anomalies with the loess() function
> > Sent by:
> > r-help-bounces at r-project.org
> >
> >
> >
> > Hello Masters,
> >
> > I run the loess() function to obtain local weighted regressions, given
> > lowess() can't handle NAs, but I don't
> > improve significantly my situation......, actually loess() performance
> > leave
> > me much puzzled....
> >
> > I attach my easy experiment below
> >
> > #------SCRIPT----------------------------------------------
> >
> > #I explore the functionalities of lowess()& loess()
> > #because I have encountered problems in execute local weighted regressions
> > #with lowess() (in presence of NAs)& with loess() (always!!!)
> >
> >
> > #I generate 2 fictious vectors
> >
> > a<-sample(c(sample(1:1000,100),rep(NA,50)))
> >
> > b<-sample(c(sample(1:1000,100),rep(NA,50)))
> >
> > #lm() has no problems..can handle the missing values
> > plot(a,b)
> > abline(lm(b~a),col="red",lwd=2)
> >
> > #loess return a plain mess like it would go dizzed with ordering or
> > something.
>
> Yes, the 'mess' is due to the unordered nature of your data.
> lines() will plot in the order in which the points occur in
> your data. You could order before calling loess:
>
> ord <- order(a)
> a1 <- a[ord]
> b1 <- b[ord]
> fm <- loess(b1 ~ a1)
>
> > #Off course lowess() turns useless in presence of NAs, I don't even try
> > it.
> >
> > lines(loess(b~a))
> >
> > #I get rid off NAs and compare lowess()& loess() performance, expecting
> > to
> > #obtain the same result as both functions implement local weighted
> > regressions
> >
> > a<-na.omit(a)
> > b<-na.omit(b)
>
> This is a bad idea. The values of 'a' and 'b' will no longer
> be paired. Another reason to prefer dataframes.
>
> >
> > #check out the evidence.....something's wrong with loess()???
>
> There's nothing wrong with loess; it just needs more than a
> single intercept and slope to plot its predictions.
>
> -Peter Ehlers
>
> >
> > par(mfrow=c(1,2))
> > plot(a,b)
> > lines(lowess(a,b),col="red")#if NAs are excluded lowess() runs regularly
> > plot(a,b)
> > lines(loess(b~a),col="red")#.....but loess() keeps messing all
> > over...!!???
> >
>
> ______________________________________________
> 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.
--
%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%
Dr. Gavin Simpson [t] +44 (0)20 7679 0522
ECRC, UCL Geography, [f] +44 (0)20 7679 0565
Pearson Building, [e] gavin.simpsonATNOSPAMucl.ac.uk
Gower Street, London [w] http://www.ucl.ac.uk/~ucfagls/
UK. WC1E 6BT. [w] http://www.freshwaters.org.uk
%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%
More information about the R-help
mailing list