nansigmaMad¶
- lsst.analysis.tools.nansigmaMad(x, axis=0, center=<function median>, *, scale='normal', nan_policy='omit')¶
- Compute the median absolute deviation of the data along the given axis. - The median absolute deviation (MAD, [1]) computes the median over the absolute deviations from the median. It is a measure of dispersion similar to the standard deviation but more robust to outliers [2]. - The MAD of an empty array is - np.nan.- New in version 1.5.0. - Parameters:
- xarray_like
- Input array or object that can be converted to an array. 
- axisint or None, optional
- Axis along which the range is computed. Default is 0. If None, compute the MAD over the entire array. 
- centercallable, optional
- A function that will return the central value. The default is to use np.median. Any user defined function used will need to have the function signature - func(arr, axis).
- scalescalar or str, optional
- The numerical value of scale will be divided out of the final result. The default is 1.0. The string “normal” is also accepted, and results in - scalebeing the inverse of the standard normal quantile function at 0.75, which is approximately 0.67449. Array-like scale is also allowed, as long as it broadcasts correctly to the output such that- out / scaleis a valid operation. The output dimensions depend on the input array,- x, and the- axisargument.
- nan_policy{‘propagate’, ‘raise’, ‘omit’}, optional
- Defines how to handle when input contains nan. The following options are available (default is ‘propagate’): - ‘propagate’: returns nan 
- ‘raise’: throws an error 
- ‘omit’: performs the calculations ignoring nan values 
 
 
- Returns:
- madscalar or ndarray
- If - axis=None, a scalar is returned. If the input contains integers or floats of smaller precision than- np.float64, then the output data-type is- np.float64. Otherwise, the output data-type is the same as that of the input.
 
 - See also - Notes - The - centerargument only affects the calculation of the central value around which the MAD is calculated. That is, passing in- center=np.meanwill calculate the MAD around the mean - it will not calculate the mean absolute deviation.- The input array may contain - inf, but if- centerreturns- inf, the corresponding MAD for that data will be- nan.- References [1]- “Median absolute deviation”, https://en.wikipedia.org/wiki/Median_absolute_deviation [2]- “Robust measures of scale”, https://en.wikipedia.org/wiki/Robust_measures_of_scale - Examples - When comparing the behavior of - median_abs_deviationwith- np.std, the latter is affected when we change a single value of an array to have an outlier value while the MAD hardly changes:- >>> from scipy import stats >>> x = stats.norm.rvs(size=100, scale=1, random_state=123456) >>> x.std() 0.9973906394005013 >>> stats.median_abs_deviation(x) 0.82832610097857 >>> x[0] = 345.6 >>> x.std() 34.42304872314415 >>> stats.median_abs_deviation(x) 0.8323442311590675 - Axis handling example: - >>> x = np.array([[10, 7, 4], [3, 2, 1]]) >>> x array([[10, 7, 4], [ 3, 2, 1]]) >>> stats.median_abs_deviation(x) array([3.5, 2.5, 1.5]) >>> stats.median_abs_deviation(x, axis=None) 2.0 - Scale normal example: - >>> x = stats.norm.rvs(size=1000000, scale=2, random_state=123456) >>> stats.median_abs_deviation(x) 1.3487398527041636 >>> stats.median_abs_deviation(x, scale='normal') 1.9996446978061115