ローレンツ曲線(ジニ係数) Last modified: Jun 28, 2004
目的
ローレンツ曲線を描き,ジニ係数を計算する。
使用法
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
直前のページへ戻る
E-mail to Shigenobu AOKI ( @si.gunma-u.ac.jp )