scipy.stats.mstats.

mquantiles#

scipy.stats.mstats.mquantiles(a, prob=(0.25, 0.5, 0.75), alphap=0.4, betap=0.4, axis=None, limit=())[source]#

計算資料陣列的經驗分位數。

樣本分位數定義為 Q(p) = (1-gamma)*x[j] + gamma*x[j+1],其中 x[j] 是第 j 個順序統計量,而 gamma 是 j = floor(n*p + m)m = alphap + p*(1 - alphap - betap)g = n*p + m - j 的函數。

重新解釋上述方程式以與 R 比較,得出方程式:p(k) = (k - alphap)/(n + 1 - alphap - betap)

(alphap, betap) 的典型值為
  • (0,1) : p(k) = k/n : cdf 的線性內插 (R 型別 4)

  • (.5,.5) : p(k) = (k - 1/2.)/n : 分段線性函數 (R 型別 5)

  • (0,0) : p(k) = k/(n+1) : (R 型別 6)

  • (1,1) : p(k) = (k-1)/(n-1): p(k) = mode[F(x[k])]. (R 型別 7,R 預設值)

  • (1/3,1/3): p(k) = (k-1/3)/(n+1/3): 則 p(k) ~ median[F(x[k])]。無論 x 的分佈如何,產生的分位數估計值都近似為中位數無偏。(R 型別 8)

  • (3/8,3/8): p(k) = (k-3/8)/(n+1/4): Blom。如果 x 服從常態分佈,則產生的分位數估計值近似為無偏。(R 型別 9)

  • (.4,.4) : 近似分位數無偏 (Cunnane)

  • (.35,.35): APL,用於 PWM

參數:
aarray_like

輸入資料,可以是序列或維度最多為 2 的陣列。

probarray_like, optional

要計算的分位數列表。

alphapfloat, optional

繪圖位置參數,預設值為 0.4。

betapfloat, optional

繪圖位置參數,預設值為 0.4。

axisint, optional

執行修剪的軸。如果為 None (預設值),則輸入陣列會先被展平。

limittuple, optional

(lower, upper) 值的元組。在此開區間之外的 a 值將被忽略。

回傳值:
mquantilesMaskedArray

包含計算出的分位數的陣列。

註解

此公式與 R 非常相似,除了從 alphapbetap 計算 m 的方式,在 R 中,m 是針對每種類型定義的。

參考文獻

範例

>>> import numpy as np
>>> from scipy.stats.mstats import mquantiles
>>> a = np.array([6., 47., 49., 15., 42., 41., 7., 39., 43., 40., 36.])
>>> mquantiles(a)
array([ 19.2,  40. ,  42.8])

使用 2D 陣列,指定軸和限制。

>>> data = np.array([[   6.,    7.,    1.],
...                  [  47.,   15.,    2.],
...                  [  49.,   36.,    3.],
...                  [  15.,   39.,    4.],
...                  [  42.,   40., -999.],
...                  [  41.,   41., -999.],
...                  [   7., -999., -999.],
...                  [  39., -999., -999.],
...                  [  43., -999., -999.],
...                  [  40., -999., -999.],
...                  [  36., -999., -999.]])
>>> print(mquantiles(data, axis=0, limit=(0, 50)))
[[19.2  14.6   1.45]
 [40.   37.5   2.5 ]
 [42.8  40.05  3.55]]
>>> data[:, 2] = -999.
>>> print(mquantiles(data, axis=0, limit=(0, 50)))
[[19.200000000000003 14.6 --]
 [40.0 37.5 --]
 [42.800000000000004 40.05 --]]