On 2010-10-26 11:48, Jonathan P Daily wrote:
?loess

use this instead:

fit<- loess(b~a)
lines(a, predict(fit))

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<bonori...@gmail.com>
To:
r-help@r-project.org
Date:
10/26/2010 02:38 PM
Subject:
[R] anomalies with the loess() function
Sent by:
r-help-boun...@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@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.

Reply via email to