2016-07-29 61 views
1

我试着查看一些其他的答案,但有些困惑。试图将正态分布曲线添加到ggplot中,但它不起作用

我有一些样本数据的直方图,其图表可以。为了比较起见,我试图在其上覆盖正态分布曲线。我正在使用ggplot。我正在尝试为曲线使用stat_function,并且它不会显示。

这部分可能听起来令人困惑,但是stat_function中的两个参数应该独立于底层直方图,还是其中一个必须是相同的。我只是看一些其他示例代码,在这种情况下,它看起来像他们使用直方图的意思,并且sd被声明(反之亦然)。 enter image description here

这里是我的代码:

sim_cnt<-1000 
lambda<-.2 
samp_sz<-40 
set.seed(222) 
mn<-1/lambda 
st_dv<-1/lambda 
mns<-sapply(1:sim_cnt,function(x){mean(rexp(samp_sz,lambda))}) 

library(ggplot2) 

g<-ggplot(data=data.frame(mns), aes(x=mns))+ geom_histogram(binwidth=.3, fill="red", color="green")+geom_vline(xintercept=mean(mns),size =1, col="black")+labs(x="Means")+ggtitle("Sample Distribution")+stat_function(fun=dnorm, color="pink",args=list(sd=.7905694,mean=5)) 
g 
+0

这不是重复。另一个是使用底层数据。这是使用比较数据。 – David

回答

0

我改变了红色和绿色的你,因为红绿色盲是最常见的遗传性色盲。我将计数乘以.3,以便密度图的带宽与直方图带宽的带宽相匹配。

g<-ggplot(data=data.frame(mns), aes(x=mns))+ 
    geom_histogram(binwidth=.3, fill="red", color="blue")+ 
    geom_vline(xintercept=mean(mns),size =1, col="black")+ 
    labs(x="Means")+ ggtitle("Sample Distribution") 
g + stat_density(aes(y = .3 * ..count..), geom = "line", 
       color = "blue", size = 1) 

enter image description here

+1

谢谢。这是一个开始。我很关心曲线的“整体性”,我猜是哪个来自乘以数。不确定。任何方式让曲线平滑?曲线不应该使用直方图的数据,而只是显示正态分布曲线,以便我可以将其与直方图进行比较。 – David

+0

啊,分配不是密度。这个密度图的块度是由于你的程序的采样变化。我犯这个错误的原因是你绘制了一个计数直方图而不是频率。既然你这样做,它就会比较正常密度,它的y值小于0.5。你会在其他重复问题的解决方案中注意到这一点。 – shayaa

+0

我看着重复的一个,但它似乎希望将基础数据的曲线放在底层数据的直方图上,这不是我正在做的。另外,我从我的任务中的一个错误中看出理论标准偏差被列为错误。它应该是0.7905694,而不是5.底层数据的sd是0.808。 – David

相关问题