0

好的,所以场景是这样的:

我问一个问题“你每周在食物上花多少钱?”

在指定数量的贡献后,假设 100 我想扫描结果,并找到明显的虚假结果。所以说平均值是 80 英镑,但是一些 numty 投入了 1 的价值,而其他人投入了 10,000 英镑。

要求是不对输入的数据进行验证,而是动态分析数据并确定数据的有效范围,在数据库的统计更新期间从结果中剔除异常值。

使用 Rails 3.2、ActiveRecord 和 Postgresql 实现这一目标的最佳方法是什么?

4

2 回答 2

2

消除错误结果的一个好方法是计算标准偏差。您可以使用 posttgres 执行此操作:

SELECT stddev(amount) FROM answers

然后,您可以查看答案是否超出此范围,并在需要时删除。

请注意,这总是会删除一些答案,所以如果你不期待任何 numties,那么不要这样做。

于 2012-09-18T11:59:20.370 回答
1

所以说平均值是 80 英镑,但是一些 numty 投入了 1 的价值,而其他人投入了 10,000 英镑。

假设有人投入了 117 英镑。那是异常值吗?127 英镑呢?137 英镑?

识别异常值是一项统计工作,而不是真正的数据库工作。只有当数据库返回所有相关数据时,您才能做好这项工作。如果您正在用 Ruby 编写统计软件,那么我会说这是 Ruby 的工作(Ruby 程序员的工作)来帮助您确定哪些值是异常值,哪些不是。

确定了哪些值是异常值后,很容易从计算中消除它们,方法是运行时排除,或者再次运行查询,范围如amt_spent >= 53 and amt_spent <= 117. 但是考虑更强大的统计技术,这些技术不受异常值的影响很大。

您也可以从数据库中删除这些行,但这可能会产生误导。我自己从不这样做。

异常值检测

于 2012-09-18T13:28:29.783 回答