iqr#
- scipy.stats.iqr(x, axis=None, rng=(25, 75), scale=1.0, nan_policy='propagate', interpolation='linear', keepdims=False)[source]#
計算沿指定軸的四分位距資料。
四分位距 (IQR) 是資料第 75 百分位數和第 25 百分位數之間的差異。它是一種與標準差或變異數相似的離散程度量測,但對於離群值更穩健 [2]。
rng
參數允許此函數計算實際 IQR 以外的其他百分位數範圍。例如,設定rng=(0, 100)
等同於numpy.ptp
。空陣列的 IQR 為 np.nan。
在版本 0.18.0 中新增。
- 參數:
- xarray_like
輸入陣列或可以轉換為陣列的物件。
- axisint 或 None,預設值:None
如果為整數,則為沿著計算統計量的輸入軸。輸入的每個軸切片(例如,列)的統計量將出現在輸出的對應元素中。如果
None
,則輸入將在計算統計量之前被展平。- rng包含 [0,100] 範圍內浮點數的雙元素序列,選用
計算範圍的百分位數。每個值都必須介於 0 和 100 之間(包含)。預設值為真實 IQR:
(25, 75)
。元素的順序並不重要。- scale純量或 str 或實數的 array_like,選用
比例的數值將從最終結果中除掉。也識別以下字串值
‘normal’ : 按 \(2 \sqrt{2} erf^{-1}(\frac{1}{2}) \approx 1.349\) 縮放。
預設值為 1.0。也允許實數 dtype 的類陣列 scale,只要它可以正確廣播到輸出,使得
out / scale
是有效的運算。輸出維度取決於輸入陣列 x、axis 引數和 keepdims 旗標。- nan_policy{‘propagate’, ‘omit’, ‘raise’}
定義如何處理輸入 NaN。
propagate
:如果在計算統計量的軸切片(例如,列)中存在 NaN,則輸出的對應條目將為 NaN。omit
:執行計算時將省略 NaN。如果沿著計算統計量的軸切片中剩餘的資料不足,則輸出的對應條目將為 NaN。raise
:如果存在 NaN,將引發ValueError
。
- interpolationstr,選用
指定當百分位數邊界位於兩個資料點
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,
numpy.percentile
的method
關鍵字提供的其他選項也有效。- 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
的遮罩陣列。參考文獻
[3]範例
>>> 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.]])