Python 来自scipy.stats.probplot的奇怪行为

Python 来自scipy.stats.probplot的奇怪行为,python,numpy,scipy,statistics,data-science,Python,Numpy,Scipy,Statistics,Data Science,在scipy的文档中,他们说: 用于理论分位数(概率图的水平轴)的公式为Filliben估计: 分位数=dist.ppf(val),对于0.5**(1/n),对于i=n val=(i-0.3175)/(n+0.365),对于i=2,…,n-1 1-0.5**(1/n),对于i=1 我在哪里 指示第i个有序值和n 是值的总数 但当我用它插入一些数字时,它给出的值与probplot函数计算的值不同。例如: np.random.seed(12) n = np.random.randn(10) * 10

在scipy的文档中,他们说:

用于理论分位数(概率图的水平轴)的公式为Filliben估计:

分位数=dist.ppf(val),对于0.5**(1/n),对于i=n

val=(i-0.3175)/(n+0.365),对于i=2,…,n-1

1-0.5**(1/n),对于i=1

我在哪里 指示第i个有序值和n 是值的总数

但当我用它插入一些数字时,它给出的值与probplot函数计算的值不同。例如:

np.random.seed(12)
n = np.random.randn(10) * 10
x, _ = stat.probplot(n, plot = plt)
-15.3472134是第二个值,因此我插入


(2-0.3175)/(10+0.365),它返回分位数0.162325(介于0和1之间的数字),而函数将其绘制为-0.98494667,并标记x轴理论分位数。如何从实际分位数0.162325计算-0.98494667“理论分位数”?

您得到的“val”值被视为概率。使用该概率,您将使用所需分布的百分比点函数(PPF)(在您的情况下为标准正态分布)得到分位数。“n”概率也可以从连续均匀(0,1)分布中随机获得,但用上述方法计算概率是一种方法。所以scipy.stats.norm.ppf(0.162325)=-0.98494667

为简单起见,您可以将ppf视为cdf的逆函数

“cdf”-对于给定的x值,它返回低于该值的点/质量百分比


“ppf”-对于给定的概率,它返回x值。这类似于计算z分数。

您得到的“val”值被视为概率。使用该概率,您将使用所需分布的百分比点函数(PPF)(在您的情况下为标准正态分布)得到分位数。“n”概率也可以从连续均匀(0,1)分布中随机获得,但用上述方法计算概率是一种方法。所以scipy.stats.norm.ppf(0.162325)=-0.98494667

为简单起见,您可以将ppf视为cdf的逆函数

“cdf”-对于给定的x值,它返回低于该值的点/质量百分比

“ppf”-对于给定的概率,它返回x值。这类似于计算z分数