scipy.stats.

iqr#

scipy.stats.iqr(x, ось=None, rng=(25, 75), scale=1.0, nan_policy='propagate', интерполяция='linear', keepdims=False)[источник]#

Вычисление межквартильного размаха данных вдоль указанной оси.

Межквартильный размах (IQR) — это разница между 75-м и 25-м процентилями данных. Это мера дисперсии, аналогичная стандартному отклонению или дисперсии, но гораздо более устойчивая к выбросам. [2].

The rng параметр позволяет этой функции вычислять другие процентильные диапазоны, кроме фактического IQR. Например, установка rng=(0, 100) эквивалентно numpy.ptp.

IQR пустого массива равен np.nan.

Добавлено в версии 0.18.0.

Параметры:
xarray_like

Входной массив или объект, который может быть преобразован в массив.

осьint или None, по умолчанию: None

Если это целое число, ось входных данных, по которой вычисляется статистика. Статистика каждого среза по оси (например, строки) входных данных появится в соответствующем элементе вывода. Если None, вход будет сведён в одномерный массив перед вычислением статистики.

rngДвухэлементная последовательность, содержащая числа с плавающей точкой в диапазоне [0,100] (необязательно)

Процентили, по которым вычисляется диапазон. Каждый должен быть между 0 и 100 включительно. По умолчанию используется истинный IQR: (25, 75). Порядок элементов не важен.

scaleскаляр или str или array_like вещественных чисел, опционально

Числовое значение scale будет разделено на конечный результат. Также распознается следующее строковое значение:

  • ‘normal’ : Масштабировать по \(2 \sqrt{2} erf^{-1}(\frac{1}{2}) \approx 1.349\).

По умолчанию 1.0. Массивоподобный scale вещественного типа данных также допускается, при условии его корректного вещания на выход, так что out / scale является допустимой операцией. Выходные размерности зависят от входного массива, x, ось аргумент, и keepdims флаг.

nan_policy{‘propagate’, ‘omit’, ‘raise’}

Определяет, как обрабатывать входные значения NaN.

  • propagate: если NaN присутствует в срезе оси (например, строке), вдоль которой вычисляется статистика, соответствующая запись вывода будет NaN.

  • omit: NaN будут пропущены при выполнении расчета. Если в срезе оси, вдоль которого вычисляется статистика, остается недостаточно данных, соответствующая запись вывода будет NaN.

  • raise: если присутствует NaN, то ValueError будет вызвано исключение.

интерполяцияstr, optional

Определяет метод интерполяции, используемый, когда границы процентилей находятся между двумя точками данных i и j. Доступны следующие опции (по умолчанию 'linear'):

  • ‘linear’: i + (j - i)*fraction, где fraction является дробной частью индекса, окружённой i и j.

  • 'lower': i.

  • ‘higher’: j.

  • ‘nearest’: i или j в зависимости от того, что ближе.

  • 'midpoint': (i + j)/2.

Для NumPy >= 1.22.0 дополнительные опции, предоставляемые method ключевое слово numpy.percentile также действительны.

keepdimsbool, по умолчанию: False

Если установлено значение True, оси, которые были сокращены, остаются в результате как размерности с размером один. С этой опцией результат будет корректно транслироваться относительно входного массива.

Возвращает:
iqrскаляр или ndarray

Если axis=None, возвращается скаляр. Если вход содержит целые числа или числа с плавающей точкой меньшей точности, чем np.float64, тогда выходной тип данных np.float64. В противном случае тип выходных данных такой же, как у входных.

Смотрите также

numpy.std, numpy.var

Примечания

Начиная с SciPy 1.9, np.matrix входные данные (не рекомендуется для нового кода) преобразуются в np.ndarray перед выполнением вычисления. В этом случае результатом будет скаляр или np.ndarray подходящей формы вместо 2D np.matrix. Аналогично, хотя маскированные элементы маскированных массивов игнорируются, результатом будет скаляр или np.ndarray вместо маскированного массива с mask=False.

Ссылки

[1]

"Интерквартильный размах" https://en.wikipedia.org/wiki/Interquartile_range

[2]

«Робастные меры масштаба» https://en.wikipedia.org/wiki/Robust_measures_of_scale

[3]

«Квантиль» https://en.wikipedia.org/wiki/Quantile

Примеры

>>> import numpy as np
>>> from scipy.stats import iqr
>>> x = np.array([[10, 7, 4], [3, 2, 1]])
>>> x
array([[10,  7,  4],
       [ 3,  2,  1]])
>>> iqr(x)
4.0
>>> iqr(x, axis=0)
array([ 3.5,  2.5,  1.5])
>>> iqr(x, axis=1)
array([ 3.,  1.])
>>> iqr(x, axis=1, keepdims=True)
array([[ 3.],
       [ 1.]])