【问题标题】:How to create a discrete normal distribution in R?如何在 R 中创建离散正态分布?
【发布时间】:2015-09-24 15:06:05
【问题描述】:

我正在尝试使用诸如

之类的东西创建离散正态分布
x <- rnorm(1000, mean = 350, sd = 20) 

但我认为rnorm 函数没有内置的“仅离散数字”选项。我花了几个小时试图在 StackOverflow、Google 和 R 文档上搜索这个,但还没有找到任何东西。

【问题讨论】:

  • 什么是“离散正态分布”?我不熟悉这种类型的分布。
  • 如果您的意思是连续分布的最佳离散近似值,我认为您必须自己编写代码。这是关于该主题的简单说明:ssc.wisc.edu/~jkennan/research/DiscreteApprox.pdf

标签: r statistics


【解决方案1】:

显然,没有离散正态分布,因为默认情况下它是连续的。但是,正如here 所述(维基百科不是最好的来源,但无论如何这是正确的):

如果 n 足够大,则分布的偏斜不会太大。在这种情况下,B(n, p) 的合理近似值由正态分布给出

通过一个简单的例子可以看出这一点:

par(mfrow=c(1,2) )
#values generated by a binomial distribution
plot(density(rbinom(1000, 30, p=0.25)))
#values generated by a normal distribution
plot(density(rnorm(1000)))

剧情:

左边的图(二项式)肯定近似于右边的(正常),这在n goes to Inf时会变得更加明显。

正如您将看到的,rbinom(1000, 30, p=0.25) 将产生离散值(整数)。此外,密度可能不是用于离散变量的最佳函数,但它证明了这一点。

【讨论】:

    【解决方案2】:

    如果您想生成一组服从正态分布的随机整数,您可以像这样简单地将它们四舍五入...

        round(rnorm(10, 5, 1), 0)
    

    【讨论】:

    • 不存在“服从正态分布的随机整数集”。
    【解决方案3】:
    library(extraDistr)
    set.seed(12)
    rdnorm(10)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-31
      • 1970-01-01
      • 2011-12-19
      • 2018-12-10
      相关资源
      最近更新 更多