生成具有Y个箱中正好N个元素的正态分布

时间:2015-01-29 17:49:49

标签: r distribution normal-distribution binning

我可能会因为没有得到这个来打击自己:

如何在 Y 区域(下面为nbins)上生成具有正常分布的预期高度的向量,具有 N 元素。

如下所示,如下图所示:

  • Y或nbins = 15
  • N或nstat = 77
  • ...应该返回类似:c(1,1,2,4,...)

example q sort

我知道我可以绘制rnorm(77),但是它永远不会完全正常,并且循环超过10,000次迭代似乎有点矫枉过正。

所以我尝试将qnorm用于此目的,但我有一种预感:

  1. sth以下代码错误
  2. 必须有一种更简单,更优雅的方式
  3. 这是我得到的:

    nbins <- 15
    nstat <- 77
    
    item.pos <- qnorm( # to the left of which value lies...
      1:(nstat) / (nstat+1)# ... the n-statement?
      # using nstat + 1 because we want midpoints, not cutoffs for later
    )
    
    bins <- cut(
      x = item.pos,
      breaks = nbins,
      ordered_result = TRUE
    )
    
    height <- summary(bins)
    height <- as.numeric(bins)
    

1 个答案:

答案 0 :(得分:1)

如果您的数据范围来自-2:2且间隔为15且样本量为77,我建议您按以下步骤获得15个区间的预期高度:

rn <- dnorm(seq(-2,2, length = 15))/sum(dnorm(seq(-2,2, length = 15)))*77
 [1] 1.226486 2.084993 3.266586 4.716619 6.276462 7.697443 8.700123 9.062576 8.700123 7.697443
[11] 6.276462 4.716619 3.266586 2.084993 1.226486

这样的情节如下:

barplot(height = rn, names.arg = round(seq(-2, 2, length = 15), 2))

enter image description here

因此,在77的样本中,您将获得1.226486中序列的第一个值,2.084993个案例中的第二个值,等等。很难生成向量你在开头描述,因为上面的序列不是由整数组成的。