What is the difference between a Savitzky-Golay filter and LOESS?

I don't fully understand the difference between these two smoothing algorithms. It seems like they both take a window, fit a polynomial, sample from the fit, and move on.

I would guess maybe the difference lies in the weighting function used by LOESS but not by the Savitzky-Golay filter, but I'm not sure exactly how this works or what the ultimate effects on the fit would be.

I'm particularly interested in the differences and relative advantages/disadvantages to each for fitting data that is not evenly sampled. I understand there's a generalized Savitzky-Golay filter that works for non-evenly sampled data, albeit much less efficiently.


The benefit of Savitzky–Golay is its efficiency, which it gets from having a fixed window size and equal spacing, which means the weights are also fixed. As a result, the local fit need be solved only once, and the smoothed result can be computed with a convolution.

In Loess (and generalized Savitzky–Golay), the window size and weights depend on the spacing, and so the local fit must be solved anew for each sample.