- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在对数据集 [23,25,28,28,32,33,35] 进行编码
IQR = Q3 - Q1 = 33 - 25 = 8
当我在数据集上运行 IQR 时,结果 (6) 与预期的结果 (8) 不同。
我在 https://stackoverflow.com/a/23229224 中尝试了另一种方法, 结果为 6.
这是我的代码
import numpy as np
from scipy.stats import iqr
x = np.array([23,25,28,28,32,33,35])
print(iqr(x, axis=0))
是什么导致了这个问题?
最佳答案
scipy.stats.iqr
似乎不遵循维基百科中记录的递归算法。相反,它只是执行 np.percentile(x, 75) - np.percentile(x, 25)
这不排除中位数,它包含在内,所以你得到 (32 + 33 )/2 - (25 + 28)/2 = 6
如果您想在维基百科中使用该算法,您需要执行以下操作:
def iqr_(m):
m = np.array(m)
n = m.size//2
m_ = np.partition(m.ravel(), n + 1)
return np.median(m_[n + m.size%2:]) - np.median(m_[:n])
iqr_([23,25,28,28,32,33,35])
8.0
编辑:在 talk page 上of wikipedia 提出所提供的算法不是确定的,实际上 scipy.stats.iqr
的方法也是可以接受的。参见确定四分位数的三种方法Here
关于python - scipy.stats 是否对 iqr 进行了错误的计算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51943661/
我想在数据框中找到一系列值的 IQR。这些值也被分组,因此我需要在数据框中找到每个组的 IQR。我有下表: Block DNAname Spot_Size Molarity Cy3_Fl
尝试在 python 中使用 pandas 查找 Excel 工作表的异常值。我能够找到第一个和第三个四分位数,但无法在不返回 NaN 的情况下减去另一个四分位数。 这是基本代码: absent =
我对 Pandas 很陌生,我正在尝试做以下事情: 我有两个数据框 comms 和 arts 看起来像这样(除了它们比其他列更长) 通讯: ID commScore 10
总的来说,我是 R 和 R 包的初学者。想问下下面的问题有没有明确的解决方法。我已经以 .csv 格式导入了我的数据,如下图所示 https://dl.dropboxusercontent.com/u
我应该使用 1.5*IQR 规则通过在函数中使用这两个方程来确定左右尾部的离群值: Q1-(1.5*IQR) Q3+(1.5*IQR) 这是我目前尝试过的: IQR.outliers (Q3+(1.5
我有一个数据框,我正在尝试在分析之前清理数据。 由于我的数据有点复杂,因此我正在使用示例数据进行试验。 A B CD 30241341 30251445 30271544 30281643 312
我正在尝试了解计算 iqr(四分位数间距)的方法。 根据 this , this和 this ,我尝试了 3 种解决方案来做到这一点。 解决方案_1 a = numpy.array([1, 2, 3,
这个问题在这里已经有了答案: Difference between del, remove, and pop on lists (14 个答案) 关闭 8 年前。 我试图从列表中删除一个项目,如果它
是否有内置的 Numpy/Scipy 函数来查找四分位数范围?我自己可以很容易地做到这一点,但是存在 mean() 基本上是 sum/len... def IQR(dist): return
我想将中位数和智商值添加到 fiddle 图中。但是,我没有找到它的论据。 import seaborn as sns sns.set_theme(style="whitegrid") tips =
如何计算1,5×IQR的上下边界值? 最佳答案 您可以使用 boxplot() 使用的 boxplot.stats() 函数: R> boxplot.stats(rnorm(100)) $stats
如何通过将变量除以 IQR 来创建变量?我已经按照如下方式完成了很长一段时间。 示例数据和代码如下: use http://www.ats.ucla.edu/stat/stata/notes/hsb2
我正在尝试定义一个函数来计算 numpy 中的 IQR。代码非常简单,但我不断收到一条错误消息,我无法弄清楚 def calculate_icq(variable): icq = 0 icq += (
我正在对数据集 [23,25,28,28,32,33,35] 进行编码 根据 wiki和 scipy doc IQR = Q3 - Q1 = 33 - 25 = 8 当我在数据集上运行 IQR 时,结
是否有内置方法可以按 IQR(即 Q1-1.5IQR 和 Q3+1.5IQR 之间的值)对列进行过滤?另外,建议使用 pandas 中任何其他可能的广义过滤。 最佳答案 据我所知,最简洁的符号似乎是由
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
我的数据框有很多列(大约 100 个特征),我想应用四分位数方法并希望从数据框中删除异常值。 我正在使用此链接 stackOverflow 但问题是上述方法无法正常工作, 正如我正在尝试的那样 Q1
根据seaborn documentation ,其箱线图方法使晶须的长度为 1.5*IQR。然而,从该文档的情节中可以看出,情况似乎并非如此。上下须不一样。此外,它似乎不是 1.5 IQR。 有人可
我是一名优秀的程序员,十分优秀!