Available with Image Analyst license.

Available with Spatial Analyst license.

## Summary

Computes the anomaly for each slice in a multidimensional raster to generate a multidimensional raster.

An anomaly is the deviation of an observation from its standard or mean value.

## Usage

Supported multidimensional raster datasets include netCDF, GRIB, HDF, and Esri's CRF. Multidimensional mosaic datasets are also supported.

This tool produces a multidimensional raster dataset in Cloud Raster Format (CRF). Currently, no other output formats are supported.

This tool calculates anomalies over time for one or more variables in a multidimensional raster. If you have a non-time dimension in addition to the time dimension, the anomaly will be calculated at each step in the additional dimension.

For example, you have monthly ocean temperature data, collected every 1m depth up to 100m, and you want to calculate the temperature anomalies as deviations from the yearly mean. The Generate Multidimension Anomaly tool will determine the temperature anomalies based on a yearly mean if you set the Mean Calculation Interval parameter to Yearly, and it will return anomaly values for each of the 100 depths.

This tool only supports multidimensional raster datasets that have a time dimension.

The mathematical methods for calculating anomaly values are listed below. Anomalies can be calculated using either the mean or the median values as the definition of the average. If the data distribution is skewed, the mean can be highly influenced by outliers, so the median value or z-score method may be better suited for this type of data.

- Difference from mean = x - µ
- x = pixel value in a slice
- µ = mean of that pixel's values over the given time interval

- Percent difference from mean = |x - µ| / [(x + µ)/2]
- x = pixel value in a slice
- µ = mean of that pixel's values over the given time interval
- |x - µ| = absolute value of the difference between the value and the mean

- Percent of mean = x / µ
- x = pixel value in a slice
- µ = mean of that pixel's values over the given time interval

- Difference from median = x - ß
- x = pixel value in a slice
- ß = median of that pixel's values over the given time interval

- Percent difference from median = |x - ß| / [(x + ß)/2]
- x = pixel value in a slice
- ß = median of that pixel's values over the given time interval
- |x - ß| = absolute value of the difference between the value and the median

- Percent of median = x / ß
- x = pixel value in a slice
- ß = median of that pixel's values over the given time interval

- Z-score = (x - µ) / S
- x = pixel value in a slice
- µ = mean of that pixel's values over the given time interval
- S = the standard deviation of the pixel's values over the given time interval

- Difference from mean = x - µ

## Syntax

GenerateMultidimensionalAnomaly(in_multidimensional_raster, {variables}, {method}, {calculation_interval}, {ignore_nodata})

Parameter | Explanation | Data Type |

in_multidimensional_raster | The input multidimensional raster dataset. | Raster Dataset; Raster Layer; Mosaic Dataset; Mosaic Layer; Image Service; File |

variables [variables,...] (Optional) | The variable or variables for which anomalies will be calculated. If no variable is specified, all variables with a time dimension will be analyzed. | String |

method (Optional) | Specifies the method that will be used to calculate the anomaly. - DIFFERENCE_FROM_MEAN —The difference between a pixel value and the mean of that pixel's values across slices defined by the interval will be calculated. This is the default.
- PERCENT_DIFFERENCE_FROM_MEAN —The percent difference between a pixel value and the mean of that pixel's values across slices defined by the interval will be calculated.
- PERCENT_OF_MEAN —The percent of the mean will be calculated.
- Z_SCORE —The z-score for each pixel will be calculated. A z-score of 0 indicates the pixel's value is identical to the mean. A z-score of 1 indicates the pixel's value is 1 standard deviation from the mean. If a z-score is 2, the pixel's value is 2 standard deviations from the mean, and so on.
- DIFFERENCE_FROM_MEDIAN —The difference between a pixel value and the mathematical median of that pixel's values across slices defined by the interval will be calculated.
- PERCENT_DIFFERENCE_FROM_MEDIAN —The percent difference between a pixel value and the mathematical median of that pixel's values across slices defined by the interval will be calculated.
- PERCENT_OF_MEDIAN —The percent of the mathematical median will be calculated.
| String |

calculation_interval (Optional) | Specifies the temporal interval that will be used to calculate the mean. - ALL —Calculates the mean across all slices for each pixel.
- YEARLY —Calculates the yearly mean for each pixel.
- RECURRING_MONTHLY —Calculates the monthly mean for each pixel.
- RECURRING_WEEKLY —Calculates the weekly mean for each pixel.
- RECURRING_DAILY —Calculates the daily mean for each pixel.
- HOURLY —Calculates the hourly mean for each pixel.
| String |

ignore_nodata (Optional) | Specifies whether NoData values are ignored in the analysis. - DATA — The analysis will include all valid pixels along a given dimension and ignore any NoData pixels. This is the default.
- NODATA —The analysis will result in NoData if there are any NoData values for the pixels along the given dimension.
| Boolean |

#### Return Value

Name | Explanation | Data Type |

out_multidimensional_raster | The output Cloud Raster Format (CRF) multidimensional raster dataset. | Raster |

## Code sample

This example generates an anomaly multidimensional raster for temperature data, comparing pixel values with the mean pixel value across all slices.

```
import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
arcpy.CheckOutExtension("Spatial")
outTempAnomaly = GenerateMultidimensionalAnomaly(
"C:/sapyexamples/data/climateData.nc", "temperature", "DIFFERENCE_FROM_MEAN",
"ALL", "DATA")
outTempAnomaly.save("C:/sapyexamples/output/TempAnomaly.crf")
```

This example generates an anomaly multidimensional raster for ocean temperature data, comparing pixel values with the yearly mean.

```
# Name: GenerateMultidimensionalAnomaly_Ex_02.py
# Description: Generates an anomaly multidimensional raster for
# ocean temperature data, comparing pixel values with the yearly mean
# Requirements: Spatial Analyst Extension
# Import system modules
import arcpy
from arcpy import env
from arcpy.sa import *
# Set environment settings
env.workspace = "C:/sapyexamples/data"
# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")
""""
Usage: out_multidimensional_raster = GenerateMultidimensionalAnomaly(in_multidimensional_raster,
{variables}, {method}, {temporal_interval})
"""
# Define input parameters
inputFile = "C:/sapyexamples/data/climateData.crf"
variable = "oceantemp"
averageMethod = "PERCENT_DIFFERENCE_FROM_MEAN"
averageInterval = "YEARLY"
ignoreNoData = "DATA"
# Execute GenerateMultidimensionalAnomaly
outYearlyAnomaly = GenerateMultidimensionalAnomaly(inputFile, variable,
averageMethod, averageInterval, ignoreNoData)
# Save the output
outYearlyAnomaly.save("C:/sapyexamples/output/TempAnomaly.crf")
```

## Environments

## Licensing information

- Basic: Requires Spatial Analyst or Image Analyst
- Standard: Requires Spatial Analyst or Image Analyst
- Advanced: Requires Spatial Analyst or Image Analyst