2014-10-03 141 views
0

我有這個直方圖的一些問題。 我正在運行一定數量的beta模擬。然後我將結果的總和存儲到一個數組中。然後我用直方圖繪製陣列,顯然它是以正常曲線分佈的。現在我想要做的是取這個組合的平均值和標準偏差,並在其頂部繪製相應的正態分佈。 這是我走到這一步,代碼:一套rbeta模擬直方圖

simulation = function (n,days,alpha,beta,limsx,limdx) { 
    vec= rep(NA, n) 
    for (i in 1:n) { 
    w=rbeta(days,alpha,beta,ncp=0) 
    vec[i] = sum(limsx+w*(limdx-limsx)) 
    } 

    hh=hist(
    vec, 
    breaks=round(n/10), 
    freq=TRUE, 
    xlim=c(
     floor(min(vec)), 
     ceiling(max(vec)), 
    col="grey" 
) 

    sample_mean=mean(vec) 
    sample_sd=sd(vec) 
    ss=sum (diff (hh$breaks)*hh$counts) 

    curve(
    dnorm(
     x/(limdx-limsx), 
     mean(vec), 
     sd(vec), 
    )*ss/(limdx-limsx), 
    add=TRUE, 
    col="red" 
) 
} 

結果我得到這個normal hist

上平線下方的應該是我的正態分佈。 任何人都可以使它工作,並告訴我我做錯了什麼?

預先感謝您非常多,對不起,如果這個問題是愚蠢的:我與R和做我的論文即將到期,但一個初學者,所以我真的不能通過R

回答

1

的每一個環節去你的問題只是縮放!

你只需要的histfreq參數從TRUEFALSE改變:

hh=hist(
vec, 
breaks=round(n/10), 
freq=FALSE, 
xlim=c(
    floor(min(vec)), 
    ceiling(max(vec)), 
col="grey" 

通過這樣做,你在Y軸曲線密度,而不是頻率(數每個箱的外觀)。