使用 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 很明显
我需要使用 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 很明显