гистограмма плотности в R - PullRequest
       13

гистограмма плотности в R

1 голос
/ 22 сентября 2019

Я новичок в R и вероятности и статистики.У меня есть вопрос, касающийся гистограмм ...

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

показывает гистограмму следующую диаграмму, которая мне не ясна:

enter image description here

если ось y является плотностью, поэтому общее число должно быть% 100, я не прав?
Но на гистограмме я вижу, что она больше, чем% 100.

Ответы [ 3 ]

0 голосов
/ 23 сентября 2019

Вы можете интегрировать функцию плотности, рассчитанную на основе вашего образца.Ответ примерно 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)
0 голосов
/ 23 сентября 2019

Функция 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.

  1. breaks - это вектор длины 11, поэтому существует 10 бинов.
  2. 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
0 голосов
/ 22 сентября 2019

Область под кривой должна равняться 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))

Histogram

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...