Use of the Spatial Analyst focal statistics tool with the Weight neighborhood type and an arbitrary weight kernel file to compute a mean, the result computed for any processing cell is NOT the expected "weighted mean" of the values of the cells within its neighborhood.

That this is the case may be seen from the following example which uses an input processing raster filled with constant values and the kernel file shown below.

Input processing raster:

1000 1000 1000 1000 1000 1000 1000 1000 1000 1000

1000 1000 1000 1000 1000 1000 1000 1000 1000 1000

1000 1000 1000 1000 1000 1000 1000 1000 1000 1000

1000 1000 1000 1000 1000 1000 1000 1000 1000 1000

1000 1000 1000 1000 1000 1000 1000 1000 1000 1000

1000 1000 1000 1000 1000 1000 1000 1000 1000 1000

1000 1000 1000 1000 1000 1000 1000 1000 1000 1000

1000 1000 1000 1000 1000 1000 1000 1000 1000 1000

1000 1000 1000 1000 1000 1000 1000 1000 1000 1000

1000 1000 1000 1000 1000 1000 1000 1000 1000 1000

Kernel file:

5 5

1 2 3 2 1

2 4 6 4 2

3 6 9 6 3

2 4 6 4 2

1 2 3 2 1

Output raster (NoData cells ignored):

4000 4000 3600 3600 3600 3600 3600 3600 4000 4000

4000 4000 3600 3600 3600 3600 3600 3600 4000 4000

3600 3600 3240 3240 3240 3240 3240 3240 3600 3600

3600 3600 3240 3240 3240 3240 3240 3240 3600 3600

3600 3600 3240 3240 3240 3240 3240 3240 3600 3600

3600 3600 3240 3240 3240 3240 3240 3240 3600 3600

3600 3600 3240 3240 3240 3240 3240 3240 3600 3600

3600 3600 3240 3240 3240 3240 3240 3240 3600 3600

4000 4000 3600 3600 3600 3600 3600 3600 4000 4000

4000 4000 3600 3600 3600 3600 3600 3600 4000 4000

The value of 3240 seen for the cells in the central part of the output raster is 81000 / 25. (The other values near the array edges are different because the processing has encountered NoData cells. No further discussion will be given here of any cells in the output array near the edges.)

The value 81000 for the cells in the central part of the output raster is the weighted sum of the product of the input cell raster cell values and the kernel weights (as it should be). This can be confirmed by computing the sum statistic, instead of the mean statistic, using the focal statistics tool on the same input raster and with the same kernel.

The problem, then, is the tool's division of the weighted sum values by 25 (the number of cells in the kernel neighborhood, rather than by 81 (the sum of the weights used in that kernel neighborhood. Conventionally, and intuitively, the divisor by which a weighted mean should be created from a weighted sum should be the sum of the weights. That is not what this tool does.

A workaround for this error is easily contrived. Since the weighted sum statistic is computed correctly for a non-uniform kernel, the weighted sum tool can be used to compute the weighted mean for any kernel by proportionally reducing each of the kernel values so that the sum of all weights in the kernel is unity. For my example above, since the kernel weights add to 81, each should be divided by 81 to form a new kernel file. With that change, then use of the focal statistics tool to compute a weighted sum statistic does produce values of 1000 throughout the central portion of the output raster.

That this is the case may be seen from the following example which uses an input processing raster filled with constant values and the kernel file shown below.

Input processing raster:

1000 1000 1000 1000 1000 1000 1000 1000 1000 1000

1000 1000 1000 1000 1000 1000 1000 1000 1000 1000

1000 1000 1000 1000 1000 1000 1000 1000 1000 1000

1000 1000 1000 1000 1000 1000 1000 1000 1000 1000

1000 1000 1000 1000 1000 1000 1000 1000 1000 1000

1000 1000 1000 1000 1000 1000 1000 1000 1000 1000

1000 1000 1000 1000 1000 1000 1000 1000 1000 1000

1000 1000 1000 1000 1000 1000 1000 1000 1000 1000

1000 1000 1000 1000 1000 1000 1000 1000 1000 1000

1000 1000 1000 1000 1000 1000 1000 1000 1000 1000

Kernel file:

5 5

1 2 3 2 1

2 4 6 4 2

3 6 9 6 3

2 4 6 4 2

1 2 3 2 1

Output raster (NoData cells ignored):

4000 4000 3600 3600 3600 3600 3600 3600 4000 4000

4000 4000 3600 3600 3600 3600 3600 3600 4000 4000

3600 3600 3240 3240 3240 3240 3240 3240 3600 3600

3600 3600 3240 3240 3240 3240 3240 3240 3600 3600

3600 3600 3240 3240 3240 3240 3240 3240 3600 3600

3600 3600 3240 3240 3240 3240 3240 3240 3600 3600

3600 3600 3240 3240 3240 3240 3240 3240 3600 3600

3600 3600 3240 3240 3240 3240 3240 3240 3600 3600

4000 4000 3600 3600 3600 3600 3600 3600 4000 4000

4000 4000 3600 3600 3600 3600 3600 3600 4000 4000

The value of 3240 seen for the cells in the central part of the output raster is 81000 / 25. (The other values near the array edges are different because the processing has encountered NoData cells. No further discussion will be given here of any cells in the output array near the edges.)

The value 81000 for the cells in the central part of the output raster is the weighted sum of the product of the input cell raster cell values and the kernel weights (as it should be). This can be confirmed by computing the sum statistic, instead of the mean statistic, using the focal statistics tool on the same input raster and with the same kernel.

The problem, then, is the tool's division of the weighted sum values by 25 (the number of cells in the kernel neighborhood, rather than by 81 (the sum of the weights used in that kernel neighborhood. Conventionally, and intuitively, the divisor by which a weighted mean should be created from a weighted sum should be the sum of the weights. That is not what this tool does.

A workaround for this error is easily contrived. Since the weighted sum statistic is computed correctly for a non-uniform kernel, the weighted sum tool can be used to compute the weighted mean for any kernel by proportionally reducing each of the kernel values so that the sum of all weights in the kernel is unity. For my example above, since the kernel weights add to 81, each should be divided by 81 to form a new kernel file. With that change, then use of the focal statistics tool to compute a weighted sum statistic does produce values of 1000 throughout the central portion of the output raster.

I think the confusion originates from us using the term "weighted neighborhood" in regards to the Mean statistic. The documentation could be enhanced and I've spoken to the tool owner. As you must have noticed when you choose what statistic you want from the Statistic Type parameter, there isn't an entry called "Weighted Mean"; There is only "Mean". Based on your result set, the tool is functioning as designed. We returned the mean value of your weighted raster based on the kernel file you provided.

I submitted an enhancement request on your behalf to incorporate weighted mean as a new statistic type. You can track it with NIM072396. It shouldn't be that hard to do - afterall we just need to sum the weights and use the sum in the denominator.

Thanks for pointing this out!

Best Regards,

Eric