问题标签 [outliers]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
80 浏览

r - 如何在 R 中表示超出比例的数据点

我正在尝试在 R 中绘制一组数据

我的 Y 比例固定为 20,因此如果我执行以下代码,最后一个数据点实际上不会在图上可见

我想通过在图上方显示一个较小的框来显示外围数据点的范围,具有独立的 Y 刻度,仅代表最后一个数据点。

有没有解决这个问题的包或方法?

0 投票
2 回答
1333 浏览

java - ELKI 和 RapidMiner 中 LOF 实施的不同结果

我已经编写了自己的 LOF 实现,我正在尝试将结果与 ELKI 和 RapidMiner 中的实现进行比较,但所有 3 都给出了不同的结果!我正在努力找出原因。

我的参考数据集是一维的,有 102 个实数值,有很多重复。我会试着把它贴在下面。

首先,RapidMiner 的实现。LOF 分数与 ELKI 和我的结果大不相同;许多人带着无限的LOF回来。这个实现是否被验证为正确的?

我的结果与 ELKI 相似,但我没有得到完全相同的 LOF 值。通过快速浏览 ELKI 源代码中的注释,我认为这可能是因为计算 k 邻域的方式不同。

在 LOF 论文中,MinPts 参数(在其他地方称为 k)指定了最小编号。包含在 k 邻域中的点数。在 ELKI 实现中,我认为他们将 k 邻域定义为精确的 k 点,而不是 k 距离或 k 不同距离内的所有点。谁能确切地确认 ELKI 是如何构建 k 邻域的?还有一个私有变量允许点本身包含在它自己的邻居中,但看起来默认不包含它。

有谁知道带有用于验证目的的 LOF 分数的公共参考数据集?

---更多细节如下---

参考:ELKI源代码在这里:

http://elki.dbs.ifi.lmu.de/browser/elki/trunk/src/de/lmu/ifi/dbs/elki/algorithm/outlier/lof/LOF.java

RapidMiner 源代码在这里:

http://code.google.com/p/rapidminer-anomalydetection/source/browse/trunk/src/de/dfki/madm/anomalydetection/evaluator/nearest_neighbor_based/LOFEvaluator.java

这是我的测试数据集:

4.32323 5.12595 5.12595 5.12595 5.12595 5.7457 5.7457 5.7457 5.7457 5.7457 5.7457 5.97766 5.97766 6.07352 6.07352 6.12015 6.12015 6.12015 6.44797 6.44797 6.48131 6.48131 6.48131 6.48131 6.48131 6.48131 6.6333 6.6333 6.6333 6.70872 6.70872 6.70872 6.70872 6.70872 6.77579 6.77579 6.77579 6.77579 6.77579 6.77579 6.77579 6.77579 6.77579 6.77579 6.77579 6.77579 6.77579 6.77579 6.77579 7.03654 7.03654 7.03654 7.03654 7.03654 7.03654 7.03654 7.03654 7.03654 7.03654 7.03654 7.03654 7.03654 7.03654 7.03654 7.10361 7.10361 7.10361 7.10361 7.10361 7.10361 7.10361 7.10361 7.15651 7.15651 7.15651 7.15651 7.15651 7.15651 7.15651 7.15651 8.22598 8.22598 8.22598 8.22598 8.5538 8.5538 8.5538 8.5538 8.5538 8.5538 8.5538 8.5538 8.5538 8.5538 8.5538 8.5538 8.5538 8.5538 8.5538 8.5538 8.5538 8.5538

例如,我得到第一个数字 (4.32323) 的以下 LOF 分数:

  • RapidMiner:无穷大(MinPts 下限/上限设置为 10,100)
  • ELKI:2.6774(k = 10 并且 distfunction/reachdistfunction 设置为默认值)
  • 我的实现:1.9531

关于我的实现正在做什么的更多细节:

  1. MinPts 是 10,所以我找到了该点的 10 个不同的邻居。所以 4.32323 的邻域实际上是 48 个点,从 5.12595 到 6.77579。
  2. 这给了我 2.45256 的 k-distinct 距离
  3. 我正在计算第一个邻居的可达距离为 1.58277
  4. 我将样本的 LRD 计算为 1/(99.9103/48)
  5. 所有 48 个邻居的 lrd(o)/lrd(p) 之和为 93.748939
  6. 除以 48 得到 1.9531 的 LOF
0 投票
1 回答
4858 浏览

python - 加快对熊猫系列的异常值检查

我正在使用不同的标准偏差标准对 pandas Series 对象进行两次通过的异常值检查。但是,我为此使用了两个循环,并且运行速度非常慢。我想知道是否有任何熊猫“技巧”来加快这一步。

这是我正在使用的代码(警告非常丑陋的代码!):

0 投票
6 回答
38534 浏览

r - 在R中的箱线图上标记异常值

我想将矩阵的每一列绘制为箱线图,然后将每个箱线图中的异常值标记为它们在矩阵中所属的行名。举个例子:

我想将每个图中的异常值(在本例中为 30)标记为它所属的行名,因此在本例中 30 属于第 7 行。有没有简单的方法可以做到这一点?我已经看到了与此问题类似的问题,但似乎没有一个按照我想要的方式工作。

0 投票
1 回答
993 浏览

r - 对 R 中的异常值 lm 具有鲁棒性

这一定是一个相当标准的问题:我有一些有错误的返回数据(它们是实际错误,而不仅仅是大返回)。我正在考虑纠正此问题的最佳方法,因此它不会影响我的回归。一种想法是简单地将极端分位数的回报设置为平均回报。另一种解决方案:lm忽略这些极端值。是否有内置的方法lm让它忽略极端值?我知道 matlab 有一个叫做 roust 回归的东西,它就是这样做的。

0 投票
1 回答
2102 浏览

gnuplot - 如何使用 gnuplot 4.6 boxplot 打印异常值?

我正在尝试使用 gnuplot 4.6 制作箱线图,但我遇到了一些问题。我试图从多个来源找到答案,但没有找到。

例如,以下命令不起作用

如果我直接绘制为 GNUPLOT 手册第 45 页中的状态,就像这样

我刚上车x=1,所有点都像'+'一样绘制,但根本没有箱线图。如果进行处理并使用烛台/晶须图,那么没关系,但我无法得到异常值......

我的原始数据如下

我怎样才能打印出异常值'o'?

0 投票
2 回答
1300 浏览

r - 为响应时间数据创建异常值函数

我正在分析来自实验的响应时间 (RT) 数据。在这些实验中,每个人完成一定数量的各种试验类型的试验。仅使用来自正确试验的 RT 数据;因此,每个受试者每个试验类型要分析的 RT 数量不同。我正在尝试创建一个异常值函数,该函数应用一个标准偏差截止值,该截止值取决于要分析的试验次数(Van Selst & Jolicoeur,1994)。例如,如果第一个受试者有 100 次 A 试验,我想计算该受试者 A 试验的平均值和标准偏差,然后应用标准偏差截止值(例如,大于平均值加或减的绝对值的试验标出的标准偏差数记为 0)。

我想使用的标准偏差截止值如下所示:

我的数据有 3 列:id(主题标识符)、ttype(试验类型)和 RT。

从本质上讲,我需要这个函数做的是:获取每个试验类型的每个受试者的 RT 平均值、SD 和试验次数,然后根据 SDout 乘以 SD 并将其添加到指 RT。最后,我想要创建一个新列的函数,其中外围试验得分为 0,“良好”试验得分为 1。

我认为实现这一点的一种方法是使用嵌套循环,其中试验类型嵌套在主题中。但是,编写这个函数超出了我的技能水平,所以我寻求帮助来创建它。如果有人有建议或提示,或实现此目的的非循环方式,我将不胜感激。

谢谢

0 投票
1 回答
494 浏览

r - 从格子图中删除异常值(splom)

我想将一些数据绘制为带有格子的散点图矩阵。但是,数据包含一些异常值。这导致主要数据的图非常压缩。我想从图中删除异常值。一个观测值可以是一个测量变量的异常值,但不能是另一个测量变量的异常值,因此矩阵中的每个散点图都需要计算要移除的异常值。由于异常值构成了大约 10,000 个观测值中的最大 10 个观测值,我正在考虑简单地删除每个变量值最低的 10 个观测值(异常值通常是那些处于更负方向的观测值)。我知道我必须修改面板功能,但我不知道该怎么做。另外,我的下面板是一个 hexbinplot,所以它也应该被修改,我希望这能以同样的方式工作。

MWE:

)

0 投票
3 回答
1550 浏览

machine-learning - 一类分类器训练

我正在研究一个分类问题,其中我只有一个类的数据,所以我想在“目标”类与“异常值”类的所有其他可能性之间进行分类。因此,我打算使用 One Class Classifier 或 LibSVM 分类器。但这里的问题是:

我需要为“异常值”类提供训练数据吗?如果是的话,有什么办法可以解决这个问题,因为我只有关于 Target 类的数据。

0 投票
1 回答
4216 浏览

r - 如何检测数据框列中的异常值?在 R 中

我有一个数据框,假设是这样的:

我想将异常值转换为 var1 和 var2 列中的 Na。但是,我想为“名称”列中的每个类别独立计算异常值。因此,var1 中“a”的异常值将是仅使用 var1 中的前 5 行发现的异常值。

我检测异常值的方式是所有值,分别低于或高于分位数 0.25 和 0.75。

在 R 中有没有简单的方法来做到这一点?

非常感谢你。

蒂娜。