Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中直方图中的准确箱子数_R_Statistics_Histogram - Fatal编程技术网

在R中直方图中的准确箱子数

在R中直方图中的准确箱子数,r,statistics,histogram,R,Statistics,Histogram,我在制作R中的直方图时遇到了问题。问题是我告诉它制作5个箱子,但它制作4个,我告诉它制作5个,它制作8个 data <- c(5.28, 14.64, 37.25, 78.9, 44.92, 8.96, 19.22, 34.81, 33.89, 24.28, 6.5, 4.32, 2.77, 17.6, 33.26, 52.78, 5.98, 22.48, 20.11, 65.74, 35.73, 56.95, 30.61, 29.82); hist(data, nclass = 5,f

我在制作R中的直方图时遇到了问题。问题是我告诉它制作5个箱子,但它制作4个,我告诉它制作5个,它制作8个

data <- c(5.28, 14.64, 37.25, 78.9, 44.92, 8.96, 19.22, 34.81, 33.89, 24.28, 6.5, 4.32, 2.77, 17.6, 33.26, 52.78, 5.98, 22.48, 20.11, 65.74, 35.73, 56.95, 30.61, 29.82);

hist(data, nclass = 5,freq=FALSE,col="orange",main="Histogram",xlab="x",ylab="f(x)",yaxs="i",xaxs="i")

data指定为
nclass
参数的整数用作建议:

这个数字只是一个建议

另一种解决方案是
将向量切割成指定数量的组,并绘制结果:

plot(cut(data, breaks = 4))

使用breaks参数:

hist(data, breaks=seq(0,80,l=6),
       freq=FALSE,col="orange",main="Histogram",
       xlab="x",ylab="f(x)",yaxs="i",xaxs="i")

如果您不反对使用基本图形以外的其他图形,那么总会有ggplot2的做法:

图书馆(GG2)


数据基于Rob Hyndman的答案:

也许一个更通用的解决方案是考虑数据的最小值和最大值进行中断,并且中断的数量=箱的数量+1

hist(data,breaks=seq(min(data),max(data),l=number_of_bins+1), 
     freq=FALSE,col="orange",
     main="Histogram",xlab="x",ylab="f(x)",yaxs="i",xaxs="i")

我希望我的数据点非常准确:

hist(data,breaks = seq(min(data),max(data),by=((max(data) - min(data))/(length(data)-1))))

这将使过程自动化,只需少量手动输入。

谢谢!这对于比较频率分布或PDF也很有用。by=参数应该除以长度(数据),而不是长度(数据)-1
hist(data,breaks = seq(min(data),max(data),by=((max(data) - min(data))/(length(data)-1))))