草薙の研究ログ

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

ジニ係数とワイブル分布・対数正規分布・ガンマ分布の母数の関係

どうでもいいことなんだけど,ジニ係数はいくつかの分布であれば,分布の母数から直接的にもとまるんだそうだ。

ワイブル分布,対数正規分布,ガンマ分布を例に取ると,ワイブル分布とガンマ分布なら形状母数k(またはα)のみから,対数正規分布ならσのみから直接ジニ係数がもとまる。これらを計算するRの関数を作ってみる。

#ガンマ分布
gamma.gini<-function(a){
	gini<-gamma((2*a+1)/2)/k/gamma(a)/sqrt(pi)
	gini
}

#ワイブル分布
weibull.gini<-function(k){
	gini<-1-2^(-1/k)
	gini
}

#対数正規分布
lognorm.gini<-function(s){
	gini<-2*pnorm(s/2*sqrt(2))-1
	gini
}


あるデータの分布がワイブル分布に従っているとして,その形状母数kが2だったとしたら,

weibull.gini(2)

0.2928932


この関数にはベクトルを入れられるので,こんなグラフも作れる。


f:id:kusanagik:20170920145430p:plain

x<-seq(0.1,5,.01)
plot(x,weibull.gini(x),xlab="Parameter",ylab="Gini Coefficient",type="l")


ワイブル分布では,形状母数が大きくなればなるほどジニ係数は小さくなる。

…どうでもいいことなんだけど,ワイブル分布の形状母数について,MCMCのサンプルを得て,ジニ係数の信用区間を得ることもできるんじゃないだろうか。たとえば,

set.seed(1)
d<-rweibull(1000,3,1)
library(MCMCpack)

llf<-function(beta,x){
sum(log(dweibull(x,beta[1],beta[2])))
}

m<-MCMCmetrop1R(llf,theta.init=c(3,1),x=d)
gini<-weibull.gini(m[,1])
plot(density(gini),type="n",xlab="Gini",ylab="Density",main="")
polygon(density(gini),col=rgb(0,0,1,.2))

#信用区間
quantile(gini,c(.025,.975))


     2.5%     97.5% 
0.1963506 0.2140616 


こんな感じで。

f:id:kusanagik:20170920150851p:plain

みたいな。