Функция hist
возвращает объект списка со всей информацией, необходимой для ответа на вопрос.
Я установлю начальное значение ГСЧ, чтобы сделать пример воспроизводимым.
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 бинов. density
- это вектор длины 10, каждый из которых соответствует одному из бинов.
Теперь вычислимплощадь каждого стержня путем умножения длин бинов на соответствующие плотности.
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