【问题标题】:Incorrect first quantile and third quantile value over array using numpy使用 numpy 对数组的第一个分位数和第三个分位数不正确
【发布时间】:2019-12-04 09:11:27
【问题描述】:

我需要帮助来了解numpy 中分位数函数的工作原理。因为答案与其他分位数计算器不匹配。

arr = [1,2,3,4,5] 

print("arr : ", arr)  
print("Q2 quantile of arr : ", np.quantile(arr, .50)) 
print("Q1 quantile of arr : ", np.quantile(arr, .25)) 
print("Q3 quantile of arr : ", np.quantile(arr, .75))  

我预计 Q1 的输出为 1.5,Q3 的输出为 4.5 我使用online calculator 验证了它。它也与 numpy 给出的答案不同。 有人可以帮助我了解 numpy 如何计算分位数以及为什么它与实际公式不同。

【问题讨论】:

  • 文献中没有明确的四分位数计算方法。 numpy 执行 precentile(arr, 25),这是一种被认可的方法,但许多其他方法将数组拆分两次,当数组具有奇数个值时,它会删除中位数。

标签: python numpy quantile


【解决方案1】:

尽管在许多“标准”公式中使用了四分位数,但由于某些不敬虔的原因,统计学作为一门学科并没有准确定义什么是四分位数。 Here's three different methods of calculating it 这些都非常不同。幸运的是,当数据集很大时,差异很小,但只有五个值。 . .好吧,你可以得到一些非常大的差异。

  • 您的在线计算器使用方法 1 并返回 [1.5, 4.5]

  • 方法 2 的答案是[2, 4]

  • numpy使用方法3并返回[2, 4]

在我看来,方法 2 和 3 总是给出相同的答案,但可能存在我没有看到的差异。

【讨论】:

  • 我不认为我得到 [2,4] 作为使用方法 3 的答案。有 5 个元素,所以 n=1 。第一个数据值的 25% = 0.25。第二 (n+1) 个数据值的 75% = 1.5 。所以 Q1 = 1.75
  • 同样使用维基百科链接中给出的第一个示例,答案是不同的。根据 numpy Q2 的 arr 分位数:40.0 Q1 的 arr 分位数:25.5 Q3 的分位数 arr:42.5
猜你喜欢
  • 2017-07-11
  • 1970-01-01
  • 2016-08-30
  • 2021-08-25
  • 1970-01-01
  • 2016-12-24
  • 2018-02-06
  • 1970-01-01
相关资源
最近更新 更多