【发布时间】:2014-01-12 15:02:39
【问题描述】:
test <- rep(5,20)
hist(test,freq=FALSE,breaks=5)
该向量包含值 5 的 20 倍。当我使用 freq=FALSE 和 breaks=5 绘制此图时,我希望在 x=5 处看到 1 个柱,高度 = 1.0,因为值 5 占了 100%数据。
为什么我看到的是 1 个从 x=0 到 x=5 且高度 = 0.2 的条??
【问题讨论】:
test <- rep(5,20)
hist(test,freq=FALSE,breaks=5)
该向量包含值 5 的 20 倍。当我使用 freq=FALSE 和 breaks=5 绘制此图时,我希望在 x=5 处看到 1 个柱,高度 = 1.0,因为值 5 占了 100%数据。
为什么我看到的是 1 个从 x=0 到 x=5 且高度 = 0.2 的条??
【问题讨论】:
hist 绘制freq=FALSE 或prob=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")
【讨论】: