我想比较(按排序)增长率和不利的高增长率,而起点值很低。
例子:
1.开始:1.000.000结束:1.100.000增长:+ 10%
3.开始:1结束:10增长:+ 900%
仅按增长排序,降序将得出:900%(3。),50%(4。),20%(2。),10%(1.)
但我想拥有:20%(2。),10%(1。),900%(3。),50%(4.),因为在我的情况下,3.和4.是统计离群值。
解决此问题的最佳方法是什么?我必须为起始值定义一个阈值吗?
谢谢!
根据您提供的描述,问题可以分为2个:
Statistical Outliers
从数据集中查找和排除有关使用Microsoft Excel的第一个问题和示例的一般解决方案,请参见:Microsoft Excel工作表中的统计异常值检测(http://www.codeproject.com/Tips/214330/Statistical-Outliers-detection)。以下是一些理论知识以及与您的案例有关的样本。
可以通过计算每个数字的偏差(表示为“ Z分数”或“修改后的Z分数”)并针对特定的预定义阈值进行测试来找到数据集中的“离群值”。Z分数通常是指相对于统计平均值的标准偏差数(换句话说,以“ Sigmas”为单位)。修改后的Z评分应用中值计算技术来测量偏差,并且在许多情况下提供了更可靠的离群值统计检测。数学上,修改后的Z分数可以写为(如Iglewicz和Hoaglin所建议-参见参考文献):
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] 删除。
我来说两句