在数字数据集中查找“异常值”

root66

我想比较(按排序)增长率和不利的高增长率,而起点值很低。

例子:

1.开始:1.000.000结束:1.100.000增长:+ 10%

  1. 开始:100.000结束:120.000增长:+ 20%

3.开始:1结束:10增长:+ 900%

  1. 开始:10结束:15增长:+ 50%

仅按增长排序,降序将得出:900%(3。),50%(4。),20%(2。),10%(1.)

但我想拥有:20%(2。),10%(1。),900%(3。),50%(4.),因为在我的情况下,3.和4.是统计离群值。

解决此问题的最佳方法是什么?我必须为起始值定义一个阈值吗?

谢谢!

亚历山大·贝尔

根据您提供的描述,问题可以分为2个:

  1. Statistical Outliers从数据集中查找和排除
  2. 以降序(或任意顺序)对结果值进行排序

有关使用Microsoft Excel的第一个问题和示例的一般解决方案,请参见:Microsoft Excel工作表中的统计异常值检测http://www.codeproject.com/Tips/214330/Statistical-Outliers-detection)。以下是一些理论知识以及与您的案例有关的样本。

可以通过计算每个数字的偏差(表示为“ Z分数”或“修改后的Z分数”)并针对特定的预定义阈值进行测试来找到数据集中的“离群值”。Z分数通常是指相对于统计平均值的标准偏差数(换句话说,以“ Sigmas”为单位)。修改后的Z评分应用中值计算技术来测量偏差,并且在许多情况下提供了更可靠的离群值统计检测。数学上,修改后的Z分数可以写为(如IglewiczHoaglin所建议-参见参考文献):

Mi = 0.6745 * (Xi - Median(Xi)) / MAD,

MAD代表中位数绝对偏差。数据集中修改Z分数的绝对值超过3.5的任何数字均被视为“异常值”。修改的Z得分可用于检测Microsoft Excel工作表中与您的案例有关的异常值,如下所述。

步骤1.打开一个Microsoft Excel工作表,并在单元格A1,A2,A3和A4中输入以下值:900%,50%,20%和10%。

步骤2.在C1中输入公式:=MEDIAN(A1:A4)此单元格中的值对应于在步骤1输入的数据集上计算出的中位数。

步骤3.在C2中,输入数组公式:{=MEDIAN(ABS(MEDIAN(A1:A4)-A1:A4))}提醒一下,要输入数组公式,请选择单元格,在Excel公式栏中键入公式,然后单击组合:CTRL-SHIFT-ENTER(请注意表达式周围的花括号表示数组公式) 。此单元格(C2)中的值对应于MAD。

步骤4.=IF((0.6745*ABS(C$1-A1)>3.5*C$2), "OUTLIER", "NORMAL")在B列的第一行中输入公式:并将其向下扩展到第四行。“离群值检测”的最终结果应出现在B列中。

A       B           C
900%    OUTLIER     35%
50%     NORMAL      0.35
20%     NORMAL  
10%     NORMAL  

因此,值900%被发现为“异常值”,而其他值都可以。对结果集进行排序将只是一项琐碎的任务。

包含Excel工作表示例,以使说明更加清晰。该算法本身可以用任何编程语言(VBA,C#,Java等)实现。希望这会有所帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

修复从数据集中查找和删除异常值的功能

来自分类Dev

从SAS数据集中删除异常值

来自分类Dev

在数据集中查找数据

来自分类Dev

从正弦数据中查找异常值

来自分类Dev

R-从数据集中删除所有异常值

来自分类Dev

使用Numpy查找并打印数据的异常值

来自分类Dev

在数字数组中查找不连续的元素:Ruby

来自分类Dev

在组中查找“异常值”

来自分类Dev

在SQL中查找异常值

来自分类Dev

在R数据帧或向量中查找非数字数据

来自分类Dev

在数据集中查找具有特定值的列的索引

来自分类Dev

使用字典在数据集中查找条目

来自分类Dev

如何在数据集中查找和排序重复项

来自分类Dev

在数据集中查找具有主键值的行

来自分类Dev

使用z分数查找异常值

来自分类Dev

查找异常值并计算发生次数

来自分类Dev

Python:在列表中查找异常值

来自分类Dev

使用重复循环查找多个异常值?

来自分类Dev

当Python中存在数字数据时,如何解决TypeError:'No No Numeric Data to Plot'

来自分类Dev

如何使用Rails在数据库中存储数字数组

来自分类Dev

Python从数据中删除异常值

来自分类Dev

替换大数据中的异常值

来自分类Dev

从训练数据中删除异常值

来自分类Dev

用熊猫在数字列中查找数据更改

来自分类Dev

用熊猫在数字列中查找数据更改

来自分类Dev

在数据集中分割

来自分类Dev

验证数字数据Javascript

来自分类Dev

验证数字数据Javascript

来自分类Dev

使用linq使用唯一的列名列表在数据集中查找DataTable(Name)