ファイ係数,コンティンジェンシー係数,クラメール係数 Last modified: Oct 08, 2004
目的
ファイ係数,コンティンジェンシー係数,クラメール係数を計算する。
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
解説ページ
直前のページへ戻る
E-mail to Shigenobu AOKI