【发布时间】:2018-03-22 21:39:48
【问题描述】:
我最近开始使用 R,但我认为我不太了解 hist() 函数。我目前正在使用长度为 296 的数字向量,我想将它分成 10 个相等的间隔,并生成一个频率直方图以查看哪些值属于每个间隔。我认为hist(dataset, breaks = 10) 可以完成这项工作,但它却将其分成 12 个间隔。我显然误解了breaks 的作用。
如果我想在直方图中将数据分成 10 个区间,我应该怎么做?谢谢。
【问题讨论】:
我最近开始使用 R,但我认为我不太了解 hist() 函数。我目前正在使用长度为 296 的数字向量,我想将它分成 10 个相等的间隔,并生成一个频率直方图以查看哪些值属于每个间隔。我认为hist(dataset, breaks = 10) 可以完成这项工作,但它却将其分成 12 个间隔。我显然误解了breaks 的作用。
如果我想在直方图中将数据分成 10 个区间,我应该怎么做?谢谢。
【问题讨论】:
根据documentation,如果你给breaks 参数一个数字,它会被视为一个建议,因为它给pretty 断点。如果你想强制它是 10 个等间距的 bin,最简单的可能是以下,
x = rnorm(50)
hist(x, breaks = seq(min(x), max(x), length.out = 11))
长度应为n+1,其中n 是所需的箱数。
【讨论】:
如果你阅读help(hist)你会发现这个解释:
中断:以下之一:
• 给出直方图单元格之间断点的向量,
• 计算断点向量的函数,
• 给出直方图单元格数量的单个数字,
• 一个字符串,命名一个算法来计算 单元格数量(参见“详细信息”),
• 计算单元数的函数。
在最后三种情况下,数字只是一个建议;作为 断点将设置为“漂亮”值,数字是 限于“1e6”(如果它更大,则会发出警告)。如果 “breaks”是一个函数,“x”向量作为 唯一的论点(而且中断的次数是有限的
所以帮助明确指出,如果您为函数提供一个数字,它将仅用作建议。
一种可能的解决方案是自己提供断点,如下所示:
x <- rnorm(296)
hist(x, breaks=c(-4,-3,-2,-1,0,1,2,3,4,5))
如果您不想这样做,而是想指定垃圾箱的数量,您可以使用cut 函数
plot(cut(x, 10))
【讨论】: