我是R和概率统计的新手。我对直方图有疑问...
page.on('console', msg => {
for (let i = 0; i < msg.args().length; ++i)
console.log(`${i}: ${msg.args()[i]}`);
});
page.evaluate(() => console.log('hello', 5, {foo: 'bar'}));
它显示的直方图如下图:
如果y轴是密度,则总数应为%100,我错了吗?
但是在直方图中,我可以看到它大于%100。
答案 0 :(得分:0)
曲线下的区域应该为1。由于您的框看起来宽度为1/2,所以高度的总和应为2。要使此意义更大,请使用{{ 1}}参数breaks
hist
也许更好
hist(rbinom(10000, 10, 0.1), freq=FALSE, breaks = 5)
答案 1 :(得分:0)
您可以积分根据样品估算的密度函数。答案大约是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)
答案 2 :(得分:0)
函数hist
返回一个列表对象,其中包含回答问题所需的所有信息。
我将设置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"
相关列表成员为breaks
和density
。
breaks
是一个长度为11的向量,因此有10个bin。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