median_abs_deviation#
-
scipy.stats.median_abs_deviation(x, axis=0, center=
median> , scale=1.0, nan_policy='propagate')[источник]# Вычислить медианное абсолютное отклонение данных вдоль заданной оси.
Медианное абсолютное отклонение (MAD, [1]) вычисляет медиану по абсолютным отклонениям от медианы. Это мера дисперсии, аналогичная стандартному отклонению, но более устойчивая к выбросам [2].
MAD пустого массива равен
np.nan.Добавлено в версии 1.5.0.
- Параметры:
- xarray_like
Входной массив или объект, который может быть преобразован в массив.
- осьint или None, опционально
Ось, вдоль которой вычисляется размах. По умолчанию 0. Если None, вычисляется MAD по всему массиву.
- центрвызываемый объект, необязательный
Функция, которая будет возвращать центральное значение. По умолчанию используется np.median. Любая пользовательская функция должна иметь сигнатуру функции
func(arr, axis).- scaleскаляр или str, опционально
Численное значение scale будет разделено на конечный результат. По умолчанию 1.0. Также принимается строка “normal”, что приводит к scale является обратной функцией квантиля стандартного нормального распределения при 0.75, что приблизительно равно 0.67449. Допускаются масштабы в виде массивов, если они правильно транслируются на выход, так что
out / scaleявляется допустимой операцией. Выходные размерности зависят от входного массива, xдолжны быть включены в старые категории. Значения, которые были в удаленных категориях, будут установлены в NaN ось аргумент.- nan_policy{'propagate', 'raise', 'omit'}, опционально
Определяет, как обрабатывать входные данные, содержащие nan. Доступны следующие варианты (по умолчанию 'propagate'):
‘propagate’: возвращает nan
‘raise’: вызывает ошибку
'omit': выполняет вычисления, игнорируя значения nan
- Возвращает:
- madскаляр или ndarray
Если
axis=None, возвращается скаляр. Если вход содержит целые числа или числа с плавающей точкой меньшей точности, чемnp.float64, тогда выходной тип данныхnp.float64. В противном случае тип выходных данных такой же, как у входных.
Смотрите также
Примечания
The центр аргумент влияет только на расчёт центрального значения, вокруг которого вычисляется MAD. То есть, передача
center=np.meanбудет вычислять MAD относительно среднего - он не будет вычислять mean абсолютное отклонение.Входной массив может содержать inf, но если центр возвращает inf, соответствующий MAD для этих данных будет nan.
Ссылки
[1]“Среднее абсолютное отклонение”, https://en.wikipedia.org/wiki/Median_absolute_deviation
[2]“Робастные меры масштаба”, https://en.wikipedia.org/wiki/Robust_measures_of_scale
Примеры
При сравнении поведения
median_abs_deviationсnp.std, последний подвержен влиянию, когда мы изменяем одно значение массива, чтобы оно стало выбросом, в то время как MAD почти не меняется:>>> import numpy as np >>> 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
Пример обработки оси:
>>> 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
Пример масштабирования нормального распределения:
>>> 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