【経済学】ローレンツ曲線とジニ係数(R)
今回は下のリンクからRスクリプトを拝借しました。
Rで実装
# Gini.index関数を作るためのソース(ローレンツ曲線を描き,ジニ係数を計算する) Gini.index <- function( y, # 度数ベクトル main="", # 図のタイトル(省略時は何も書かない) xlab="", # x 軸の名前(省略時は何も書かない) ylab="" # y 軸の名前(省略時は何も書かない) ) { stopifnot(y >= 0) # 非負データでなければならない n <- length(y) # データの個数 y <- sort(y) # 小さい順に並べる y <- cumsum(y) # 累積度数をとる y <- c(0, y/y[n]) # 累積相対度数(先頭に 0 を加える) x <- seq(0, 1, length=n+1) # 0 ~ 1 を等間隔に区切ったベクトルを作る plot(x, y, type="l", col="blue", # これを結ぶとローレンツ曲線 main=main, xlab=xlab, ylab=ylab) abline(v=c(0, 1), h=c(0, 1), # 外周と, coef=c(0, 1)) # 対角線(原点を通る,傾き 1 の直線)を描く return(2*sum(x-y)/n) # ジニ係数 } #データ x <- c(0, 3, 3, 5, 5, 5, 5, 7, 7, 10) #導出 Gini.index(x, main="ローレンツ曲線", xlab="累積相対度数", ylab="累積相対所得") #[1] 0.276