我目前正在开发一种交易卡游戏(TCG)定价应用程序。它的工作是收集来自不同供应商的数据,并使用该数据来确定任何给定卡的市场价格。为了举例,让我们考虑理论卡X.
X具有多种值,具体取决于销售它的供应商。以下是其值的数组:
[1.00, 1.10, 1.05, 0.95, 2.00, 0.10]
这些值是指其美元($)值。
根据我在这个市场中作为客户的经验,我假设定价数据正常分布。定价数据倾向于倾向于一个价格,许多不同的供应商将其卡定价接近所述价格(具有竞争力),偶尔会出现异常值。
根据这些假设,我如何消除上述数据集中的异常值?乍一看,2.00美元和0.10美元似乎是异常值。但价格在市场上波动。卡片的价值飙升并反过来坦克并不罕见。
我研究了一些方法,例如使用与平均值的标准差的阈值(例如,如果价格与平均值相差> 2个标准偏差,认为它是异常值)或使用中位数绝对偏差,但是我我不确定哪种算法在我正在研究的环境中有意义。
答案 0 :(得分:2)
您不希望根据样本均值和标准差来查找异常值,因为它们都对异常值非常敏感。最好使用基于百分位数的方法。第p百分位数是这样的值,即数据的p%和(100-p)%分别≤和该值。 25 th 和75 th 百分位数,通常分别表示为Q1和Q3,也称为第一和第三四分位数。它们的差异Q3-Q1称为四分位间距(IQR)。
异常值的普遍接受的统计定义是它们是超出范围[Q1 - 1.5 * IQR,Q3 + 1.5 * IQR]的观察值。有关详细信息,请参阅statisticshowto.com或Wikipedia quartile article。
一个复杂因素是关于如何确定Q1和Q3存在不同意见。有些人认为它应该是实际观察之一,而其他人则插入。如果您使用Statistics How To's IQR calculator,则数据的两个极值都是异常值。在使用插值的JMP中,两个极端都不是异常值。这主要是稀疏数据的问题。随着数据的增加,两种方法之间的差异消失了。
基于百分位数的解决方案的真正好处是它不依赖于分布式假设。无论您的正常假设是否正确,这种方法都可以有效地运作。
答案 1 :(得分:0)
如果您要使用偏差方法,请明确使用中位数/中位数绝对偏差而不是平均值/标准差,因为该方法对异常值的确切程度要低得多。您应该在特定应用程序的上下文中试验乘数(例如,异常值是MAD的三倍)。
答案 2 :(得分:0)
您的算法选择应包括一些密度估算,给出您对价格波动的评论"。因此,整体中位数和分位数的任何度量都不应该是条目异常值的最后一个词。应将它们与邻居进行比较。
以下是Kernel Density
估算工具
https://www.r-bloggers.com/a-kernel-density-approach-to-outlier-detection/