簡體   English   中英

R 中的密度直方圖

[英]density histogram in R

我是 R 和概率統計的新手。 我有一個關於直方圖的問題......

hist(rbinom(10000, 10, 0.1), freq=FALSE)

它顯示了我不清楚的直方圖:

在此處輸入圖像描述

如果 y 軸是密度,那么總數應該是 %100,我錯了嗎?
但在直方圖中,我可以看到它大於 %100。

曲線下的面積應該是 1。因為你的盒子看起來有 1/2 的寬度,所以高度的總和應該是 2。為了讓這個更有意義,使用breaks hist

hist(rbinom(10000, 10, 0.1), freq=FALSE, breaks = 5)

或者甚至更好

hist(rbinom(10000, 10, 0.1), freq=FALSE, breaks=seq(-0.5,5.5,1))

直方圖

您可以整合根據您的樣本估計的密度 function。 答案大約是 1,所以沒有矛盾。

set.seed(444)

s <- rbinom(10000, 10, 0.1)
dens_s <- table(s)/sum(table(s))
sum(as.numeric(names(dens_s))*dens_s)

Function hist返回一個列表 object,其中包含回答問題所需的所有信息。

我將設置 RNG 種子以使示例可重現。

set.seed(1234)
h <- hist(rbinom(10000, 10, 0.1), freq=FALSE)

str(h)
#List of 6
# $ breaks  : num [1:11] 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 ...
# $ counts  : int [1:10] 3448 3930 0 1910 0 588 0 112 0 12
# $ density : num [1:10] 0.69 0.786 0 0.382 0 ...
# $ mids    : num [1:10] 0.25 0.75 1.25 1.75 2.25 2.75 3.25 3.75 4.25 4.75
# $ xname   : chr "rbinom(10000, 10, 0.1)"
# $ equidist: logi TRUE
# - attr(*, "class")= chr "histogram"

相關的列表成員是breaksdensity

  1. breaks是一個長度為 11 的向量,因此有 10 個 bin。
  2. density是一個長度為 10 的向量,每個對應於一個 bin。

現在通過將箱長度乘以各自的密度來計算每個條的面積。

diff(h$breaks)    # bins lengths
# [1] 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5
h$density*diff(h$breaks)
# [1] 0.3448 0.3930 0.0000 0.1910 0.0000 0.0588 0.0000 0.0112 0.0000 0.0012

總面積:

sum(h$density*diff(h$breaks))
#[1] 1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM