数据集中最常见的值(带变化)

时间:2016-01-23 15:30:05

标签: c++ math statistics average

这是一个部分编程,部分统计数学问题。 我有一个数据集,我想获得最频繁的数字(模式),问题是我处理的是略有变化的值。

通常{1,2,50,50,90},最常见的数字是50

但在我的情况下,数字看起来像这样: {1,2,49,50,51,90}但结果仍为50

所以我的问题是如何有效地计算这个数字,这个数字是否有一个统计术语?

一些伪代码:

Float items.val[] = {1,2,49,50,51,90};
Float threshold = 4;
For (item in items) {
    For (subitem in items){
           Float dist=Distance(time,subitem)
           If (dist < threshold){
                 item.dist += dist
           }
     }
}
Output=Sort(item.dist)[0]

1 个答案:

答案 0 :(得分:1)

有很多方法可以解决这个问题。

(1)最谨慎,准确的方法是假设观察值的概率模型,并寻找推断值的模式(作为预期值或最可能或其他一些标准)。在这种情况下,我会猜测这是太多的工作,虽然无限时间,我当然希望以这种方式接近它。

(2)构造直方图,并寻找具有最大密度的bin(密度=(bin中的#items)/(bin的宽度))。这不一定会产生单一价值。

(3)将参数分布拟合到观测值,并报告拟合分布的模式。

您可以在stats.stackexchange.com上获得更多关于此问题的信息。祝你好运,玩得开心。

编辑:看了你的示例代码后,我发现它与上面的(2)没有什么不同。这似乎是一种合理可行的方法。