2016-11-22 36 views
0

伽馬CDF擬合點我有一系列的情節看起來像這樣的:可以用Python或R

Python代碼:

a = np.array([4,4,4,4,5,5,5,6,6,6,6,6,6,6,7,7,7,8,8,8,9]) 
b = np.array([i/len(a) for i in range(1, len(a)+1)]) 
pl.plot(a,b, 'ro') 

R代碼裏面:

a <- c(4,4,4,4,5,5,5,6,6,6,6,6,6,6,7,7,7,8,8,8,9) 
b <- seq(0,1,length = length(a)) 
plot(a, b, col = "red") 

imge

出於某種目的,我需要用gamma分佈的最佳累積分佈函數(CDF)來擬合這些點。有沒有辦法如何在python或R中以數字方式做到這一點?我正在使用winpython,所以我可以直接導入R代碼。

PS:我發現this後,但我不明白它。

+0

'fitdistr(一, 「伽馬」)從'MASS'包''中似乎R'工作,對不對? –

+0

是的,thx很多! – Bobesh

回答

0
library(MASS) 
gammafit <- fitdistr(a, "gamma") 
# shape  rate 
# 17.552961 2.902459 
# (5.366214) (0.900112) 

因此很明顯,伽馬參數17.55(爲形狀)和2.90(對於速度)適合你的數據最好的。

plot(a, b, col = "red") 
lines(a, pgamma(a, gammafit$estimate[1], gammafit$estimate[2])) 

like this

0

使用包fitdistrplus

a <- c(4,4,4,4,5,5,5,6,6,6,6,6,6,6,7,7,7,8,8,8,9) 
library(fitdistrplus) 
fit <- fitdist(a, "gamma", lower = c(0,0)) 
plot(fit)