r语言 - 简单的直方图错误


test <- rep(5,20)
hist(test,freq=FALSE,breaks=5)

向量包含值 5 的 20 倍。当我用 freq=FALS E 绘制此图时,breaks=5我希望在 x=5 处看到 1 个柱线,高度 = 1.0,因为值 5 占数据的 100%。

为什么我看到 1 根柱线的范围从 x=0 到 x=5 并且高度 = 0.2 ??

hist绘制了freq=FALSEprob=TRUE时概率密度的估计值,因此直方图中条形的总面积总为 1。 由于绘制的单个条的水平范围为 (0,5),因此高度必须为 0.2 (5*0.2=1)

如果你真的想要你期望的直方图(即高度对应于计数的分数,面积不一定总和为 1),你可以这样做:

 h <- hist(test,plot=FALSE)
 h$counts <- h$counts/length(test)
 plot(h)

另一种可能性是强制条形宽度等于 1.0,例如

 hist(test,freq=FALSE,breaks=0:10)

或者也许你想要

 plot(table(test)/length(test))

 plot(table(test)/length(test),lwd=10,lend="butt")

?另请参阅:如何使用 hist 绘制 R 中的相对频率?

最新更新