【问题标题】:How to identify max value of one variable based on bins of a separate variable如何根据单独变量的箱识别一个变量的最大值
【发布时间】:2019-12-15 03:42:15
【问题描述】:

我看到了一些分箱问题,但还没有看到解决此案例的方法。在 group_by 条件下,我试图识别模式,但挑战在于模式应该考虑每个观察(行)的数量,由另一列定义。

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

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

我见过count(cut_width()),但这只是观察次数,不知道如何找到最大数量。谢谢。

【问题讨论】:

  • 从示例中不清楚代码的开始和结束位置。我相信第 2 行和第 3 行是输入的?
  • 另外,data.frame(speed = 0:80, value = runif(10)) 你希望它工作吗
  • 你有一些包混淆...group_bydplyr,但ddplyplyr。在dplyr 之后加载plyr 将掩盖dplyr 功能并导致问题。我强烈建议使用dplyr
  • 您的代码使用列名value,而您的文本引用quantity。如果这些是相同的,请编辑以保持一致性。
  • 嗯,代码很好,因为它有示例数据。你至少能保持这种状态吗?很高兴展示您尝试过的内容,但您的行的顺序是无稽之谈 - 您将 group_by() %>% 输入到一个独立的行中。

标签: r mode bin


【解决方案1】:

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

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

从密度函数中找到众数的方法很好,所以我只修改了密度条件添加权重,然后设置了一个bin宽度。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-15
    • 2021-08-15
    • 2021-06-14
    • 2020-07-03
    相关资源
    最近更新 更多