카이제곱 검정, 설문 데이터에서 차이가 진짜인지 보는 법
들어가며
설문 결과를 받았다. “20대 여성의 만족도가 남성보다 5%p 높다.” 디자인 보고서에 그렇게 적었다. 회의에서 한 줄 인용된다. “여성 만족도가 더 높다니까요.” 그 한 줄이 신규 디자인 방향을 정한다.
그런데 며칠 뒤 디자이너 동료가 묻는다. “근데 그 차이, 진짜인가요? 응답자가 30명씩이면 우연일 수도 있지 않아요?” 그 질문이 디자인 보고서에서 가장 자주 등장하는 질문 중 하나다. 그리고 답을 잘못 내리기 쉬운 질문이기도 하다. 두 그룹의 차이를 실제 차이로 보고 디자인 방향을 잡으면, 그 차이는 표본 우연이다. 반대로 차이를 우연으로 보고 디자인을 보수적으로 바꾸면, 실제로 존재하는 차이를 놓친다.
어느 쪽이 진짜인지는 응답자 수와 표 구성만 보고 답하지 않는다. 그 답을 주는 통계 도구가 있다. 카이제곱 검정이다. 이 글에서는 그 도구를 디자인 보고서 입장에서 다시 살펴본다. 교차분석이 무엇인지, 카이제곱 검정이 그 위에서 무엇을 답하는지, 언제 쓰고 언제 못 쓰고, 결과를 어떻게 읽는지, 어디서 함정이 나오는지. R에서 어떻게 쓰는지도 가볍게 본다.
교차분석과 카이제곱 검정이란
들어가며에서 본 장면을 그대로 이어가자. 설문 응답자 60명을 성별과 만족도 두 축으로 정리한다. 행은 성별(여성, 남성), 열은 만족도(만족, 보통, 불만족). 각 칸에는 그 칸에 해당하는 응답자 수를 적는다. 이 표가 교차표다. 두 범주형 변수의 관계를 한눈에 펼치는 가장 단순한 장치다.
| 만족 | 보통 | 불만족 | 합계 | |
|---|---|---|---|---|
| 여성 | 12 | 10 | 8 | 30 |
| 남성 | 9 | 11 | 10 | 30 |
| 합계 | 21 | 21 | 18 | 60 |
표를 보는 것만으로 이미 한 가지가 보인다. 여성 응답자 중에 만족이라고 답한 비율은 12/30 = 40%다. 남성 응답자 중에 만족이라고 답한 비율은 9/30 = 30%다. 10%p 차이. 들어가며의 “5%p 차이"보다 큰 격차가 여기서도 나온다. 그런데 표는 그 이상을 말해주지 않는다. 이 10%p 차이가 우연의 범위 안인지 밖인지는 알려주지 않는다.
그 답을 주는 도구가 카이제곱 검정(chi-square test of independence)이다. 한 줄 정의는 이렇다. 교차표 위에서, 두 변수가 서로 독립이라는 귀무가설 하에서 기대되는 분포와 실제 관측된 분포가 유의하게 다른지 검정하는 도구. 영문은 chi-square test. 이 글에서는 카이제곱으로만 적는다.
핵심 메커니즘은 단순하다. 두 변수가 독립이라면, 각 칸의 기대빈도는 행·열 합계로 계산한다. 전체 응답자 60명 중 만족이라고 답한 비율은 21/60 = 35%다. 만약 성별과 만족도가 독립이라면, 여성 30명 중에서도 같은 35%가 만족이라고 답해야 한다. 기대빈도는 30 × 0.35 = 10.5. 실제 관측은 12. 차이는 1.5.
카이제곱 통계량은 이 차이를 모든 칸에 대해 합산한 값이다. 각 칸에서 (관측빈도 − 기대빈도)² / 기대빈도를 더한다. 그 합이 충분히 크면, “두 변수가 독립"이라는 귀무가설을 기각한다. 반대로 합이 작으면, 두 변수의 차이는 우연의 범위 안에 있다고 본다. 카이제곱 통계량은 이름 그대로 “관측과 기대 사이의 거리"다. 거리가 멀수록 두 변수는 독립이 아니다.
이 글에서 카이제곱을 별도 도구처럼 다루지만, 실제로는 교차표 위에서 한 발 더 나간 검정이다. 교차분석이 표를 그리는 행위라면, 카이제곱 검정은 그 표에서 보이는 차이가 우연인지 아닌지 답하는 행위다. 둘은 한 쌍이다.
언제 사용하고, 언제 못 하는가
카이제곱이 답하는 질문은 좁다. 두 변수가 모두 범주형이어야 하고, 응답이 서로 독립이어야 하고, 표의 기대빈도가 충분해야 한다. 이 중 하나라도 어기면 카이제곱은 답을 못 주거나, 답이 있어도 신뢰하기 어렵다.
첫째, 두 변수가 모두 범주형이어야 한다. 성별·만족도·디바이스·전환처럼 응답이 몇 개의 카테고리로 떨어지는 값만 입력이다. 키·체류시간·리커트 점수처럼 연속적이거나 순서만 있는 값은 카이제곱에 넣지 않는다. 그런 데이터는 회귀, 상관, t-test, ANOVA 쪽으로 간다. 둘 중 하나라도 연속형이면 카이제곱의 자리가 아니다.
둘째, 기대빈도가 5 미만인 칸이 20%를 넘으면 카이제곱 근사가 흔들린다. 일반적인 기준으로 기대빈도가 5 미만인 칸이 전체의 20%보다 많으면, R의 chisq.test() 대신 fisher.test()를 쓴다. 2×2 표에서 한 칸이라도 기대빈도가 5 미만이면 피셔로 간다. 표가 더 커지면 피셔의 계산 비용도 커지지만, 정확한 답이 필요할 때는 그래도 피셔를 쓴다.
셋째, 응답이 서로 독립이어야 한다. 같은 응답자가 표 안에 두 번 들어가거나, 같은 사용자의 행동이 한 행에 묶여서 들어가는 경우 가정이 깨진다. 디자인 보고서의 설문 응답자 데이터는 응답자 한 명에 한 줄이라 이 조건이 자연스럽게 맞는다. 반면 AB 테스트 로그처럼 사용자 한 명이 여러 행동을 하는 데이터를 그대로 카이제곱에 넣으면 안 된다. 사용자 단위로 한 번 집계한 뒤에 넣어야 한다.
또 한 가지, 카이제곱은 한 번의 비교에 답한다. 같은 표에서 셀을 골라 따로 p-value를 적거나, 여러 표에 같은 응답자를 반복으로 넣으면 다중비교 문제가 생긴다. 보고서에서 “가장 차이가 큰 셀 하나"를 골라 유의성을 강조하는 패턴은, 우연으로 유의하게 나온 비율이 더 커진 결과다.
표준 디자인 보고서에 들어가는 설문 데이터는 대부분 2×2 또는 2×3 교차표다. 기대빈도가 자연스럽게 5 이상이 되고, 응답자 단위로 한 번씩 들어가고, 한 표 한 번의 비교다. 이 경우 카이제곱은 정확히 맞는 도구다. 이 조건을 하나만 어겨도 답이 흔들리므로, 표를 그리기 전에 이 조건에 부합하는지부터 확인한다.
결과를 어떻게 읽는가
R에서 chisq.test()을 돌리면 결과가 한 줄로 나온다. 앞 섹션의 60명 표를 그대로 넣었다고 하자.
Pearson's Chi-squared test
data: survey_data
X-squared = 0.595, df = 2, p-value = 0.7425
이 한 줄에서 세 가지를 읽는다. X-squared, df, p-value.
X-squared는 카이제곱 통계량이다. 앞 섹션에서 본 (관측빈도 − 기대빈도)² / 기대빈도를 모든 칸에 대해 합한 값이다. 값이 클수록 관측과 기대의 거리가 멀다. 0.595는 거리가 작다는 뜻이다.
df는 자유도(degrees of freedom)다. (행 수 − 1) × (열 수 − 1)로 계산한다. 2행 3열이면 (2−1) × (3−1) = 2. 자유도는 카이제곱 분포의 모양을 정한다. 통계량 값은 이 자유도 위에서 p-value로 환산된다.
p-value는 카이제곱 검정이 답으로 주는 핵심이다. “두 변수가 독립이라는 귀무가설이 사실일 때, 지금과 같은 표 또는 더 극단적인 표가 나올 확률"이다. 0.7425는 74.25%. 이 정도면 흔한 결과다. 우연이라고 봐도 무방하다.
디자인 보고서에서는 보통 0.05를 기준으로 삼는다. p-value < 0.05면 “통계적으로 유의하다"고 적는다. 두 변수가 독립이 아니라고 본다. p-value ≥ 0.05면 “유의하지 않다"고 적는다. 독립이라고 본 건 아니지만, 표본에 차이가 보이지 않는 셈이다.
이 기준은 통계학의 약속이지 절대적인 진리가 아니다. 0.05 대신 0.01을 쓰는 분야도 있고, 0.1을 쓰는 exploratory 분석도 있다. 디자인 보고서에서는 0.05가 무난하다. 하지만 기준 하나만 강조하지 말고, 실제 p-value 값 자체를 함께 적는 게 낫다. p-value = 0.04와 0.0001은 둘 다 0.05 미만이지만, 근거의 강도가 다르다.
흔한 오해가 있다. p-value는 “귀무가설이 참일 확률"이 아니다. 위 정의는 “귀무가설이 참일 때” 조건을 전제한 확률이다. 잘못 읽으면 “남녀 만족도 차이가 우연일 확률이 74%“로 해석하기 쉽다. 그건 틀린 해석이다. p-value는 표가 주어졌을 때 귀무가설 하에서 그 정도 격차가 (또는 더 큰 격차가) 관측될 확률이지, 귀무가설 자체의 확률이 아니다.
또 하나, p-value는 “실제 차이의 크기"를 말해주지 않는다. 60명 설문에서 p-value = 0.001이 나와도, 두 그룹의 차이는 1%p에 불과하다. 표본이 충분히 크면 아주 작은 차이도 유의하게 나온다. 그래서 카이제곱 검정은 “차이가 있다/없다"만 답하고, “차이가 얼마나 큰가"는 답하지 않는다. 그 답을 주는 별도 지표가 있다. Cramér’s V다.
Cramér’s V는 0과 1 사이의 값이다. 0에 가까우면 두 변수의 관계가 약하고, 1에 가까우면 강하다. R에서는 assocstats(table) 한 줄로 Cramér’s V를 포함한 여러 연관성 지표를 같이 본다. 디자인 보고서에서는 Cramér’s V ≥ 0.1이면 약한 관계, ≥ 0.3이면 중간, ≥ 0.5이면 강한 관계로 해석한다. 단, 이 기준도 분야마다 다르다. UX·설문 데이터에서는 0.1만 넘어도 의미 있는 차이로 본다.
assocstats()를 쓸 때 한 가지 주의점이 있다. 패키지 설치가 필요하다. install.packages("vcd")를 한 번 돌려야 한다. 매번 설치할 필요는 없지만, 새 환경에서 첫 분석을 돌릴 때는 한 번씩 미리 깔아두는 편이 좋다.
지금까지의 결과를 정리하자. p-value = 0.7425, X-squared = 0.595, df = 2, Cramér’s V ≈ 0.1. 이 데이터를 디자인 보고서에 어떻게 적을까. “남녀 만족도 차이는 통계적으로 유의하지 않다 (χ²(2) = 0.595, p = 0.743). 표본에 차이가 보이지 않으므로 디자인 방향 결정의 근거로 삼기 어렵다.” 이렇게 한 단락으로 적는다. χ²(df)와 p-value를 괄호 안에 같이 적는다. Cramér’s V도 같이 적으면 더 낫다. “효과 크기는 작다 (V = 0.1).” 한 줄이 더해지면 p-value와 함께 효과 크기까지 보고서에 담긴다.
보고서에서 자주 빠지는 것들
4절까지 카이제곱 검정의 정의, 사용 조건, 결과 읽는 법까지 정리했다. 그래도 디자인 보고서를 다시 읽으면 흔히 빠지는 항목이 있다. 이 절에서는 그런 빠뜨림을 짚는다. 다음 네 가지가 디자인 보고서에서 카이제곱 검정을 옮길 때 가장 자주 빠지는 항목이다.
첫째, 표만 그리고 검정을 안 돌린 경우가 있다. 남성 만족도 30%, 여성 만족도 40%로 표를 채우고 끝낸다. 표는 그 차이가 진짜인지를 답하지 않는다. 앞 절의 표에서 본 것처럼 10%p 차이는 우연이다. 표 다음에는 항상 카이제곱 (또는 피셔) 검정이 따라와야 한다.
둘째, p-value만 적고 효과 크기를 빠뜨리는 경우다. p < 0.05로 유의하다고만 적힌 보고서가 의외로 많다. 4절에서 본 Cramér’s V가 빠지면, 그 차이가 실질적으로 얼마나 큰지 보고서 독자에게 전달되지 않는다. 유의성과 효과 크기는 한 단락에 같이 적어야 한다.
셋째, 셀을 골라서 따로 비교하는 패턴이다. 3행 3열 표에서 여성-만족 셀과 남성-만족 셀의 차이만 따로 적고 p-value를 강조하는 보고서를 가끔 만난다. 같은 표 안에서 여러 셀을 골라 비교하면 다중비교(multiple comparisons) 문제가 생긴다. 우연으로 유의하게 나올 확률이 그만큼 커진다. 표 전체를 한 번 검정하고, 셀별 차이는 표 안에 그대로 두는 편이 안전하다.
넷째, 표본 크기와 응답 구조를 안 적는 경우다. 같은 p-value가 나와도 응답자가 30명일 때와 300명일 때의 근거 강도는 다르다. 보고서에는 응답자 수, 표 구성(2×2 등), 데이터 출처(설문 응답자 단위인지 AB 테스트 로그인지)를 짧게 적어두는 편이 좋다.
이 네 가지가 디자인 보고서에서 가장 자주 빠지는 항목이다. 표가 그려졌으면 검정이 따라오고, 검정이 돌았으면 p-value와 효과 크기가 같이 나오고, 셀 비교는 표 전체를 기준으로 하고, 응답 구조가 짧게 적혀 있다. 이 순서만 지켜도 카이제곱 검정을 보고서에 안전하게 옮길 수 있다.
들어가며에서 본 질문으로 돌아가자. “근데 그 차이, 진짜인가요?” 이 글의 답은 이렇다. 교차표를 그린다. 기대빈도 조건을 확인한다. 카이제곱 검정을 돌린다. X-squared, df, p-value를 읽는다. 0.05를 기준으로 유의성을 본다. 흔한 오해에 빠지지 않는다. Cramér’s V로 효과 크기를 본다. 한 단락으로 정리해 보고서에 적는다. 빠뜨림 네 가지를 점검한다.
이 순서가 디자인 보고서에서 카이제곱 검정을 쓰는 전부다. 통계 도구가 답을 주긴 하지만, 답을 읽고 옮기는 건 디자이너 몫이다. 30명 설문에서 “남녀 만족도 차이는 통계적으로 유의하지 않다"는 결론을 읽었다면, 그 다음은 디자인 방향 결정의 몫이다. 통계가 디자인 결정을 대신하지 않는다.