[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.

   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

   Z = SMOOTH(Y,7) uses the moving average method with span 7 and

   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