[R] R loess vs. Matlab loess
Stuart Leask
stuart.leask at nottingham.ac.uk
Wed Jan 30 15:33:59 CET 2008
hits=-2.6 tests=BAYES_00
X-USF-Spam-Flag: NO
Hi there.
Some years ago, I was trying to get loess to behave like lowess, so I could
repeat some old analyses but 'predict.loess' into some reference data (R
lowess and loess have different defaults).
loess(X~Y,span=sp, family=("symmetric"), degree=2)
seemed pretty much the same as lowess - I think someone on this list made
the suggestion.
I have a colleague that is trying to replicate some findings in Matlab. We
were getting different results, and have determined that Matlab loess
parameters are different too (see below a description on the Matlab
smoothing function).
It seems to come down to the fact that R loess uses a 're-descending M
estimator', since family = ("symmetric").
Can anyone suggest whether/how the Matlab SMOOTH can replicate this?
(Or even just describe what a re-descending M estimator does!)
I know, a health warning has to surround results that are differing a lot
simply due to exact parameters used, but it would be nice to confirm/deny
the lines are looking different for this reason.
Dr Stuart J Leask DM MRCPsych MA BChir
Senior Lecturer and Honorary Consultant in Clinical Psychiatry
University Dept of Psychiatry, Duncan Macmillan House
Porchester Road. Nottingham. NG3 6AA.
www: Google "Dr Stuart Leask"
**************************************************************
'SMOOTH Smooth data.
Z = SMOOTH(Y) smooths data Y using a 5-point moving average.
Z = SMOOTH(Y,SPAN) smooths data Y using SPAN as the number of points used
to compute each element of Z.
Z = SMOOTH(Y,SPAN,METHOD) smooths data Y with specified METHOD. The
available methods are:
'moving' - Moving average (default)
'lowess' - Lowess (linear fit)
'loess' - Loess (quadratic fit)
'sgolay' - Savitzky-Golay
'rlowess' - Robust Lowess (linear fit)
'rloess' - Robust Loess (quadratic fit)
Z = SMOOTH(Y,METHOD) uses the default SPAN 5.
Z = SMOOTH(Y,SPAN,'sgolay',DEGREE) and Z = SMOOTH(Y,'sgolay',DEGREE)
additionally specify the degree of the polynomial to be used in the
Savitzky-Golay method. The default DEGREE is 2. DEGREE must be smaller
than SPAN.
Z = SMOOTH(X,Y,...) additionally specifies the X coordinates. If X is
not provided, methods that require X coordinates assume X = 1:N, where
N is the length of Y.
Notes:
1. When X is given and X is not uniformly distributed, the default method
is 'lowess'. The 'moving' method is not recommended.
2. For the 'moving' and 'sgolay' methods, SPAN must be odd.
If an even SPAN is specified, it is reduced by 1.
3. If SPAN is greater than the length of Y, it is reduced to the
length of Y.
4. In the case of (robust) lowess and (robust) loess, it is also
possible to specify the SPAN as a percentage of the total number
of data points. When SPAN is less than or equal to 1, it is
treated as a percentage.
For example:
Z = SMOOTH(Y) uses the moving average method with span 5 and
X=1:length(Y).
Z = SMOOTH(Y,7) uses the moving average method with span 7 and
X=1:length(Y).
Z = SMOOTH(Y,'sgolay') uses the Savitzky-Golay method with DEGREE=2,
SPAN = 5, X = 1:length(Y).
Z = SMOOTH(X,Y,'lowess') uses the lowess method with SPAN=5.
Z = SMOOTH(X,Y,SPAN,'rloess') uses the robust loess method.
Z = SMOOTH(X,Y) where X is unevenly distributed uses the
'lowess' method with span 5.
Z = SMOOTH(X,Y,8,'sgolay') uses the Savitzky-Golay method with
span 7 (8 is reduced by 1 to make it odd).
Z = SMOOTH(X,Y,0.3,'loess') uses the loess method where span is
30% of the data, i.e. span = ceil(0.3*length(Y)).'
This message has been checked for viruses but the contents of an attachment
may still contain software viruses, which could damage your computer system:
you are advised to perform your own checks. Email communications with the
University of Nottingham may be monitored as permitted by UK legislation.
More information about the R-help
mailing list