gpt4 book ai didi

r - R中的等频和等宽分箱

转载 作者:行者123 更新时间:2023-12-04 12:16:13 35 4
gpt4 key购买 nike

给定一个数据集,我想使用等频分箱和等宽分箱将其划分为 4 个分箱,如 here 所述,但是我想用R语言。

数据集:

0, 4, 12, 16, 16, 18, 24, 26, 28

我试图为等宽分箱编写一些代码,但它只会生成一个直方图。
bins<-4;
minimumVal<-min(dataset)
maximumVal<-max(dataset)
width=(maximumVal-minimumVal)/bins;
edges = minimumVal:width:maximumVal;
hist(dataset, breaks = "Sturges", freq = TRUE, xlim = range(edges))

我是 R 的新手。

最佳答案

对于等宽分箱,我建议使用 classInt包裹:

dataset <- c(0, 4, 12, 16, 16, 18, 24, 26, 28)

library(classInt)
classIntervals(dataset, 4)
x <- classIntervals(dataset, 4, style = 'equal')

要使用中断,您可以查看 x$brks .

至于等频分箱,您可以使用相同的包,带有选项 style = 'quantile' :
classIntervals(dataset, 4, style = 'quantile')

由于 dataset 中的重复值,它不会在大小完全相同的 bin 中分开(16) 并且因为数据集根本不能完全分成 4 个具有严格相同元素数量的 bin,因为它有 9 个元素。我不知道这是否是一个问题,因为在提供的引用中,它说

"... each group contains approximately same number of values."



由于您没有明确说明您正在寻找的确切方法,我建议引用 this post对于另一种方法,在您的示例中,它将是:
library(Hmisc)
table(cut2(dataset, m = length(dataset)/4))

此外,上面建议的链接中的其他帖子提供了其他替代方法以及有关这些方法的一些相关讨论。

关于r - R中的等频和等宽分箱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42037740/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com