为什么 dnorm() 不是 return 我在执行 sd(dnorm()) 时输入的标准偏差?

Why does dnorm() not return the standard deviation I inputted when I do sd(dnorm())?

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

dnorm 函数 returns 正态分布的密度,均值 (50) 和标准差 (15) 您给的。

另一方面,rnorm 将在正态分布中抽取 100 个数字,这就是标准差接近 15 的原因。

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

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

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

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

reprex package (v0.3.0)

于 2020-01-09 创建