scipy.stats.

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 是有效的運算。輸出維度取決於輸入陣列 xaxis 引數和 keepdims 旗標。

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

定義如何處理輸入 NaN。

  • propagate:如果在計算統計量的軸切片(例如,列)中存在 NaN,則輸出的對應條目將為 NaN。

  • omit:執行計算時將省略 NaN。如果沿著計算統計量的軸切片中剩餘的資料不足,則輸出的對應條目將為 NaN。

  • raise:如果存在 NaN,將引發 ValueError

interpolationstr,選用

指定當百分位數邊界位於兩個資料點 ij 之間時要使用的內插法。以下選項可用(預設值為 ‘linear’)

  • ‘linear’:i + (j - i)*fraction,其中 fraction 是以 ij 為界的索引的小數部分。

  • ‘lower’:i

  • ‘higher’:j

  • ‘nearest’:ij,以較近者為準。

  • ‘midpoint’:(i + j)/2

對於 NumPy >= 1.22.0,numpy.percentilemethod 關鍵字提供的其他選項也有效。

keepdimsbool,預設值:False

如果設定為 True,則縮減的軸將保留在結果中,作為大小為一的維度。使用此選項,結果將針對輸入陣列正確廣播。

返回:
iqr純量或 ndarray

如果 axis=None,則返回純量。如果輸入包含整數或精度小於 np.float64 的浮點數,則輸出資料類型為 np.float64。否則,輸出資料類型與輸入的資料類型相同。

參見

numpy.stdnumpy.var

註解

從 SciPy 1.9 開始,np.matrix 輸入(不建議用於新程式碼)在執行計算之前會轉換為 np.ndarray。在這種情況下,輸出將是純量或適當形狀的 np.ndarray,而不是 2D np.matrix。同樣地,雖然會忽略遮罩陣列的遮罩元素,但輸出將是純量或 np.ndarray,而不是 mask=False 的遮罩陣列。

參考文獻

範例

>>> 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.]])