【问题标题】:Why does dnorm() not return the standard deviation I inputted when I do sd(dnorm())?为什么 dnorm() 不返回我在执行 sd(dnorm()) 时输入的标准差?
【发布时间】:2020-04-27 09:18:23
【问题描述】:

这可能是一个愚蠢的问题,但是我不明白为什么sd(dnorm(1:100, mean=50, sd=15)) 没有将标准差返回为[1] 15.0,而不是它实际返回的[1] 0.009440673。当我使用 rnorm() sd(rnorm(100, mean=50, sd=15)) 执行此操作时,它会返回我期望的接近 15 的数字:[1] 17.00682。有人能解释一下为什么sd(dnorm(x,mean=mean,sd=sd)) 没有返回我输入到 dnorm 的标准差吗?

【问题讨论】:

  • 请查看here
  • 还有pnormqnorm。您可以花一些时间了解这四个norm 之间的区别。

标签: r gaussian normal-distribution standard-deviation


【解决方案1】:

绘制数据总是很有帮助的。如果您尝试hist(dnorm(1:100, mean=50, sd=15)),您会发现可变性非常小(见下文)。正如 MkWTF 指出的那样,这是因为dnorm 在给定指定meansd 的情况下返回值x 处的正态分布概率密度函数的值。

相比之下,rnorm 生成随机数,其概率由正态分布的概率密度函数给出,这就是为什么它允许对 SD 进行合理估计 - 生成的值遵循该分布。

我认为 dnorm/pnorm/qnorm/rnorm 的文档不是很好(作为缺乏数学背景的人),但是如果您花一些时间阅读有关这些函数的不同在线资源,并确保您了解不同的基本概念(概率密度函数、分位数、随机数生成和(累积)分布函数)的含义,随着时间的推移会变得清晰。

hist(dnorm(1:100, mean=50, sd=15))

reprex package (v0.3.0) 于 2020-01-09 创建

【讨论】:

  • 谢谢,这是有道理的,我只是对 dnorm 返回给我的东西感到困惑。
【解决方案2】:

dnorm 函数返回正态分布的密度,其中包含您给出的平均值 (50) 和标准差 (15)。

另一方面,rnorm 将在正态分布上采样 100 个数字,这就是为什么您会得到接近 15 的标准差。

【讨论】:

  • 谢谢!我的印象是 dnorm 返回的样本是正态分布而不是密度。感谢您的澄清!
猜你喜欢
  • 1970-01-01
  • 2019-03-05
  • 1970-01-01
  • 2016-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多