目的 ローレンツ曲線を描き,ジニ係数を計算する。 使用法 Gini.index(dat, main="Lorenz curve", xlab="", ylab="") 引数 dat データベクトル main 図のタイトル 省略時は何も書かない xlab x 軸の名前 省略時は何も書かない ylab y 軸の名前 省略時には何も書かない ソース インストールは,以下の 1 行をコピーし,R コンソールにペーストする source("http://aoki2.si.gunma-u.ac.jp/R/src/Gini_index.R", encoding="euc-jp") # ローレンツ曲線を描き,ジニ係数を計算する 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 を等間隔に区切ったベクトルを作る old <- par(xaxs="i", yaxs="i") plot(x, y, type="l", col="blue", # これを結ぶとローレンツ曲線 main=main, xlab=xlab, ylab=ylab) abline(0, 1) # 対角線(原点を通る,傾き 1 の直線)を描く par(old) return(2*sum(x-y)/n) # ジニ係数 } 使用例・出力結果例 > x <- c(0, 3, 3, 5, 5, 5, 5, 7, 7, 10) > Gini.index(x) [1] 0.276 > x <- c(0, 1, 2, 3, 5, 5, 7, 8, 9, 10) > Gini.index(x) [1] 0.376 > x <- c(3, 4, 4, 5, 5, 5, 5, 6, 6, 7) > Gini.index(x) [1] 0.12