目的 一方の変数が質的データで,もう一方の変数が量的データのときに,二変数間の関連を示す指標として相関比と決定係数を求める。 使用法 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