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 个顺序统计量,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) ~ 中位数[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的序列或数组。
- 概率类似数组, 可选
要计算的分位数列表。
- alphapfloat, 可选
绘图位置参数,默认值为 0.4。
- betapfloat, 可选
绘图位置参数,默认值为 0.4。
- 轴int, 可选
要进行修剪的轴。如果为 None(默认),则首先将输入数组展平。
- 限制tuple, 可选
元组 (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])
使用二维数组,指定轴和限制。
>>> 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 --]]