Local polynomial interpolation can be seen as a combination of (global) polynomial methods and the moving average procedure. As with global polynomials a least square polynomial fit to the data is applied, with options for Order 1, 2 or 3 equations. However, instead of fitting the polynomial to the entire dataset it is fitted to a local subset defined by a window, as in the moving average model. The size of this window needs to be large enough for a reasonable number of data points to be included in the process. One further adjustment is made to this procedure — a measure of distance-based weighting is included, so the least squares model is in fact a weighted least squares fit. The weights are computed using a power function of distance as a fraction of the window size. The simplest case is where the moving window is a circle, radius R. If the distance between grid point (xi,yi) and a data point (x,y) within the circle is denoted di, then the weight wi is defined as:

where p is a user definable power. The least squares procedure then involves minimizing the expression:

If p=0 all the weights are 1. The default value for p within Surfer is 2 and the maximum 20.