在 R 中格式化直方图

Formatting histograms in R

我正在尝试将方差伽玛分布拟合到 1 分钟对数 returns 的经验数据。为了可视化结果,我绘制了 2 个直方图:经验的和理论的。 (a是经验数据的向量)

SP_hist <- hist(a, 
                col = "lightblue", 
                freq = FALSE, 
                breaks = seq(a, max(a), length.out = 141), 
                border = "white", 
                main = "", 
                xlab = "Value", 
                xlim = c(-0.001, 0.001))

hist(VG_sim_rescaled, 
     freq = FALSE, 
     breaks = seq(min(VG_sim_rescaled), max(VG_sim_rescaled), length.out = 141), 
     xlab = "Value", 
     main = "", 
     col = "orange", 
     add = TRUE)

(经验直方图-蓝色,理论直方图-橙色)

然而,在绘制了 2 个直方图之后,我开始想知道两件事:

  1. 我在两个直方图中都指出,freq = FALSE。因此,y 轴应在 (0, 1) 范围内。在实际图片中,y 轴上的值超过 3,000。这怎么可能发生?如何解决?
  2. 我需要更改桶大小(桶的宽度)和 x 轴的每单位长度密度。如何完成这些任务?

感谢您的帮助。

freq=FALSE表示将整个直方图的面积归一化为1。由于您的 x-axis 的范围非常小(大约 10^(-4)),因此 y-values 必须非常大才能达到一个面积(= x 乘以 y)。

设置 bin 数量的唯一方法是向参数 breaks 提供断点向量。理论上这个参数也接受单个数字,但是这个数字被hist忽略了。因此,请尝试以下操作:

bins <- 6   # number of cells
breaks <- seq(min(x),max(x),(max(x)-min(x))/bins)
hist(x, freq=FALSE, breaks=breaks)