[R] 카이제곱 검정 (chisq.test / outer, rowSums, colSums)

 

 

# 카이제곱 검정(chi-squared test, χ2 검정)

카이제곱 분포에 기초한 통계적 방법으로,

관찰된 빈도가 기대되는 빈도와 의미있게 다른지의 여부를 검정하기 위해 사용

자료가 빈도로 주어졌을 때, 특히 명목척도 자료의 분석에 이용된다.

χ2 = Σ (관측값 - 기댓값)^2 / 기댓값

 

귀무가설 하에서의 검정통계량이 카이제곱분포를 따를 때

검정통계치가 카이제곱분포 하에서 일어나기 어려운 일이면 귀무가설(H0)을 기각하고,

충분히 일어날 수 있는 일이면 귀무가설을 기각하지 않는다.

이 때 일어날 법한 일인지, 희귀한 경우인지를 판단하는 기준은 유의수준과 p-값이다.

* p-value < 0.05 : 유의한 차이 (요즘은 0.005 이하 기준 쓰기도)

* 자유도(df) = (r-1)(c-1)  *하나의 행만 있을 경우에는 c-1

 

✔︎ chisq.test(xyz, corrrect=FALSE) 

   * correct=FALSE를 안할 경우 correction된 값이 나옴

# 예시
data <- matrix(c(42,30,50,87), nrow=2, byrow=FALSE)
> data
     [,1] [,2]
[1,]   42   50
[2,]   30   87

# 카이스퀘어 검정 (공식)
chisq <- function(Obs){
   Expected <- outer(rowSums(Obs),colSums(Obs))/sum(Obs)
   sum((Obs-Expected)^2/Expected)}
 
chisq(data)
[1] 9.132947

1-pchisq(chisq(data),(2-1)*(2-1))
[1] 0.00251047

# 카이스퀘어 검정 (간단)
chisq.test(data, correct=FALSE)
>
	Pearson's Chi-squared test

data:  data
X-squared = 9.1329, df = 1, p-value = 0.00251

 


 

✔︎ rowSums(xyz) : 같은 행 data 합

✔︎ colSums(xyz) : 같은 열 data 합

✔︎ outer(x, y) : x, y 데이터셋의 곱

# outer, rowSums, colSums
data2 <- matrix(c(1,2,5,8), nrow=2, byrow=FALSE)
>data2
     [,1] [,2]
[1,]    1    5
[2,]    2    8

rs <- rowSums(data2)
cs <- colSums(data2)

> rs
[1]  6 10

> cs
[1]  3 13

outer(rs,cs)
     [,1] [,2]
[1,]   18   78
[2,]   30  130