草薙の研究ログ

英語教育関係。でも最近は統計(特にR)ネタが中心。

最尤法を使った逆ガウス分布のフィッティング

このブログへコメントがあったので,こちらで。
ガウス分布をデータに対して最尤法を使用してフィットする方法について。
statmodパッケージに逆ガウス分布の関数があって,それをfitdistrplusパッケージで使う。

#使うパッケージ
library(statmod)
library(fitdistrplus)

#データの作成
dat<-rinvgauss(1000,1,4) #mu=1, lambda=4, n=1000の擬似乱数

#ヒストグラム
hist(dat,col="lightblue", main="", xlab="value",freq=F,breaks=10,ylim=c(0,1.2))

#要約
summary(dat)

#最尤推定
fit<-fitdist(dat,"invgauss",start=c(1,1))
#初期値をここではmu=1,lambda=1としている

#結果
fit
summary(fit)

#Fitting of the distribution ' invgauss ' by maximum likelihood 
#Parameters : 
#   estimate Std. Error
#1 0.9950217 0.01505621
#2 4.3455699 0.19433979
#Loglikelihood:  -520.8145   AIC:  1045.629   BIC:  1055.445 

#だいたいよさげ

#ヒストグラムに描き足し
x<-seq(0,5,.01)
lines(x,dinvgauss(x,fit$estimate[1],fit$estimate[2]),col="red",lty=2,lwd=3)


f:id:kusanagik:20170708172539p:plain