【问题标题】:Overlay a Normal curve to Histogram将正态曲线叠加到直方图
【发布时间】:2019-11-24 16:53:15
【问题描述】:

我在 n=100、mean=100 和 sd=25 的情况下重复 50 次 rnorm。然后我绘制所有样本均值的直方图,但现在我需要在直方图上叠加一条正态曲线。

x <- replicate(50, rnorm(100, 100, 25), simplify = FALSE)
x
sapply(x, mean)
sapply(x, sd)

hist(sapply(x, mean))

你知道如何在均值直方图上叠加一条正态曲线吗?

谢谢

【问题讨论】:

    标签: r statistics


    【解决方案1】:

    当我们通过设置freq=FALSE 绘制密度而不是频率直方图时,我们可能会用均值的平均值覆盖正态分布的curve。对于curvexlim,我们使用range 的手段。

    mean.of.means <- mean(sapply(x, mean))
    r <- range(sapply(x, mean))
    
    v <- hist(sapply(x, mean), freq=FALSE, xlim=r, ylim=c(0, .5))
    curve(dnorm(x, mean=mean.of.means, sd=1), r[1], r[2], add=TRUE, col="red")
    

    也可以画出足够数量的正态分布,用linesdensity分布覆盖直方图。

    lines(density(rnorm(1e6, mean.of.means, 1)))
    

    注意,我在回答中使用了 500 个平均值,因为如果值太少,与正态分布的比较可能会变得毫无意义。但是,您可以在histogram 函数中使用breaks= 选项。

    数据

    set.seed(42)
    x <- replicate(500, rnorm(100, 100, 25), simplify = FALSE)
    

    【讨论】:

    • 我注意到了反对票。我的回答有问题吗?请告诉我可能需要改进的地方。
    最近更新 更多