【问题标题】:density/frequency and probability in hist()hist() 中的密度/频率和概率
【发布时间】:2015-09-14 11:45:43
【问题描述】:

我用过代码

hist(x, probability=TRUE)

这给了我一个从 0 到 2 的 y 轴,名称为密度。我不明白这是什么意思。它是否积分为 1,总和为 1,或者 y 值等于多少?文档说“freq = NULL,probability = !freq”,但这对我来说没有意义。如果我不使用probability=TRUE,我会在y 轴上得到Frequency,但绘图的形状是相同的。

【问题讨论】:

    标签: r histogram


    【解决方案1】:

    您可以将直方图保存到变量中并查看它。

    x=rnorm(1000)
    h<-hist(x)
    

    h
    
    $breaks
     [1] -3.5 -3.0 -2.5 -2.0 -1.5 -1.0 -0.5  0.0  0.5  1.0  1.5  2.0  2.5  3.0  3.5  4.0
    
    $counts
     [1]   2   8  24  42  87 169 188 189 146  78  38  23   5   0   1
    
    $density
     [1] 0.004 0.016 0.048 0.084 0.174 0.338 0.376 0.378 0.292 0.156 0.076 0.046 0.010 0.000 0.002
    
    $mids
     [1] -3.25 -2.75 -2.25 -1.75 -1.25 -0.75 -0.25  0.25  0.75  1.25  1.75  2.25  2.75  3.25  3.75
    
    $xname
    [1] "x"
    
    $equidist
    [1] TRUE
    
    attr(,"class")
    [1] "histogram"
    

    默认情况下,它会绘制频率(可以通过 h$counts 访问),这只是在每个间隔内获得的点数。点的总数等于向量的长度,你可以检查一下

    sum(h$counts)
    [1] 1000
    

    如果您指定probability=TRUE,它将绘制每个点在每个区间内的概率。概率总和乘以条形宽度应该等于 1。在我们的例子中,条形宽度是 0.5,所以我们得到

    sum(h$density*0.5)
    [1] 1
    

    【讨论】:

    • 如果probability=TRUE 给出了概率。每个点都在每个区间内,那么我不明白这些值如何变得大于 1(我的轴是从 0-2,值大于 1)
    • sum(h$density*0.05) 确实等于 1。
    • 如果你有一个宽度小于 1 的条形,那么密度确实可以大于 1。总概率总是计算为概率密度乘以区间长度。
    • 啊好吧,现在我明白了。所以概率。在第一个区间内获得的是 h$density[1]*0.05,第二个区间是 h$density[2]*0.05 等等。谢谢!
    最近更新 更多