目的 ファイ係数,コンティンジェンシー係数,クラメール係数を計算する。 vcd ライブラリの assocstats 関数によっても,これらを計算できる。 使用法 phi(mat) contingency(mat) cramer(mat) 引数 mat 分割表 ソース インストールは,以下の 1 行をコピーし,R コンソールにペーストする source("http://aoki2.si.gunma-u.ac.jp/R/src/phi.R", encoding="euc-jp") # φ係数を求める関数(chisq 関数が必要) phi <- function(mat) { sqrt(chisq(mat)/sum(mat)) } # コンティンジェンシー係数を求める関数(chisq 関数が必要) contingency <- function(mat) { temp <- chisq(mat) sqrt(temp/(sum(mat)+temp)) } # クラメール係数を求める関数(phi, chisq 関数が必要) cramer <- function(mat) { phi(mat)/sqrt(min(nrow(mat), ncol(mat))-1) } # カイ二乗値を計算する関数 chisq <- function(mat) { ex <- outer(rowSums(mat), colSums(mat))/sum(mat) # 期待値 sum((mat-ex)^2/ex) # カイ二乗値 } 使用例 > m <- matrix(c(4, 5, 2, 0, 0, 7, 6, 1, 1, 0, 3, 1), byrow=TRUE, nc=4) # 以下に示すような分割表 > m [,1] [,2] [,3] [,4] [1,] 4 5 2 0 [2,] 0 7 6 1 [3,] 1 0 3 1 > phi(m) # ファイ係数 [1] 0.6149345 > contingency(m) # コンティンジェンシー係数 [1] 0.5238193 > cramer(m) # クラメール係数 [1] 0.4348244 # vcd ライブラリの assocstats 関数を使う > library(vcd) > m <- matrix(c(4, 5, 2, 0, 0, 7, 6, 1, 1, 0, 3, 1), byrow=TRUE, nc=4) > assocstats(m) X^2 df P(> X^2) Likelihood Ratio 15.365 6 0.017603 Pearson 11.344 6 0.078300 Phi-Coefficient : 0.615 Contingency Coeff.: 0.524 Cramer's V : 0.435 解説ページ