gpt4 book ai didi

algorithm - 在数字数据集中查找 'Outliers'

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:11:37 26 4
gpt4 key购买 nike

我想比较(排序)增长率和不利的高增长率以及非常低的起始值。

例子:

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. 从数据集中查找并排除统计异常值
  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。

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

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

因此,值 900% 被认为是“离群值”,而其他值则正常。对结果集进行排序将只是一项微不足道的任务。

为了解释清楚起见,包含了 Excel 工作表示例。算法本身可以用任何编程语言(VBA、C#、Java 等)实现。希望这会有所帮助。

关于algorithm - 在数字数据集中查找 'Outliers',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27953724/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com