【问题标题】:Most frequent value in dataset (with variation) [closed]数据集中最常见的值(有变化)[关闭]
【发布时间】:2016-04-30 03:36:27
【问题描述】:

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

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

【问题讨论】:

  • 这个编程有什么关系?为什么结果是 50?
  • 我需要写一个c++函数来计算它。这个数字是 50,因为我需要最频繁的数字,略有不同。因此,虽然我找不到最频繁的数字,但我可以找到“附近邻居”最多的数字
  • 我投票结束这个问题作为题外话。阅读How to Ask
  • @Amit 添加了一些伪代码来显示我想要做什么。
  • @duffymo 我可以看出这个问题并不完全是关于编程的,但它远非荒谬。

标签: c++ math statistics average


【解决方案1】:

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

(1) 最谨慎、最准确的方法是假设观测值的概率模型,并寻找推断值的模式(作为预期值或最可能或其他标准)。我猜在这种情况下这工作量太大了,尽管如果有无限的时间,我当然希望以这种方式处理它。

(2) 构建直方图,并寻找密度最大的 bin(其中密度 = (#items in bin)/(width of bin))。这不一定会产生单个值。

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

您可能会在 stats.stackexchange.com 上对这个问题获得更多关注。祝你好运,玩得开心。

编辑:查看您的示例代码后,我发现它与上面的 (2) 没有太大区别。这似乎是一种合理可行的方法。

【讨论】:

    猜你喜欢
    • 2018-06-07
    • 1970-01-01
    • 1970-01-01
    • 2019-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-18
    • 1970-01-01
    相关资源
    最近更新 更多