如何根据单独变量的 bin 识别一个变量的最大值

How to identify max value of one variable based on bins of a separate variable

我看到了一些分箱问题,但还没有找到解决这种情况的方法。在 group_by 条件下,我试图确定模式,但挑战在于模式应考虑每个观察值(行)的数量,如另一列所定义。

在我的数据中,每一行代表给定时间的一次观察,一列有 speed 而另一列有 quantity 值。如果我 运行 关于 speed 的统计数据,它会忽略每次观察期间的实际 quantityspeed 是一个连续变量,所以我知道我要分箱(比如 0-80 以 5 为增量),然后对每个分箱的 quantity 求和,最后报告 speed 具有最高数量的 bin(将在单独计算中使用的值)。

bin 标签最好是中点(45-50 将列为 47.5)。这将是 运行 通过一组观察。

我看过 count(cut_width()) 但这只是观察计数,不确定如何找到最大数量。谢谢。

我的一些同事在这方面提供了一些很好的方向,我在网上找到了更多的内容。最好的方法之一是寻找允许权重影响分布的 kde 或密度函数。在我的例子中,我根据每次速度观察所观察到的车辆数量(数量)分配了一个权重。

那个方向把我带到了这里:https://rmflight.github.io/post/finding-modes-using-kernel-density-estimates/

其中有一个很好的方法可以从密度函数中找到众数,所以我只是修改了密度条件来增加权重,然后设置一个bin width。

density_estimate <- density(data.calc$Speed, weights=data.calc$Quantity, bw=1) 

然后是来自 github 站点的其余代码

mode_value <- density_estimate$x[which.max(density_estimate$y)]
mode_value

我的数据是按组评估的,所以我将其置于循环中(我知道人们不喜欢这种循环)并且能够按不同的时间间隔评估模式。也许这一切都是显而易见的,但我仍在学习并且很高兴发现这种方法有效。