ローレンツ曲線(ジニ係数)     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

graph


・ 直前のページへ戻る  ・ E-mail to Shigenobu AOKI ( @si.gunma-u.ac.jp )

Made with Macintosh