2009年1月18日日曜日

Rにおけるgamma分布と逆gamma分布

逆gamma分布関数が使えないとき(ExcelやBUGSなど)、gamma分布関数を用いて逆gamma分布に従う乱数を生成する。ライブラリMCMCpackのrinvgamma()を利用して結果を確認する。

1.逆gamma分布のshapeパラメータとscaleパラメータの値を次のように仮定する。
shape = 10, scale = 5

2.それぞれの分布の乱数xとxxを10000ずつ生成する。
library(MCMCpack)
x <- rinvgamma(10000,shape=10,scale=5)
y <- rgamma(10000,shape=10,scale=1/5)
xx <- 1/y

3.各乱数の平均値と標準偏差を表示する。下は計算結果の一例。
mean(x)
[1] 0.5553811
sd(x)
[1] 0.1964493
mean(xx)
[1] 0.5556282
sd(xx)
[1] 0.1964432

4.密度分布やヒストグラムを描く。
hist(x,xlim=c(0,2),axes=F ,xlab="",ylab="",main="")
par(new=T)
plot(density(x),xlim=c(0,2))
par(ask=T)
hist(xx,xlim=c(0,2),axes=F ,xlab="",ylab="",main="")
par(new=T)
plot(density(xx),xlim=c(0,2))