2016-01-23 66 views
0

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

所以通常{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

这个编程如何相关?为什么结果50? – Amit

+0

我需要编写一个C++函数来计算它。这个数字是50,因为我需要最频繁的数字,只有很小的变化。所以,虽然我找不到最频繁的数字,我可以找到最“附近的邻居” – Malu05

+0

我投票结束这个问题作为题外话。阅读[问]。 – Amit

回答

1

有多种方法去了解这一点。 (1)最仔细,确切的方法是假设观测值的概率模型,并寻找推断值的模式(作为期望值或最可能或其他标准)。我会猜测在这种情况下这是太多的工作,尽管给予无限的时间,我肯定会想这样做。 (2)构造直方图,并查找具有最大密度(密度=(#单元中的单元格)/(单元的宽度))的垃圾箱。这并不一定产生单一的价值。 (3)拟合观测值的参数分布,并报告拟合分布的模式。

您可能会在stats.stackexchange.com上为此问题获得更多的支持。祝好运并玩得开心点。

编辑:看你的例子代码后,我发现它与(2)以上没有太大的不同。这似乎是一个合理和可行的方法。