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 非常相似,除了從
alphap
和betap
計算m
的方式,在 R 中,m
是針對每種類型定義的。參考文獻
[1]R 統計軟體:https://www.r-project.org/
[2]R
quantile
函數:http://stat.ethz.ch/R-manual/R-devel/library/stats/html/quantile.html範例
>>> 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 --]]