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. В противном случае тип выходных данных такой же, как у входных.
Примечания
Начиная с SciPy 1.9,
np.matrixвходные данные (не рекомендуется для нового кода) преобразуются вnp.ndarrayперед выполнением вычисления. В этом случае результатом будет скаляр илиnp.ndarrayподходящей формы вместо 2Dnp.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.]])