기본 콘텐츠로 건너뛰기

추천 가젯

[10.분석 플랫폼] 모델 검정 공부하기 - 이항 검정

자 재미있는 통계 공부시간입니다 지난 편에서 카이제곱을 다뤘습니다. 제조업·서비스업을 성사·무산으로 갈라 놓은 칸 네 개짜리 표가 예시였죠. 그런데 실무에서 제일 자주 만나는 표는 칸이 네 개도 아닙니다. 두 개예요. 맞고 틀림. 이게 끝입니다. 예측이 맞았나 틀렸나. 딜이 성사됐나 무산됐나. 주가가 올랐나 내렸나. 전부 이 모양입니다. 오늘은 이런 표를 재는 자를 봅니다. 이항이 무슨 말인가 결과가 두 가지뿐이라는 뜻입니다. 두 항. 앞면/뒷면, 맞음/틀림, 성사/무산. 중간이 없는 경우죠. 그러니까 위에서 본 칸 두 개짜리 표가 곧 이항입니다. 이름이 좀 어려워서 그렇지 우리 수학의 정석에서 배웠던 개념이지요. 물론 기억이 잘 안나는게 당연합니다! 저도 어지간하면 그렇거든요 ㅎㅎ 분포와 검정, 둘을 갈라 놓고 봅시다 "이항분포"와 "이항검정"이 둘 다 나오는데, 역시 분포를 해석하는 하나의 세트입니다. 이항분포 : 찍었을 때 100번 중 몇 번 맞는지 그 확률을 전부 그려 놓은 것. 데이터가 없어도 그릴 수 있습니다 - 측정하는 눈금 이항검정 : 그 눈금 위에 내 결과를 놓고 "여기가 얼마나 드물게 나오는 위치인가"를 읽는 것 지난 편도 똑같은 구조였습니다. 카이제곱분포가 눈금이었고 카이제곱검정이 거기에 대보는 일이었죠. 앞으로 나오는 자들도 대부분 이 짝으로 되어 있습니다. ★ 분포는 미리 그려 둔 눈금, 검정은 거기에 내 숫자를 대보는 행위입니다. 그럼 "정확"은? 겸손을 떠는 이름이 아니라 계산 방식을 그대로 적어 놓은 이름입니다. 영어를 보면 조금 더 정확? 하게 이해가 갈 수 있습니다. Exact Binomial Test 입니다. Correct가 아니지요. 하나, 오늘 풀 문제 모델을 하나 만들었다고 해봅시다. 딜이 성사될지 무산될지를 예측하는 모델입니다. 100건에 대해 예측을 시켰더니 62건을 맞혔다고 예를 들어봅니다. 예측 100건 중 맞음...

[09.분석 플랫폼] 모델 검정 공부하기 - 카이제곱 검정

자 이제 조금 더 알아보아요

지난 편에서 t검정을 정리했습니다. 예를 들어 회귀분석을 돌렸더니 "PBR이 1 오르면 수익률이 0.4% 내려간다"는 결과가 나왔다고 가정해 봅니다. 이 0.4를 두 가지로 읽을 수 있습니다. 하나는 정말로 그런 관계가 있다는 것이고, 다른 하나는 실제로는 아무 관계도 없는데 표본을 어쩌다 그렇게 뽑아서 0.4로 보인 것이라는 겁니다. t검정은 이 둘 중 어느 쪽인지를 가려주는 방법, 즉 우연인지 아닌지를 보는 방법이었습니다.

그런데 실무에서 다루는 데이터가 전부 숫자인 건 아닙니다. 성사됐는가 무산됐는가, 대기업인가 중소기업인가, 제조인가 서비스인가. 셀 수 있는 데이터, 그러니까 범주형 데이터가 오히려 더 많습니다. 실사 자료를 열어 보면 절반은 이런 것들이고요.

이럴 때 t검정은 못 씁니다. 평균을 낼 수가 없으니까요. "제조업 30건, 서비스업 18건"의 평균이 뭐 의미가 있겠습니까 ㅎㅎ 그래서 오늘은 카이제곱검정입니다.

말로 하면 안 와닿으니 표부터 보겠습니다. 딜 100건을 업종과 성사 여부로 갈라서 세어 봤다고 해봅시다.

성사 무산 제조업 30 20 서비스업 18 32

숫자가 들어간 방이 네 개 있습니다. 30, 20, 18, 32. 앞으로 이 방 하나하나를 칸이라고 부르겠습니다. t검정은 이 표를 못 다룹니다. t검정이 심사하는 건 "평균 4.2"나 "기울기 0.4"처럼 값 한 개거든요. 그런데 여기엔 평균 낼 것이 없습니다. 30건, 20건은 그냥 세어 놓은 개수니까요.

카이제곱은 네 칸을 한꺼번에 봅니다. 하는 일을 순서대로 적으면 이렇습니다.

① 업종과 성사가 아무 상관이 없다면 각 칸에 몇 건이 있어야 하는지를 계산한다 → 기대
② 실제 건수가 거기서 얼마나 벗어났는지 잰다 → 관측 − 기대
③ 네 칸의 벗어남을 전부 합쳐 숫자 하나로 만든다 → χ²
④ 그 숫자가 우연으로도 나올 만한 크기인지 본다

오늘 글은 이 네 단계를 하나씩 뜯어보는 게 전부입니다.

하나, 주사위가 공정한지 묻는 법

비유로 보도록 하겠습니다. 주사위를 600번 던졌습니다. 공정하다면 각 눈이 100번씩 나왔어야겠죠. 그런데 실제로는 조금씩 어긋나 있습니다. 여기서 질문이 갈립니다. 그 어긋남이 공정한 주사위도 낼 수 있는 정도인가, 아니면 이 주사위가 이상한가.

당연히 딱 100번씩 나오지는 않습니다. 그건 오히려 이상하죠. 문제는 "어느 정도까지의 어긋남을 정상으로 볼 것인가"이고, 그 선을 그어주는 게 카이제곱입니다.

둘, 산식을 먼저 놓고 봅시다

χ² = Σ (관측ᵢ − 기대ᵢ)² / 기대ᵢ ~ χ²(자유도 = 칸수 − 1)

산식으로 들어가기 전에, 우리가 지금 무엇을 묻고 있는지부터 다시 확인하겠습니다. 맨 앞에서 본 딜 100건 표입니다.

성사 무산 합 성사율 제조업 30 20 50 60 % 서비스업 18 32 50 36 % ────────────────────────── 합 48 52 100 48 %

제조업은 50건 중 30건이 성사돼 성사율 60%, 서비스업은 50건 중 18건이라 36%입니다. 표만 보면 제조업이 확실히 잘 된 것처럼 보이죠. 차이가 24%p나 되니까요. 그런데 100건은 그렇게 많은 표본이 아닙니다. 공정한 동전을 100번 던져도 앞면이 55번쯤 나오는 일은 하게 벌어집니다. 마찬가지로 업종이 성사율과 아무 상관이 없더라도, 어쩌다 제조업 쪽에 성사 건이 몰려서 이런 표가 나올 수 있습니다.

★ 오늘 답하려는 질문은 이것입니다

제조업 60% 대 서비스업 36%, 이 차이를 우연으로 볼 수 있는가?

책에는 보통 이렇게 적혀 있습니다.

각 칸에서 실제로 관측된 도수가, 귀무가설이 맞다면 나왔어야 할 기대도수에서 얼마나 떨어져 있는지를 그 칸의 기대도수로 표준화해 전부 더한 값.

한 번에 읽히지 않는 게 정상입니다. 한 문장에 낯선 말이 네 개나 들어 있으니까요. 조각을 내서 앞의 표 숫자에 하나씩 대 볼 텐데, 그 전에 숫자 하나만 먼저 구해 두겠습니다.

먼저 · 기대도수 24는 이렇게 나옵니다

전체 100건 중 성사가 48건입니다. 그러니 전체 성사율은 48%죠. 여기서 귀무가설, 그러니까 "업종은 성사 여부와 아무 상관이 없다"가 사실이라고 쳐 봅니다. 상관이 없다면 제조업이라고 특별할 이유가 없습니다. 제조업 50건도 전체와 똑같이 48%가 성사됐어야 합니다.

제조업 50건 × 48 % = 24건

이 24건이 "아무 상관 없었다면 그 칸에 있었어야 할 건수", 곧 기대도수입니다. 실제로는 30건이 있었고요. 나머지 칸도 같은 논리입니다. 무산율은 52%니까 제조업 50건 중 26건이 무산됐어야 하고, 서비스업도 50건이라 똑같이 24건과 26건이 됩니다.

성사 무산 제조업 50 × 48% = 24 50 × 52% = 26 서비스업 50 × 48% = 24 50 × 52% = 26 실제 관측은 30 20 / 18 32 차이 +6 −6 / −6 +6

제조업·성사 칸: 30 − 24 = 6건, 예상보다 6건 많았다는 뜻입니다. 6을 제곱한 뒤 24로 나눕니다. 36 ÷ 24 = 1.5. 나머지 세 칸도 똑같이 계산해서 다 더합니다. 1.5 + 1.385 + 1.5 + 1.385 = 5.769. 이 값이 χ²입니다.

★ 실제 건수가 예상 건수에서 얼마나 벗어났는지를 칸마다 계산해서, 네 칸 것을 전부 합친 값. 이 합계가 크면 "예상과 다르다"고 판단합니다.

t검정과 뼈대가 똑같습니다. 어긋난 크기를, 그 자리에서 원래도 왔다 갔다 하는 폭으로 나눈다는 것이죠. t검정에서는 계수가 0에서 벗어난 거리를 표준오차로 나눴습니다. 카이제곱에서는 관측이 기대에서 벗어난 거리를 기대도수로 나눕니다. 기대도수가 크면 원래도 그만큼 들쭉날쭉하거든요. 나누는 대상만 다를 뿐, "벗어난 거리 ÷ 원래 흔들리는 폭"이라는 형태는 같습니다.

이 "거리"라는 발상은 통계 밖에서도 그대로 쓰입니다. 회귀분석이 잔차 제곱합을 최소로 만드는 것도, AI라고 부르는 신경망이 예측과 정답의 제곱 오차를 줄여 나가는 것도 결국 같은 일이에요. 다만 쓰는 방향이 반대입니다. 카이제곱은 거리를 재서 크면 "예상과 다르다"고 판정하고, 기계학습은 그 거리를 줄이는 것 자체가 목적입니다. 줄이는 방법은 생각보다 무식합니다. 안개 낀 산에서 발밑 경사만 보고 가장 가파른 내리막으로 한 걸음 딛고, 다시 재고 또 한 걸음 딛는 식입니다. 이걸 경사하강법이라고 부릅니다.

다시 용어랑 좀 더 친해져 봅시다

도수(frequency)는 그냥 횟수입니다. 몇 건이냐. 개수를 세는 데이터라서 "도수 데이터"라고 부릅니다.

기대도수는 "귀무가설이 맞다면 이 칸에 몇 건이 있어야 하는가"입니다.

카이(χ)는 그리스 문자입니다. 표준정규분포를 따르는 값들을 제곱해서 더하면 나오는 분포가 바로 카이제곱분포입니다. 이름에 계산 방법이 그대로 들어가 있는 겁니다. 그래서 t분포와 달리 음수가 나올 수 없습니다.

적합도 검정독립성 검정, 두 가지 용도로 씁니다. 주사위처럼 한 줄짜리 분포가 이론과 맞는지 보면 적합도 검정, 교차표를 놓고 두 변수가 서로 관계가 있는지 보면 독립성 검정입니다. 실무에서 훨씬 자주 쓰는 건 독립성 검정입니다.

Cramér's V는 카이제곱과 짝으로 쓰는 값입니다. 카이제곱은 "업종에 따라 성사율이 다른가, 예 아니오"에만 답합니다. "그래서 업종을 보면 성사 여부를 어느 정도 맞힐 수 있나"에 답하는 값이 V이고, 0에서 1 사이로 나옵니다.
★ t검정은 "두 집단의 평균이 다른가"를 묻고, 카이제곱은 "각 칸에 들어간 건수가 예상과 다른가"를 묻습니다. 카이제곱은 더 좋은 자가 있는 게 아니라, 재는 물건이 아예 다릅니다.

셋, 카이제곱분포는 한쪽 꼬리만 봅니다

χ² 5.769를 구했습니다. 그런데 이 숫자만 봐서는 큰지 작은지 알 수가 없죠. 어디부터가 "우연으로 보기 어렵다"인지 선을 그어야 합니다. 그 선 바깥 구간을 기각역이라고 부릅니다. 그런데 이 선을 한쪽에만 긋습니다. 왜 그런지 제조업 표로 확인해 보겠습니다.

실험 · 결과를 정반대로 뒤집어 보면

실제 관측 기대 차이 제조업 30 20 → 24 26 +6 −6 서비스업 18 32 → 24 26 −6 +6 χ² = 5.769 뒤집은 경우 제조업 18 32 → 24 26 −6 +6 서비스업 30 20 → 24 26 +6 −6 χ² = 5.769

기대도수는 그대로 24와 26입니다. 행 합도 열 합도 안 바뀌었으니까요. 차이는 부호만 뒤집혔는데, 제곱하는 순간 부호가 사라집니다. 그래서 χ² 값이 똑같이 5.769로 나옵니다.

★ 완전히 반대되는 두 결과가 같은 χ²를 냅니다. χ²는 "어느 쪽이 더 잘 됐나"를 구분하지 못하고, 오직 "예상에서 얼마나 멀리 벗어났나"만 말합니다.

t검정은 이 점이 달랐습니다. t가 +2.65면 "PBR이 오르면 수익률도 오른다", −2.65면 "내린다"로 뜻이 정반대죠. 방향이 두 가지라 양쪽 끝을 다 봐야 했습니다. 카이제곱은 제곱으로 방향을 지워버렸기 때문에, 이상하다는 신호가 오는 방향이 하나뿐입니다.

그럼 χ²가 작으면 무슨 뜻인가

성사 무산 제조업 24 26 ← 기대와 완전히 일치 서비스업 24 26 χ² = 0

관측이 기대와 정확히 같습니다. "업종과 성사는 아무 상관이 없다"는 귀무가설이 딱 맞아떨어진 상태이지요. 우연이 아니라고 의심할 이유가 하나도 없는 쪽입니다. 그리고 χ²는 0 아래로 내려갈 수도 없고요.

그러니까 χ²라는 자에서는 왼쪽으로 갈수록 "예상대로다", 오른쪽으로 갈수록 "예상과 다르다"가 됩니다. 우연이 아니라고 말하려면 오른쪽으로 충분히 가야 하고, 그래서 판정선도 오른쪽에만 필요합니다.

χ² = 0 ───────── 3.84 ─────────▶ | | 기대와 똑같음 여기부터 기각역 "우연으로 설명됨" "우연으로 보기엔 너무 멀다" 우리 값 5.769 는 3.84 오른쪽 → 기각

3.84는 자유도 1일 때의 기준선입니다. "귀무가설이 사실인데도 χ²가 여기까지 갈 확률이 5%밖에 안 된다"는 지점이에요. 우리 값 5.769가 그 오른쪽에 떨어졌으니 우연으로 보기 어렵다고 판정합니다.

근데 자유도가 뭔가요

자유도는 "이 표에서 내가 자유롭게 값을 정할 수 있는 칸이 몇 개인가"입니다. 칸의 개수가 아니라는 게 핵심입니다.

주사위 600번 : 칸 6개 → 자유도 5 앞의 다섯 칸을 정하면 마지막은 600에서 빼면 나오니까 제조업 교차표 : 칸 4개 → 자유도 1 행 합과 열 합이 정해져 있어 한 칸만 정하면 나머지가 따라오니까

중요한 건 자유도가 그래프의 모양 자체를 바꾼다는 점입니다. 그래서 χ² 값만 들고는 판정을 할 수가 없어요. 자유도가 같이 있어야 기준선이 정해집니다. 자유도가 커질수록 봉우리가 오른쪽으로 밀리면서 점점 종 모양에 가까워집니다.

자유도 5 χ² = 12 → 유의 (기준 11.07) 자유도 20 χ² = 12 → 유의 아님 (기준 31.41) 같은 12인데 판정이 반대입니다

넷, 산식 읽는 법

제곱을 왜 하나 · 이유가 셋입니다

첫째, 그냥 더하면 0이 됩니다. 앞에서 구한 네 칸의 차이를 그대로 더해 보시면 압니다.

(+6) + (−6) + (−6) + (+6) = 0 관측의 합과 기대의 합이 같으니 부호를 놔두면 언제나 정확히 0입니다

위로 어긋난 것과 아래로 어긋난 것이 상쇄돼 버리니 부호를 없애야 합니다. 여기까지는 절댓값을 씌워도 해결됩니다. 그런데 굳이 제곱을 쓰는 이유가 더 있습니다.

둘째, 재려는 것이 거리이기 때문입니다. 비유가 아니라 문자 그대로요. 제곱해서 더한 뒤 루트를 씌우면 그게 피타고라스 정리, 즉 우리가 아는 직각 삼각형에서 빗변의 거리를 재는 그 공식입니다.

거리 = √( d₁² + d₂² + d₃² + d₄² ) χ² = d₁² + d₂² + d₃² + d₄² ← 루트만 안 씌운 것

관측한 네 칸을 한 점, 기대한 네 칸을 또 다른 점으로 놓고 보면 χ²는 두 점 사이 거리의 제곱입니다. "예상에서 얼마나 멀리 떨어졌나"를 재는 것이니, 거리를 재는 방식을 그대로 가져다 쓴 겁니다.

셋째, 절댓값으로는 판정 기준을 만들 수 없습니다. 이게 결정적입니다. 표준정규분포를 따르는 값들을 제곱해서 더하면 그 합이 정확히 카이제곱분포를 따른다는 것이 수학적으로 증명돼 있습니다. 그래서 "자유도 5에서 11.07을 넘으면 5% 안쪽" 같은 기준값 표를 만들 수 있는 거고요. 절댓값을 더하면 이름 붙은 분포가 나오지 않아서, 몇을 넘어야 유의한지 판정할 방법 자체가 없어집니다.

제곱은 작은 차이 여러 개보다, 한 칸의 큰 차이가 훨씬 더 크게 잡힙니다

한 칸이 10 어긋남 → 10² = 100
두 칸이 5씩 어긋남 → 5² + 5² = 50

어긋남의 총합은 10으로 같은데 기여도는 두 배 차이입니다. 그래서 χ²가 크게 나왔을 때는 어느 칸이 범인인지 반드시 따로 봐야 합니다. 대개 한두 칸이 값을 거의 다 만들고 있습니다.

기대값으로 왜 나누나

이쪽이 핵심입니다. 기대가 100인 칸에서 10 어긋난 것과, 기대가 5인 칸에서 10 어긋난 것은 무게가 전혀 다릅니다. 그리고 사실 제곱과 나누기는 한 세트입니다. 산식을 이렇게 고쳐 쓰면 보입니다.

(관측 − 기대)² / 기대 = ( (관측 − 기대) / √기대 )²

오른쪽 괄호 안의 값이 대략 표준정규분포를 따릅니다. 각 칸을 "표준편차 몇 개만큼 벗어났나"로 환산한 뒤, 그걸 제곱한 것이 χ²의 각 항인 셈이죠. 앞에서 t검정이 "벗어난 거리 ÷ 원래 흔들리는 폭"이었던 것과 정확히 같은 구조입니다. 여기서는 흔들리는 폭이 √기대도수고요.

같은 10 차이인데 기여도는 20배

기대 100, 관측 110   ▓                        χ² 기여 1.0
기대 5,   관측 15    ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓    χ² 기여 20.0

건수가 많이 쌓이는 칸일수록 원래 요동이 큽니다. 100건 중 10건 차이는 흔한 일이지만, 5건 중 10건 차이는 사건입니다. 각 칸의 어긋남을 그 칸이 원래 낼 만한 요동으로 나눠 눈금을 맞추는 겁니다.

다섯, 실무에서는 이렇게 씁니다

교차표와 독립성 검정

기대도수 = (그 행의 합 × 그 열의 합) ÷ 전체입니다. 업종과 성사가 아무 관계 없다면, 어느 업종이든 전체 성사율 48%가 그대로 적용돼야 한다는 논리입니다.
χ² = (30−24)²/24 + (20−26)²/26 + (18−24)²/24 + (32−26)²/26 = 1.500 + 1.385 + 1.500 + 1.385 = 5.769 자유도 = (행−1) × (열−1) = 1×1 = 1 기준값 = 3.84, p값 ≈ 0.016

기준값으로 χ² = 5.769 > 3.84 → 기각. p값으로 p = 0.016 < 0.05 → 기각. 3.84를 넘었으니 업종과 성사 여부는 무관하지 않다고 말할 수 있습니다. 여기까지가 카이제곱이 해주는 일입니다.

자유도 1 3.84 ← 2×2 교차표 자유도 2 5.99 자유도 5 11.07 자유도 10 18.31 자유도 20 31.41 자유도 44 60.48 ← 뒤에 나올 로또 χ² 의 평균 = 자유도

그런데 t검정 때 했던 이야기를 그대로 반복해야 합니다. 이건 확신이지 세기가 아닙니다. 그래서 하나 더 봅니다.

Cramér's V = √( χ² / (n × (k−1)) ) k = 행·열 중 작은 쪽의 칸수 = √( 5.769 / (100 × 1) ) = 0.24 0.1 약함 · 0.3 보통 · 0.5 강함 (대략의 관례)

V가 0.24니까 관계는 있는데 세지는 않다는 뜻입니다. V는 어려운 내용이 아닙니다. "두 집단의 비율이 얼마나 벌어져 있나"를 0에서 1 사이로 옮겨 적은 것뿐이지요. V² = 지금 나온 어긋남 / 나올 수 있는 최대 어긋남 이라고 보면 되겠네요. 시험으로 치면 내 점수를 만점으로 나눈 거예요.

V가 커진다는 건 두 막대가 벌어진다는 뜻입니다

V = 0.00  제조업 ▓▓▓▓▓▓▓▓▓▓ 50%   서비스업 ▓▓▓▓▓▓▓▓▓▓ 50%
V = 0.24  제조업 ▓▓▓▓▓▓▓▓▓▓▓▓ 60%   서비스업 ▓▓▓▓▓▓▓ 36%   ← 우리 표
V = 0.60  제조업 ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ 80%   서비스업 ▓▓▓▓ 20%
V = 1.00  제조업 ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ 100%   서비스업  0%

위아래 막대가 붙어 있으면 업종을 알아도 성사 여부를 못 맞힙니다. V가 0이에요. 벌어질수록 업종이 정보를 주게 되고, 끝까지 벌어지면 V가 1이 됩니다.

왜 χ² 하나로는 안 되는가

숫자를 세 개 놓고 보면 분명해집니다. 가운데 줄이 핵심입니다. 우리 표의 비율을 그대로 두고 데이터만 10배로 늘린 경우입니다. 성사율 차이는 24%p로 똑같은데 χ²만 10배가 됩니다.

경우 표본 χ² p값 V A · 우리 예시 (60% vs 36%) 100건 5.77 0.016 0.24 B · 같은 비율, 10배 데이터 1,000건 57.7 0.000 0.24 C · 작은 차이 (51% vs 49%) 10,000건 4.0 0.046 0.02

A와 B를 비교해 보십시오. 업종 간 성사율 차이는 24%p로 완전히 똑같습니다. 달라진 건 데이터를 얼마나 모았느냐뿐이에요. 그런데 χ²는 5.77에서 57.7로 뛰었습니다. χ²는 "차이의 크기"가 아니라 "차이의 크기 × 데이터 양"이기 때문입니다. 반면 V는 0.24로 그대로입니다.

C는 반대 방향의 함정입니다. 성사율 차이가 2%p밖에 안 되는데도 데이터가 1만 건이라 p값이 0.046으로 나옵니다. "통계적으로 유의함"이라고 보고할 수 있는 상태죠. 그런데 V는 0.02입니다. 사실상 아무 관계가 없다는 뜻입니다.

★ χ²와 p값은 "이 차이가 진짜로 있는가"에 답합니다. Cramér's V는 "그래서 그 차이가 쓸 만큼 큰가"에 답합니다. 질문이 아예 다르기 때문에 둘 다 봐야 합니다.

보고서로 옮기면 이렇게 달라집니다. "업종에 따라 성사율이 유의하게 다릅니다"라고만 쓰면 듣는 쪽은 당연히 "그럼 업종만 보고 판단하면 되겠네"로 갑니다. V가 0.24라면 거기에 "다만 관계의 세기는 약한 편이라 업종만으로 성사 여부를 예측하기는 어렵고, 다른 변수를 같이 봐야 합니다"까지 붙어야 상대가 제대로 판단할 수 있습니다.

★ 실무 루틴 : 교차표 만들기 → 카이제곱으로 관계 유무 판정 → Cramér's V로 관계의 세기 확인 → 그다음 해석

여섯, 여기서 주의해야 합니다

① p값이 크다고 "관계없음이 증명"된 게 아닙니다

검정은 차이의 증거를 못 찾았다고 말할 뿐입니다. 없다는 것을 증명하는 것과 찾지 못했다는 것은 다른 이야기지요. 표본이 적으면 실재하는 차이도 못 잡습니다. 귀무가설은 기각되거나 기각되지 않을 뿐, 채택되지는 않습니다. 딜 20건만 놓고 검정해서 p=0.4가 나왔다면, 그건 "업종별 성사율이 같다"는 뜻이 아닙니다. "20건으로는 판단할 수 없다"는 뜻입니다.

② 기대도수가 5보다 작은 칸이 있으면 못 씁니다

분모가 작으면 그 칸 하나가 χ²를 통째로 흔듭니다. 관례상 기대도수 5 미만인 칸이 전체의 20%를 넘으면 카이제곱을 쓰지 않고 Fisher 정확검정으로 갑니다. 칸을 합쳐서 범주를 줄이는 방법도 있고요. 실사 데이터를 잘게 쪼개다 보면 이 함정에 자주 걸립니다.

③ 표본이 크면 사소한 차이도 유의해집니다

t검정에서 n이 커지면 t가 커진다고 했던 것과 완전히 같은 문제입니다. χ²도 표본 수에 비례해 커지기 때문에, 10만 건을 넣으면 실무적으로 무의미한 1%p 차이도 유의하게 나옵니다. 그래서 Cramér's V를 반드시 같이 봐야 합니다. 이건 표본 수로 나눠놨거든요.

일곱, 플랫폼에서 로또를 한번... 검증해 봤습니다

로또로 해 봤습니다. 1,237회차 추첨의 번호별 출현 횟수를 세어 균등한지 물었습니다.

χ² = 29.5 자유도 = 44 (번호 45개 − 1) p값 = 0.954 → 균등하지 않다고 말할 근거가 전혀 없음

앞에서 봤듯 카이제곱분포의 평균은 자유도와 같습니다. 자유도가 44면, 번호에 아무 편향이 없어도 χ²가 44 언저리에서 나온다는 뜻이죠. 기준선은 60.48이고요. 그런데 실제로 나온 값이 29.5입니다.

χ² = 0 ────── 44 ────── 60.48 ──────▶ | | | 완벽히 균등 정상 범위 여기부터 (거의 불가능) 한가운데 "편향 있다" 실제 결과 29.5 는 여기 ↓ ─29.5─

무작위라면 평균 44쯤 나왔어야 하는데 그보다도 작게 나온 겁니다. 무작위치고도 오히려 고르게 나왔다는 뜻이에요. 편향을 찾으려던 검정이 반대쪽 결론을 준 셈입니다.

그래서 로또 페이지의 승부 지표를 적중률이 아니라 기대값으로 뒀습니다. 번호에 예측할 정보가 없다는 게 확인됐는데 적중률을 자랑하면 그건 거짓말이 되니까요. 맞힐 수 없는 것을 맞히려 들지 않는 편이 정직합니다. 이 검정으로 말할 수 있는 건 "번호별로 더 잘 나오는 숫자는 없다"까지입니다. "그러니 이 번호를 고르면 유리하다" 같은 말은 여기서 나오지 않고, 나올 수도 없습니다.

검정을 돌리는 이유는 하고 싶은 말에 근거를 붙이려는 게 아니라, 하면 안 되는 말을 미리 걸러내려는 것입니다.

다음 편은 정확 이항검정입니다. "이 동전이 이상한가"를 묻는 자인데, 근사하지 않고 하나하나 정확히 더해서 계산하는 방식이라 이름에 '정확'이 붙었습니다. 적중률이 우연보다 나은지를 판정할 때 쓰는 도구인데, 재미가 있으면 좋겠습니다. ㅎㅎ;

https://k-valuechain.com/lotto

작성: 2026. 8. 이알렉산드로

댓글

가장 많이 본 글