相関比     Last modified: Apr 10, 2008

目的

一方の変数が質的データで,もう一方の変数が量的データのときに,二変数間の関連を示す指標として相関比と決定係数を求める。

使用法

correlation.ratio(x, group)

引数

x      データベクトル
group  観察値がどの群に属するかを表す変数

ソース

インストールは,以下の 1 行をコピーし,R コンソールにペーストする
source("http://aoki2.si.gunma-u.ac.jp/R/src/correlation-ratio.R", encoding="euc-jp")

# 相関比と決定係数を求める
correlation.ratio <- function(       x,                                              # 変数ベクトル
                                group)                                          # 群を表す変数ベクトル
{
        ok <- complete.cases(x, group)                                               # 欠損値を持つケースを除く
        x <- x[ok]
        group <- factor(group[ok])
        n.i <- tapply(x, group, length)                                              # 各群のデータの個数
        n <- sum(n.i)                                                                # 全データ数
        v.i <- tapply(x, group, var)                                         # 各群の不偏分散
        R.sq <- 1-sum((n.i-1)*v.i)/var(x)/(n-1)                                      # 決定係数
        c.r <- sqrt(R.sq)                                                    # 相関比
        return(c("correlation ratio"=c.r, "coefficient of determination(R^2)"=R.sq))
}


使用例

# 第1列目が群を表す(1から始まり連続する整数値)。第2列目は観測値。
      [,1] [,2]
 [1,]    1    3
 [2,]    1    3
 [3,]    1    4
 [4,]    1    2
 [5,]    2    5
 [6,]    2    2
 [7,]    2    3
 [8,]    2    4
 [9,]    3    8
[10,]    3    8
[11,]    3    5
[12,]    3    6

dat <- matrix(c(rep(1:3, each=4), 3, 3, 4, 2, 5, 2, 3, 4, 8, 8, 5, 6), nc=2)
correlation.ratio(dat[,2], dat[,1])

出力結果例

> dat <- matrix(c(rep(1:3, each=4), 3, 3, 4, 2, 5, 2, 3, 4, 8, 8, 5, 6), nc=2)
> correlation.ratio(dat[,2], dat[,1])
# 相関比と決定係数
                correlation ratio coefficient of determination(R^2) 
                        0.8407896                         0.7069272


・ 直前のページへ戻る  ・ E-mail to Shigenobu AOKI

Made with Macintosh