【问题标题】:Weird behavior from scipy.stats.probplot来自 scipy.stats.probplot 的奇怪行为
【发布时间】:2020-02-10 15:38:12
【问题描述】:

在 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 “理论分位数”?

【问题讨论】:

    标签: python numpy scipy statistics data-science


    【解决方案1】:

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

    为简单起见,您可以将 ppf 视为 cdf 的倒数。

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

    'ppf' - 对于给定的概率,它返回 x 值。它类似于计算 z-score。

    【讨论】:

      猜你喜欢
      • 2014-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多