2016-07-29 104 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

相關問題