ファイ係数,コンティンジェンシー係数,クラメール係数     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

Made with Macintosh