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
从…alphap
和betap
,位于何处 Rm
是用每种类型定义的。参考文献
- 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 --]]