범주형 데이터의 관계를 읽는 법, 교차분석과 카이제곱 검정

온라인 쇼핑몰 운영자가 다음 질문을 던졌다고 하자.

남성과 여성의 재방문 비율은 서로 다를까?

성별은 남성·여성처럼 범주로 구분되고, 재방문 여부도 재방문·미재방문이라는 범주로 표현된다. 두 변수 모두 범주형이므로 평균을 비교하는 t검정보다는 각 범주에 몇 명이 속하는지를 비교하는 방법이 필요하다.

이때 가장 먼저 만드는 것이 교차표다.

성별재방문미재방문합계
남성80명120명200명
여성130명70명200명
합계210명190명400명

남성의 재방문율은 40%다.

여성의 재방문율은 65%다.

겉으로 보면 여성의 재방문율이 남성보다 25%포인트 높다. 그러나 표본에서 나타난 차이가 우연한 변동으로도 설명될 수 있는지, 아니면 성별과 재방문 여부가 서로 관련되어 있다고 볼 만한지를 평가해야 한다.

이를 위해 사용하는 대표적인 방법이 Pearson의 카이제곱 검정이다(Pearson, 1900).

교차분석은 표를 만드는 과정이고, 카이제곱 검정은 그 표에서 관찰된 차이가 독립성 가정과 얼마나 어긋나는지를 평가하는 과정이다.

교차분석은 빈도와 비율을 함께 읽는 방법이다

교차분석은 두 개 이상의 범주형 변수를 행과 열에 배치해 범주 조합별 빈도를 살펴보는 방법이다.

다음과 같은 질문에 활용할 수 있다.

  • 성별과 재방문 여부는 관련되어 있는가?
  • 교육수준에 따라 정책 찬성 비율이 다른가?
  • 치료군에 따라 부작용 발생률이 다른가?
  • 연령대에 따라 선호하는 결제수단이 다른가?
  • 지역에 따라 제품 만족도 분포가 다른가?
  • 회원등급에 따라 구독 해지율이 다른가?

교차표의 각 칸에 들어가는 값을 관측빈도라고 한다.

앞의 쇼핑몰 자료에서 남성이면서 재방문한 고객은 80명이다. 이는 관측된 실제 빈도다.

하지만 빈도만 보면 집단의 크기 차이를 놓칠 수 있다. 성별 집단의 표본 수가 다르다면 단순한 인원수보다 비율을 확인해야 한다.

행 백분율과 열 백분율은 질문에 따라 선택한다

교차표에서는 어떤 값을 분모로 삼는지가 중요하다.

행 백분율

각 성별 안에서 재방문 비율을 알고 싶다면 행의 합계를 분모로 사용한다.

성별재방문미재방문합계
남성40.0%60.0%100%
여성65.0%35.0%100%

이 표는 다음 질문에 답한다.

남성과 여성은 각각 어느 정도의 비율로 재방문했는가?

열 백분율

재방문 고객 가운데 남성과 여성의 구성을 알고 싶다면 열의 합계를 분모로 사용한다.

성별재방문 고객 중 비율미재방문 고객 중 비율
남성38.1%63.2%
여성61.9%36.8%
합계100%100%

이 표는 다음 질문에 답한다.

재방문 고객은 어떤 성별로 구성되어 있는가?

행 백분율과 열 백분율은 서로 다른 질문에 답한다. 분석 목적과 조건변수를 먼저 정한 뒤 적절한 백분율을 제시해야 한다.

“여성 고객의 65%가 재방문했다”와 “재방문 고객의 61.9%가 여성이다”는 같은 말이 아니다.

카이제곱 검정은 독립일 때의 표와 실제 표를 비교한다

카이제곱 독립성 검정의 귀무가설은 다음과 같다.

두 범주형 변수는 모집단에서 서로 독립이다.

쇼핑몰 사례에서는 다음 가설을 검정한다.

  • 귀무가설: 성별과 재방문 여부는 독립이다.
  • 대립가설: 성별과 재방문 여부는 독립이 아니다.

독립이라는 말은 성별에 따라 재방문 확률이 달라지지 않는다는 뜻이다.

귀무가설이 맞다면 남성과 여성의 재방문율은 표본오차를 제외하면 비슷해야 한다.

카이제곱 검정은 실제로 관찰된 빈도와 독립일 때 예상되는 빈도의 차이를 계산한다.

기대빈도는 독립성을 가정했을 때 예상되는 인원이다

행 \(i\), 열 \(j\)에 대한 기대빈도는 다음과 같이 계산한다.

\[
E_{ij}=\frac{R_iC_j}{N}
\]

여기서 각 기호는 다음을 의미한다.

  • \(E_{ij}\): 해당 칸의 기대빈도
  • \(R_i\): 해당 행의 합계
  • \(C_j\): 해당 열의 합계
  • \(N\): 전체 표본 수

남성의 재방문 기대빈도는 다음과 같다.

\[
E=\frac{200\times210}{400}=105
\]

성별과 재방문 여부가 독립이라면 남성 200명 가운데 약 105명이 재방문할 것으로 예상된다.

남성의 미재방문 기대빈도는 다음과 같다.

\[
E=\frac{200\times190}{400}=95
\]

여성의 행 합계도 200명이므로 기대빈도는 동일하다.

성별재방문 기대빈도미재방문 기대빈도
남성105명95명
여성105명95명

실제 관측표와 기대표를 비교하면 다음 차이가 나타난다.

성별구분관측빈도기대빈도차이
남성재방문80105-25
남성미재방문12095+25
여성재방문130105+25
여성미재방문7095-25

여성의 재방문은 독립일 때보다 많고, 남성의 재방문은 독립일 때보다 적다.

카이제곱 통계량은 칸별 차이를 합한 값이다

Pearson 카이제곱 통계량은 다음과 같다.

\[
\chi^2=\sum_{i=1}^{r}\sum_{j=1}^{c}\frac{(O_{ij}-E_{ij})^2}{E_{ij}}
\]

여기서 \(O_{ij}\)는 관측빈도, \(E_{ij}\)는 기대빈도다.

쇼핑몰 자료의 각 칸이 카이제곱 통계량에 기여하는 정도는 다음과 같다.

성별구분카이제곱 기여도
남성재방문5.952
남성미재방문6.579
여성재방문5.952
여성미재방문6.579

이를 모두 더하면 다음과 같다.

\[
\chi^2\approx25.063
\]

관측빈도와 기대빈도가 비슷하면 카이제곱 통계량은 작아진다.

관측빈도와 기대빈도의 차이가 크면 카이제곱 통계량도 커진다.

다만 표본크기가 커질수록 작은 비율 차이도 큰 카이제곱 통계량을 만들 수 있다. 따라서 통계량과 p값만으로 관계의 실질적인 크기를 판단해서는 안 된다(Sharpe, 2015).

자유도는 표의 크기에 따라 결정된다

행의 범주 수를 \(r\), 열의 범주 수를 \(c\)라고 하면 자유도는 다음과 같다.

\[
df=(r-1)(c-1)
\]

쇼핑몰 자료는 2×2 표이므로 자유도는 1이다.

\[
df=(2-1)(2-1)=1
\]

이 자료의 Pearson 카이제곱 검정 결과는 다음과 같다.

\[
\chi^2(1)=25.063
\]

p값은 약 0.000000555다.

보고서에서는 지나치게 많은 소수점을 제시하거나 p=0.000이라고 쓰지 않고 다음과 같이 보고한다.

p < .001

p값은 0이 아니다. 분석 프로그램의 표시 자릿수보다 작을 뿐이다.

p값이 작다는 것은 무엇을 의미하는가

p값은 두 변수가 독립이라는 귀무가설과 분석조건이 맞다고 가정했을 때 현재와 같거나 더 큰 불일치가 나타날 확률이다.

p값이 작으면 관측표가 독립성 가정과 잘 맞지 않는다는 근거가 된다.

쇼핑몰 사례에서는 다음처럼 해석할 수 있다.

성별과 재방문 여부 사이에 통계적으로 유의한 연관성이 관찰되었다.

다음과 같이 해석해서는 안 된다.

  • 성별이 재방문을 일으킨다.
  • 여성이라는 특성이 재방문의 원인이다.
  • 두 변수가 관련될 확률이 99.9%다.
  • 귀무가설이 틀릴 확률이 99.9%다.
  • 분석결과가 재현될 확률이 99.9%다.

카이제곱 검정은 연관성을 평가하지만 인과관계를 입증하지 않는다.

연령, 소득, 구매품목과 회원등급 같은 다른 변수가 성별과 재방문에 모두 관련되어 있을 수 있다.

유의한 카이제곱 결과만으로는 관계의 크기를 알 수 없다

표본이 매우 크면 작은 비율 차이도 통계적으로 유의할 수 있다.

따라서 다음 정보를 함께 제시해야 한다.

  • 집단별 빈도
  • 행 또는 열 백분율
  • 절대적인 비율 차이
  • 효과크기
  • 가능하면 신뢰구간
  • 연구맥락에서의 실질적 의미

쇼핑몰 사례에서 여성의 재방문율은 65%, 남성은 40%다.

절대적인 차이는 25%포인트다.

\[
65%-40%=25%\mathrm{p}
\]

이 차이는 p값보다 실무적인 의미를 직접적으로 보여준다.

2×2 표에서는 위험차이·위험비·오즈비를 함께 볼 수 있다

재방문을 하나의 사건으로 보면 여러 효과크기를 계산할 수 있다.

위험차이

여성과 남성의 재방문 확률 차이는 다음과 같다.

\[
RD=0.65-0.40=0.25
\]

여성의 재방문율이 남성보다 25%포인트 높다.

위험비

위험비는 두 확률의 비율이다.

\[
RR=\frac{0.65}{0.40}=1.625
\]

여성의 재방문 확률은 남성의 약 1.63배다.

오즈비

2×2 표를 다음처럼 나타내자.

재방문미재방문
여성(a)(b)
남성(c)(d)

오즈비는 다음과 같다.

\[
OR=\frac{ad}{bc}
\]

쇼핑몰 자료에서는 다음과 같다.

\[
OR=\frac{130\times120}{70\times80}\approx2.79
\]

여성의 재방문 오즈는 남성의 약 2.79배다.

오즈비 2.79를 “재방문 확률이 2.79배”라고 해석해서는 안 된다. 오즈와 확률은 다르다. 사건이 흔할수록 오즈비와 위험비의 차이는 커진다.

Cramér의 V는 교차표 전체의 표준화된 효과크기다

2×2보다 큰 교차표에서는 위험비나 오즈비 하나로 전체 관계를 요약하기 어렵다.

이때 Cramér의 \(V\)를 사용할 수 있다.

행 수와 열 수에서 1을 뺀 값 가운데 작은 값을 \(m\)이라고 하면 다음과 같다.

\[
V=\sqrt{\frac{\chi^2}{Nm}}
\]

값의 범위는 0에서 1이다.

  • 0에 가까우면 연관성이 약하다.
  • 1에 가까우면 연관성이 강하다.

쇼핑몰 자료에서는 다음과 같다.

\[
V=\sqrt{\frac{25.063}{400}}\approx0.250
\]

Cramér의 \(V=0.250\)이다.

Cohen(1988)의 경험적 기준이 인용되기도 하지만, 효과크기의 중요성은 연구분야, 범주 수, 비용과 의사결정 맥락에 따라 달라진다.

Cramér의 V는 방향을 알려주지 않는다. 여성의 재방문율이 높은지 남성이 높은지는 원래 교차표와 백분율을 봐야 한다.

유의한 결과가 나오면 어떤 칸이 관계를 만드는지 확인한다

전체 카이제곱 검정은 표 어딘가에 독립성에서 벗어난 부분이 있다는 사실만 알려준다.

3×4처럼 범주가 많은 표에서는 어느 범주 조합이 전체 관계를 만들었는지 추가로 확인해야 한다.

이때 잔차를 사용할 수 있다.

Pearson 잔차

관측빈도와 기대빈도의 차이를 기대빈도의 제곱근으로 나눈다.

\[
r_{ij}=\frac{O_{ij}-E_{ij}}{\sqrt{E_{ij}}}
\]

양수이면 기대보다 많이 관찰된 칸이고, 음수이면 기대보다 적게 관찰된 칸이다.

조정 표준화 잔차

행과 열의 주변비율까지 반영한 잔차다. 값이 표준정규분포의 z점수와 비슷하게 해석될 수 있어 어떤 칸이 전체 관계에 기여하는지 확인할 때 많이 사용된다(Haberman, 1973).

쇼핑몰 자료의 조정 표준화 잔차는 대략 다음과 같다.

성별재방문미재방문
남성-5.01+5.01
여성+5.01-5.01

이는 다음 패턴을 보여준다.

  • 남성의 재방문은 기대보다 적다.
  • 남성의 미재방문은 기대보다 많다.
  • 여성의 재방문은 기대보다 많다.
  • 여성의 미재방문은 기대보다 적다.

범주가 많은 표에서 모든 잔차를 각각 검정하면 다중비교 문제가 생긴다. Bonferroni, Holm 방법 등을 고려하거나 탐색적 해석임을 밝혀야 한다(Sharpe, 2015).

카이제곱 검정에는 서로 다른 세 가지 형태가 있다

‘카이제곱 검정’이라는 이름 아래에는 서로 다른 연구질문이 포함된다.

검정자료구조주요 질문
독립성 검정한 표본에서 두 범주형 변수 측정두 변수는 관련되어 있는가?
동질성 검정여러 모집단에서 한 범주형 결과 측정모집단별 범주비율은 같은가?
적합도 검정한 범주형 변수관찰비율이 가정한 비율과 같은가?

독립성 검정

한 쇼핑몰 고객에게서 성별과 재방문 여부를 함께 측정한다.

질문은 성별과 재방문 여부가 관련되어 있는가이다.

동질성 검정

서로 다른 세 지역에서 고객을 별도로 표집하고 결제수단 분포가 같은지 비교한다.

계산되는 카이제곱 통계량은 독립성 검정과 같은 형태지만 표본추출 설계와 연구질문의 표현이 다르다.

적합도 검정

고객의 결제수단이 신용카드 50%, 계좌이체 30%, 간편결제 20%라는 가정과 실제 자료가 일치하는지 평가한다.

이 경우 변수는 하나이며 기대비율을 연구자가 사전에 정한다.

분석보고서에는 어떤 종류의 카이제곱 검정을 사용했는지 밝혀야 한다.

카이제곱 검정의 가장 중요한 조건은 관측값의 독립성이다

각 관측대상은 원칙적으로 교차표의 한 칸에 한 번만 기여해야 한다.

다음 자료에는 일반적인 Pearson 카이제곱 검정을 그대로 적용하기 어렵다.

  • 같은 고객의 캠페인 전후 구매 여부
  • 같은 환자의 치료 전후 증상 여부
  • 한 사람이 여러 제품을 선택한 다중응답 자료
  • 같은 학교 학생들이 군집된 자료
  • 같은 가족 구성원들의 응답
  • 같은 사용자의 반복 로그인 기록
  • 동일 환자의 양쪽 눈을 별도 사례로 처리한 자료

독립성이 깨지면 표준오차와 p값이 잘못 계산될 수 있다.

같은 사람의 전후 이항결과에는 McNemar 검정을 고려해야 한다(McNemar, 1947).

군집자료에는 일반화추정방정식, 혼합효과 로지스틱 회귀 또는 군집구조를 반영한 방법이 필요할 수 있다.

데이터 행이 많다는 사실이 독립적인 표본이 많다는 뜻은 아니다.

빈도가 아니라 비율만 입력해서는 안 된다

카이제곱 검정에는 원칙적으로 실제 관측빈도를 사용해야 한다.

다음 자료를 그대로 입력해서는 안 된다.

성별재방문율미재방문율
남성4060
여성6535

이 숫자가 실제 인원인지 백분율인지에 따라 표본크기와 검정결과가 달라진다.

남성 20명 중 8명과 남성 2,000명 중 800명은 재방문율이 모두 40%지만 추정의 정밀도는 전혀 다르다.

교차표에는 관측인원을 입력하고, 백분율은 해석을 위해 별도로 계산해야 한다.

기대빈도 5 규칙은 절대법칙이 아니다

카이제곱 검정은 표본이 충분히 클 때 카이제곱분포를 이용하는 근사검정이다.

기대빈도가 너무 작으면 근사가 부정확해질 수 있다.

흔히 다음과 같이 설명한다.

모든 기대빈도가 5 이상이어야 한다.

그러나 이는 지나치게 단순화된 규칙이다.

고전적인 Cochran의 지침은 자유도가 1보다 큰 표에서 다음 조건을 실무적 기준으로 제시했다(Cochran, 1954).

  • 기대빈도가 1보다 작은 칸이 없어야 한다.
  • 기대빈도가 5보다 작은 칸이 전체의 20%를 넘지 않아야 한다.

이 기준도 자연법칙은 아니다. 표의 크기, 불균형 정도와 검정방법에 따라 근사의 성능이 달라질 수 있다(Campbell, 2007; Ruxton & Neuhäuser, 2010).

중요한 것은 관측빈도가 아니라 기대빈도다.

관측빈도가 0이어도 기대빈도가 충분할 수 있고, 관측빈도가 5 이상이어도 기대빈도는 작을 수 있다.

작은 표본에서는 Fisher의 정확검정을 고려한다

Fisher의 정확검정은 주어진 주변합계 아래에서 현재와 같거나 더 극단적인 표가 나타날 정확한 확률을 계산한다(Fisher, 1922).

다음과 같은 2×2 표를 생각해 보자.

집단성공실패합계
A1910
B8210
합계91120

표본이 작고 일부 기대빈도가 작기 때문에 Fisher의 정확검정을 고려할 수 있다.

양측 Fisher 검정의 p값은 약 0.0055다.

A집단과 B집단의 성공률이 같다는 가정과 자료가 잘 맞지 않는다는 근거가 된다.

다만 다음을 기억해야 한다.

  • Fisher 검정도 관측값의 독립성을 요구한다.
  • 정확검정이라는 말이 인과관계까지 정확하다는 뜻은 아니다.
  • 양측 p값의 정의는 소프트웨어와 방법에 따라 조금 다를 수 있다.
  • Fisher 검정은 경우에 따라 보수적일 수 있다.
  • 2×2보다 큰 표에도 확장할 수 있지만 계산량이 커질 수 있다.

R의 fisher.test()는 2×2뿐 아니라 더 큰 교차표에도 사용할 수 있다. 큰 표에서는 정확계산이 어려워 Monte Carlo 방법을 사용할 수 있다.

Yates 연속성 보정 때문에 계산결과가 달라질 수 있다

2×2 표에서 카이제곱분포는 연속형이고 관측빈도는 이산형이다.

Yates(1934)는 이러한 차이를 보정하기 위해 연속성 보정을 제안했다.

R에서 2×2 표에 chisq.test()를 적용하면 기본적으로 Yates 보정이 사용된다.

쇼핑몰 자료에서 결과는 다음처럼 달라진다.

방법카이제곱 통계량p값
Pearson 검정, 보정 없음25.063약 0.000000555
Yates 보정24.070약 0.000000929

두 방법 모두 결론은 p < .001로 같다.

수기로 계산한 값과 R의 출력이 다르다면 연속성 보정 여부를 먼저 확인해야 한다.

Yates 보정은 작은 표본에서 지나치게 보수적일 수 있다는 지적도 있다. 보정 여부를 결과를 본 뒤 선택하지 말고 분석계획과 표본구조에 따라 정해야 한다(Campbell, 2007).

R로 교차표 만들기

쇼핑몰 자료를 행렬로 입력한다.

shopping <- matrix(
  c(
    80, 120,
    130, 70
  ),
  nrow = 2,
  byrow = TRUE,
  dimnames = list(
    gender = c(
      "남성",
      "여성"
    ),
    revisit = c(
      "재방문",
      "미재방문"
    )
  )
)

shopping
R

행과 열의 합계를 추가한다.

addmargins(
  shopping
)
R

행 백분율을 계산한다.

round(
  prop.table(
    shopping,
    margin = 1
  ) * 100,
  1
)
R

열 백분율을 계산한다.

round(
  prop.table(
    shopping,
    margin = 2
  ) * 100,
  1
)
R

전체 비율은 다음과 같이 계산한다.

round(
  prop.table(
    shopping
  ) * 100,
  1
)
R

분모가 행인지, 열인지, 전체인지 코드와 보고서에 명확하게 밝혀야 한다.

R로 Pearson 카이제곱 검정 실행하기

수기 공식과 같은 Pearson 검정을 실행하려면 연속성 보정을 끈다.

chi_result <- chisq.test(
  shopping,
  correct = FALSE
)

chi_result
R

주요 결과는 다음과 같다.

  • 카이제곱 통계량: 약 25.063
  • 자유도: 1
  • p값: 약 0.000000555

기대빈도를 확인한다.

chi_result$expected
R

결과는 다음과 같다.

성별재방문미재방문
남성10595
여성10595

Pearson 잔차를 확인한다.

chi_result$residuals
R

조정 표준화 잔차를 확인한다.

chi_result$stdres
R

관측빈도와 기대빈도, 잔차를 함께 보면 단순한 p값보다 관계의 구조를 더 잘 이해할 수 있다.

R에서 Yates 보정 결과 확인하기

R의 기본설정으로 실행한다.

yates_result <- chisq.test(
  shopping
)

yates_result
R

2×2 표이므로 기본적으로 Yates 보정이 적용된다.

분석보고서에는 보정 여부를 밝혀야 한다.

R로 Cramér의 V 계산하기

카이제곱 통계량을 이용해 직접 계산할 수 있다.

sample_size <- sum(
  shopping
)

row_count <- nrow(
  shopping
)

column_count <- ncol(
  shopping
)

cramers_v <- sqrt(
  unname(
    chi_result$statistic
  ) /
    (
      sample_size *
        min(
          row_count - 1,
          column_count - 1
        )
    )
)

cramers_v
R

결과는 약 0.250이다.

효과크기만 제시하지 말고 집단별 비율도 함께 보고해야 한다.

R로 위험차이·위험비·오즈비 계산하기

여성과 남성의 재방문 비율을 계산한다.

female_rate <- shopping[
  "여성",
  "재방문"
] / sum(
  shopping[
    "여성",
  ]
)

male_rate <- shopping[
  "남성",
  "재방문"
] / sum(
  shopping[
    "남성",
  ]
)
R

위험차이와 위험비를 계산한다.

risk_difference <-
  female_rate - male_rate

risk_ratio <-
  female_rate / male_rate

c(
  female_rate = female_rate,
  male_rate = male_rate,
  risk_difference = risk_difference,
  risk_ratio = risk_ratio
)
R

오즈비를 계산한다.

a <- shopping[
  "여성",
  "재방문"
]

b <- shopping[
  "여성",
  "미재방문"
]

c_value <- shopping[
  "남성",
  "재방문"
]

d <- shopping[
  "남성",
  "미재방문"
]

odds_ratio <- (
  a * d
) / (
  b * c_value
)

odds_ratio
R

결과는 약 2.79다.

Wald 방식의 95% 신뢰구간도 계산할 수 있다.

log_standard_error <- sqrt(
  1 / a +
    1 / b +
    1 / c_value +
    1 / d
)

odds_ratio_ci <- exp(
  log(
    odds_ratio
  ) +
    c(
      -1,
      1
    ) *
    qnorm(
      0.975
    ) *
    log_standard_error
)

odds_ratio_ci
R

약 1.86에서 4.18이다.

작은 표본이나 빈도가 매우 작은 표에서는 Wald 신뢰구간보다 정확 또는 우도기반 방법이 더 적절할 수 있다.

R로 Fisher의 정확검정 실행하기

소표본 예제를 입력한다.

small_table <- matrix(
  c(
    1, 9,
    8, 2
  ),
  nrow = 2,
  byrow = TRUE,
  dimnames = list(
    group = c(
      "A",
      "B"
    ),
    outcome = c(
      "성공",
      "실패"
    )
  )
)

small_table
R

Fisher의 정확검정을 실행한다.

fisher.test(
  small_table,
  alternative = "two.sided"
)
R

양측 p값은 약 0.0055다.

결과에는 오즈비와 신뢰구간도 함께 출력된다. 오즈비의 방향은 행과 열의 배치에 따라 달라지므로 기준범주를 명확히 해야 한다.

2×2보다 큰 표에서 작은 기대빈도가 있다면

행과 열 범주가 많은 표에서는 Fisher 검정의 계산량이 커질 수 있다.

Monte Carlo 방식으로 p값을 근사할 수 있다.

fisher.test(
  large_table,
  simulate.p.value = TRUE,
  B = 100000
)
R

B는 무작위 표를 생성하는 반복 횟수다.

반복 횟수가 많을수록 Monte Carlo 오차는 작아지지만 계산시간은 길어진다. 재현성을 위해 난수 시드를 기록하는 것이 좋다.

범주의 의미가 비슷하고 연구적으로 타당하다면 범주를 합칠 수도 있다. 그러나 기대빈도를 높이기 위해 결과를 본 뒤 임의로 범주를 합쳐서는 안 된다.

같은 사람의 전후 자료에는 McNemar 검정을 사용한다

온라인 광고를 보기 전과 본 후에 같은 고객 200명의 구매의향을 조사했다고 하자.

전후 응답은 같은 사람에게서 나왔으므로 독립적이지 않다.

이 경우 일반적인 Pearson 카이제곱 검정보다 McNemar 검정이 적절하다(McNemar, 1947).

McNemar 검정은 다음 두 종류의 불일치 사례를 비교한다.

  • 이전에는 구매의향이 없었지만 이후에는 생긴 사람
  • 이전에는 구매의향이 있었지만 이후에는 사라진 사람

전후 모두 ‘예’이거나 모두 ‘아니오’인 사람보다 응답이 바뀐 사람의 비대칭성을 평가한다.

R에서는 다음처럼 실행한다.

mcnemar.test(
  paired_table
)
R

같은 대상자의 전후자료를 독립된 두 집단처럼 분석하면 표준오차와 p값이 잘못될 수 있다.

여러 층으로 나뉜 자료에서는 제3의 변수를 확인한다

성별과 재방문 여부가 관련되어 보이더라도 연령대가 두 변수 모두와 관련되어 있을 수 있다.

예를 들어 다음 상황을 생각할 수 있다.

  • 여성 고객이 상대적으로 젊다.
  • 젊은 고객이 재방문을 더 많이 한다.
  • 성별 차이처럼 보인 결과가 실제로는 연령구성 차이에서 발생한다.

전체 교차표만 보면 이런 구조를 발견하지 못할 수 있다.

연령대별로 교차표를 나누어 확인하거나 다음 방법을 사용할 수 있다.

  • Mantel–Haenszel 검정
  • 층화 오즈비
  • 로지스틱 회귀
  • 로그선형모형
  • 다수준 범주형 모형

Mantel–Haenszel 방법은 여러 층에서 공통된 연관성을 평가할 수 있다(Mantel & Haenszel, 1959).

하지만 층별 효과가 크게 다르면 하나의 공통 오즈비로 요약하는 것이 부적절할 수 있다. 성별과 재방문의 관계가 연령대에 따라 달라지는 상호작용도 확인해야 한다.

순서가 있는 범주에서는 일반 카이제곱이 정보를 버릴 수 있다

만족도를 다음처럼 측정했다고 하자.

  • 매우 불만족
  • 불만족
  • 보통
  • 만족
  • 매우 만족

일반적인 Pearson 카이제곱 검정은 이 범주들의 순서를 사용하지 않는다.

‘매우 불만족’과 ‘불만족’이 가깝다는 정보도, ‘매우 불만족’과 ‘매우 만족’이 멀다는 정보도 반영하지 않는다.

질문이 단순히 분포 전체가 다른지를 묻는다면 Pearson 검정이 적절할 수 있다.

하지만 만족도가 집단에 따라 일관되게 증가하거나 감소하는지를 알고 싶다면 다음 방법을 고려할 수 있다.

  • 선형 추세 검정
  • Cochran–Armitage 추세검정
  • 순서형 로지스틱 회귀
  • 순위기반 분석

자료의 순서를 활용하면 특정한 추세를 더 효율적으로 발견할 수 있다.

복합표본조사에는 일반 카이제곱 검정을 그대로 사용하지 않는다

국가조사나 대규모 사회조사에는 다음 구조가 포함될 수 있다.

  • 표본가중치
  • 층화추출
  • 군집추출
  • 불균등한 표본선정 확률

가중된 빈도를 일반적인 독립 관측값처럼 chisq.test()에 입력하면 표준오차와 p값이 잘못될 수 있다.

이 경우 Rao–Scott 보정 카이제곱 검정 등을 사용한다(Rao & Scott, 1981).

R의 survey 패키지에서는 다음과 같은 형태로 분석할 수 있다.

library(survey)

survey_design <- svydesign(
  ids = ~cluster_id,
  strata = ~stratum_id,
  weights = ~sample_weight,
  data = survey_data,
  nest = TRUE
)

svychisq(
  ~gender + revisit,
  design = survey_design,
  statistic = "F"
)
R

복합표본자료에서 중요한 표본크기는 단순한 응답자 수만이 아니다. 가중치와 군집구조가 실제 정보량에 영향을 준다.

연속형 변수를 억지로 범주화하면 정보가 손실된다

연령을 39세 이하와 40세 이상으로 나누면 교차분석을 적용할 수 있다.

하지만 39세와 40세를 완전히 다른 집단으로 취급하고, 20세와 39세를 같은 집단으로 취급하게 된다.

임의적인 범주화는 다음 문제를 만들 수 있다.

  • 정보 손실
  • 검정력 감소
  • 경계 근처 대상의 인위적 구분
  • 결과에 유리한 절단점 선택
  • 비선형 관계의 왜곡
  • 연구 간 비교 어려움

연령과 재방문 여부의 관계를 분석하려면 연령을 연속형으로 유지한 로지스틱 회귀가 더 적절할 수 있다.

범주화가 정책기준이나 임상기준처럼 실제 의사결정과 연결될 때는 의미가 있을 수 있다. 절단점은 결과를 보기 전에 정해야 한다.

결측값을 하나의 범주로 넣을 때도 주의한다

성별이나 재방문 여부가 결측인 사례를 무조건 ‘미응답’이라는 범주로 추가하면 결측과 실제 응답을 같은 종류의 정보처럼 취급하게 된다.

미응답이 분석적으로 의미 있는 범주일 수도 있지만, 일반적인 결측치라면 별도의 결측자료 문제다.

다음을 확인해야 한다.

  • 왜 응답하지 않았는가?
  • 특정 집단에서 결측률이 높은가?
  • 결측이 재방문과 관련되어 있는가?
  • 완전사례분석에서 누가 제외되는가?
  • 다중대체가 필요한가?

결측 여부 자체를 분석하는 교차표는 결측과정을 이해하는 데 유용할 수 있다. 하지만 결측값을 정상범주처럼 자동 처리해서는 안 된다.

교차표의 셀이 0일 때 확인할 사항

어떤 범주 조합에서 관측빈도가 0일 수 있다.

예를 들어 특정 치료군에서 부작용이 한 건도 없을 수 있다.

0이 나타났다고 해서 무조건 오류는 아니다. 그러나 다음을 확인해야 한다.

  • 실제로 사건이 없었는가?
  • 표본이 너무 작아 우연히 0이 되었는가?
  • 자료수집이 누락되었는가?
  • 해당 조합이 구조적으로 불가능한가?
  • 범주 정의가 잘못되었는가?

구조적으로 불가능한 칸을 구조적 0이라고 한다.

예를 들어 임신 여부와 특정 생물학적 범주의 조합처럼 정의상 발생할 수 없는 칸은 단순한 표본 0과 다르다. 기대빈도 계산과 자유도에 별도의 고려가 필요하다.

카이제곱 분석 결과는 어떻게 보고할까

다음과 같은 보고는 정보가 부족하다.

성별과 재방문 여부의 차이가 유의했다.

보다 좋은 보고는 다음과 같다.

남성 고객의 재방문율은 40.0%, 여성 고객의 재방문율은 65.0%였다. Pearson 카이제곱 독립성 검정 결과 성별과 재방문 여부 사이에 통계적으로 유의한 연관성이 나타났다, (\chi^2(1,N=400)=25.06), p < .001, Cramér의 (V=.25). 여성과 남성의 재방문율 차이는 25%포인트였고, 여성의 재방문 오즈는 남성의 2.79배였다. 다만 이 분석은 연관성을 보여줄 뿐 성별의 인과효과를 의미하지 않는다.

보고서에는 다음 정보를 포함하는 것이 좋다.

  1. 분석에 포함된 전체 표본 수
  2. 교차표의 실제 빈도
  3. 행 또는 열 백분율
  4. 사용한 카이제곱 검정의 종류
  5. 연속성 보정 여부
  6. 카이제곱 통계량
  7. 자유도
  8. p값
  9. 기대빈도 조건
  10. 효과크기
  11. 2×2 표의 위험차이·위험비·오즈비
  12. 신뢰구간
  13. 잔차분석 결과
  14. 정확검정을 사용한 이유
  15. 독립성과 표본설계
  16. 인과적 해석의 한계

교차분석에서 자주 발생하는 오류

빈도 없이 백분율만 제시한다

같은 백분율도 표본크기에 따라 정밀도가 다르다. 빈도와 백분율을 함께 제시해야 한다.

행 백분율과 열 백분율을 혼동한다

분모가 무엇인지 밝히지 않으면 해석이 뒤바뀔 수 있다.

p값이 작으면 관계가 강하다고 생각한다

p값은 표본크기에 민감하다. Cramér의 V와 실제 비율 차이를 함께 봐야 한다.

p값을 0.000으로 보고한다

p값은 정확히 0이 아니다. p < .001처럼 보고한다.

기대빈도 대신 관측빈도만 확인한다

카이제곱 근사의 조건은 기대빈도를 중심으로 점검한다.

모든 기대빈도가 반드시 5 이상이어야 한다고 생각한다

5 규칙은 단순화된 경험적 기준이다. 표의 구조와 정확검정 대안을 함께 검토해야 한다.

작은 표본이면 무조건 Fisher 검정을 사용한다

표본 전체 크기보다 기대빈도와 표의 구조가 중요하다. Fisher 검정의 조건과 해석도 확인해야 한다.

같은 사람의 전후자료에 Pearson 검정을 사용한다

대응자료에는 McNemar 검정 등 의존성을 반영한 방법이 필요하다.

통계적으로 유의하면 인과관계를 주장한다

교차분석은 연관성을 보여준다. 교란, 선택편향과 시간적 순서를 별도로 검토해야 한다.

연속형 변수를 임의로 두 범주로 나눈다

정보가 손실되고 절단점에 따라 결과가 달라질 수 있다.

유의한 전체 검정 후 어떤 칸이 다른지 확인하지 않는다

조정 표준화 잔차와 범주별 비율을 확인해야 한다.

복합표본 가중빈도를 일반 빈도처럼 분석한다

가중치, 군집과 층화를 반영하는 Rao–Scott 방식 등이 필요하다.

분석 전에 확인할 질문

  1. 두 변수는 실제로 범주형인가?
  2. 각 범주는 서로 배타적인가?
  3. 한 관측대상이 한 칸에 한 번만 포함되는가?
  4. 같은 사람의 반복응답은 아닌가?
  5. 군집이나 가족구조가 있는가?
  6. 빈도와 백분율을 함께 확인했는가?
  7. 질문에 맞는 행 또는 열 백분율을 사용했는가?
  8. 귀무가설은 독립성인가, 동질성인가, 적합도인가?
  9. 기대빈도는 충분한가?
  10. Fisher 정확검정이나 Monte Carlo 검정이 필요한가?
  11. Yates 보정 여부를 확인했는가?
  12. 카이제곱 통계량과 p값만 보고 있지 않은가?
  13. Cramér의 V를 계산했는가?
  14. 2×2 표에서 위험차이·위험비·오즈비를 확인했는가?
  15. 유의한 결과를 만드는 셀을 잔차로 확인했는가?
  16. 다중비교를 고려했는가?
  17. 순서형 범주의 순서를 활용할 필요가 있는가?
  18. 연속형 변수의 불필요한 범주화는 아닌가?
  19. 제3의 변수에 의한 교란 가능성이 있는가?
  20. 표본가중치와 복합표본설계를 반영했는가?
  21. 연관성을 인과관계로 확대해석하지 않았는가?
  22. 분석과정을 재현할 수 있게 보고했는가?

교차표는 관계의 출발점을 보여줍니다

교차분석은 범주형 변수들이 어떤 조합으로 나타나는지를 빈도와 비율로 보여준다.

카이제곱 검정은 실제 교차표가 두 변수의 독립성을 가정한 표와 얼마나 다른지를 평가한다.

비전공자는 다음 다섯 문장으로 기억하면 된다.

교차분석에서는 빈도와 비율을 함께 봐야 한다.

기대빈도는 두 변수가 독립일 때 예상되는 인원이다.

p값이 작다고 관계가 강하거나 인과적인 것은 아니다.

작은 기대빈도에서는 Fisher의 정확검정을 고려한다.

같은 사람의 전후자료에는 일반 카이제곱 검정을 사용하지 않는다.

쇼핑몰 사례에서 여성의 재방문율은 남성보다 높았다. 카이제곱 검정은 이 차이가 단순한 표본변동만으로 설명되기 어렵다는 근거를 제공했다.

그러나 좋은 분석은 “유의했다”에서 끝나지 않는다.

여성과 남성의 재방문율이 각각 얼마인지, 차이가 몇 %포인트인지, 효과크기가 어느 정도인지, 어떤 고객 특성이 함께 작용했을 가능성이 있는지를 설명해야 한다.

교차표는 단순한 빈도표처럼 보이지만 범주형 데이터의 구조를 가장 직접적으로 보여주는 도구다.

카이제곱 검정은 그 구조가 우연한 흔들림인지 평가한다. 하지만 관계의 의미를 결정하는 것은 검정통계량 하나가 아니라 비율, 효과크기, 연구설계와 현실적 맥락이다.

참고문헌

Campbell, I. (2007). Chi-squared and Fisher–Irwin tests of two-by-two tables with small sample recommendations. Statistics in Medicine, 26(19), 3661–3675. https://doi.org/10.1002/sim.2832

Cochran, W. G. (1954). Some methods for strengthening the common chi-squared tests. Biometrics, 10(4), 417–451. https://doi.org/10.2307/3001616

Cohen, J. (1988). Statistical power analysis for the behavioral sciences (2nd ed.). Lawrence Erlbaum Associates. https://doi.org/10.4324/9780203771587

Delucchi, K. L. (1993). On the use and misuse of chi-square. Psychological Bulletin, 113(1), 166–176. https://doi.org/10.1037/0033-2909.113.1.166

Fisher, R. A. (1922). On the interpretation of chi-square from contingency tables, and the calculation of P. Journal of the Royal Statistical Society, 85(1), 87–94. https://doi.org/10.2307/2340521

Haberman, S. J. (1973). The analysis of residuals in cross-classified tables. Biometrics, 29(1), 205–220. https://doi.org/10.2307/2529686

Mantel, N., & Haenszel, W. (1959). Statistical aspects of the analysis of data from retrospective studies of disease. Journal of the National Cancer Institute, 22(4), 719–748. https://doi.org/10.1093/jnci/22.4.719

McHugh, M. L. (2013). The chi-square test of independence. Biochemia Medica, 23(2), 143–149. https://doi.org/10.11613/BM.2013.018

McNemar, Q. (1947). Note on the sampling error of the difference between correlated proportions or percentages. Psychometrika, 12, 153–157. https://doi.org/10.1007/BF02295996

Pearson, K. (1900). On the criterion that a given system of deviations from the probable in the case of a correlated system of variables is such that it can be reasonably supposed to have arisen from random sampling. The London, Edinburgh, and Dublin Philosophical Magazine and Journal of Science, 50(302), 157–175. https://doi.org/10.1080/14786440009463897

Rao, J. N. K., & Scott, A. J. (1981). The analysis of categorical data from complex sample surveys: Chi-squared tests for goodness of fit and independence in two-way tables. Journal of the American Statistical Association, 76(374), 221–230. https://doi.org/10.1080/01621459.1981.10477633

Ruxton, G. D., & Neuhäuser, M. (2010). Good practice in testing for an association in contingency tables. Behavioral Ecology and Sociobiology, 64, 1509–1513. https://doi.org/10.1007/s00265-010-1014-0

Sharpe, D. (2015). Your chi-square test is statistically significant: Now what? Practical Assessment, Research, and Evaluation, 20, Article 8. https://eric.ed.gov/?id=EJ1059772

Yates, F. (1934). Contingency tables involving small numbers and the chi-square test. Supplement to the Journal of the Royal Statistical Society, 1(2), 217–235. https://doi.org/10.2307/2983604

scroll to the top of the site