# 카이제곱 검정(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