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=())[源代码]

计算数据数组的经验分位数。

样本分位数定义为 Q(p) = (1-gamma)*x[j] + gamma*x[j+1] ,在哪里 x[j] 是第j阶统计量,而伽马是 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)=模式 [F(x[k] )]。( R 类型7, R (默认值)

  • (1/3,1/3): p(k) = (k-1/3)/(n+1/3) :则p(K)~中位数 [F(x[k] )]。由此得到的分位数估计大约是中位数无偏的,而与x的分布无关。 R 类型8)

  • (3/8,3/8): p(k) = (k-3/8)/(n+1/4) :布卢姆。如果x服从正态分布,则得到的分位数估计值大致是无偏的( R 类型9)

  • (0.4,0.4):近似分位数无偏(Cunnane)

  • (.35,.35):APL,与PWM一起使用

参数
aarray_like

输入数据,作为最多2维的序列或数组。

probARRAY_LIKE,可选

要计算的分位数列表。

alphap浮动,可选

绘图位置参数,默认为0.4。

betap浮动,可选

绘图位置参数,默认为0.4。

axis整型,可选

要沿其执行修剪的轴。如果为None(默认值),则首先展平输入数组。

limit元组,可选

(下限、上限)值的元组。的值 a 此开放间隔之外的数据将被忽略。

退货
mquantilesMaskedArray

包含计算出的分位数的数组。

注意事项

这个提法非常类似于 R 除了计算 m 从… alphapbetap ,位于何处 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

示例

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

使用二维数组,指定轴和限制。

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