【问题标题】:find ranges to create Uniform histogram查找范围以创建统一直方图
【发布时间】:2014-12-19 04:18:26
【问题描述】:

我需要找到范围以创建统一直方图

即:年龄 到 4 个范围

data_set = [18,21,22,24,27,27,28,29,30,32,33,33,42,42,45,46]

有没有一个函数可以给我范围,所以直方图是统一的?

在这种情况下

ranges = [(18,24), (27,29), (30,33), (42,46)]

这个例子很简单,我想知道是否有一个算法也可以处理复杂的数据集

谢谢

【问题讨论】:

    标签: sql r statistics


    【解决方案1】:

    您正在寻找能够平均划分数据的分位数。这与cut结合应该可以工作。所以,假设你想要n 组。

    set.seed(1)  
    x <- rnorm(1000)  # Generate some toy data
    n <- 10
    uniform <- cut(x, c(-Inf, quantile(x, prob = (1:(n-1))/n), Inf)) # Determine the groups
    plot(uniform)
    

    编辑:现在更正以在末端产生正确的切割。

    Edit2:我不太理解反对票。但这也适用于您的示例:

    data_set = c(18,21,22,24,27,27,28,29,30,32,33,33,42,42,45,46)
    n <- 4
    groups <- cut(data_set, breaks = c(-Inf, quantile(data_set, prob = 1:(n-1)/n), Inf))
    levels(groups)
    

    有一些小的重命名必需品。对于稍微好一点的级别名称,您还可以输入 min(x)max(x) 而不是 -InfInf

    【讨论】:

      猜你喜欢
      • 2019-04-11
      • 2013-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多