使用 curve() 和 dnorm() 叠加直方图

Using curve() and dnorm() to overlay histogram

我需要使用 curve()dnorm() 在直方图上叠加正态分布。 dnorm 不应该有我的数据的参数,而是 mean = 0 和 sd = 5 的广义正态分布。

使用这个网站和很多教程,我希望代码是

hist(mtcars$mpg)
curve(dnorm(x, 0, 5), add= TRUE, col="red")

但我得到的只是一条平线。如果我使用一个独立的例子,省略 add=TRUE 我得到所需的密度函数:

curve(dnorm(x, 0, 5), col="red")

有人知道我犯了什么错误吗?

在数据范围(10-35)内,均值0、SD为5的正态分布(即曲线starts 大约在分布的 95% 置信区间的上端)。

如果我们将 freq= FALSE 添加到 hist() 调用(如果您想将概率分布与直方图进行比较,这是合适的),我们可以在开始(如果你想让尾巴更明显,你也可以乘以一个常数)。 (显示更合理的均值分布 [蓝线]。)

## png("tmp.png"); par(las=1, bty="l")
hist(mtcars$mpg, freq=FALSE)
curve(dnorm(x, 0, 5), add = TRUE, col = "red")
curve(dnorm(x, 20, 5), add = TRUE, col = "blue")
## dev.off()

从图形上看,如果您 shaded the area under the Normal distribution curve

,这可能 clearer/more 很明显