набор гистограмм моделирования rbeta

У меня проблемы с этой гистограммой. Я запускаю определенное количество бета-симуляций. Затем я сохраняю сумму результатов в массив. Затем я рисую массив с помощью гистограммы, которая, очевидно, распределяется как нормальная кривая. Теперь то, что я хочу сделать, это взять среднее значение и стандартное отклонение этой гистаграммы и построить на ней график соответствующего нормального распределения. это код, который я получил до сих пор:

simulation = function (n,days,alpha,beta,limsx,limdx) {
  vec= rep(NA, n)
  for (i in 1:n) {
    w=rbeta(days,alpha,beta,ncp=0)
    vec[i] = sum(limsx+w*(limdx-limsx))
  }

  hh=hist(
    vec,
    breaks=round(n/10),
    freq=TRUE,
    xlim=c(
      floor(min(vec)),
      ceiling(max(vec)),
    col="grey"
  )

  sample_mean=mean(vec)
  sample_sd=sd(vec)
  ss=sum (diff (hh$breaks)*hh$counts)

  curve(
    dnorm(
      x/(limdx-limsx),
      mean(vec),
      sd(vec),
    )*ss/(limdx-limsx),
    add=TRUE,
    col="red"
  )
}

В результате я получаю этот normal hist

Плоская линия внизу должна быть моим нормальным распределением. Может ли кто-нибудь заставить его работать и сказать мне, что я делаю неправильно?

Заранее большое спасибо и извините, если вопрос глупый: я новичок в R и работаю над диссертацией, которая должна быть скоро, поэтому я действительно не могу пройтись по всем аспектам R.


person Pezze    schedule 03.10.2014    source источник


Ответы (1)


Ваша проблема только в масштабировании!

Вам просто нужно изменить параметр freq для hist с TRUE на FALSE:

hh=hist(
vec,
breaks=round(n/10),
freq=FALSE,
xlim=c(
  floor(min(vec)),
  ceiling(max(vec)),
col="grey"

)

Поступая таким образом, вы отображаете по оси Y плотность, а не частоту (количество появления каждого бина).

person Pop    schedule 03.10.2014