projects

ANOVA F-test — 그룹 평균의 차이가 우연인지 가려내는 검정

ANOVA F-test — 그룹 평균의 차이가 우연인지 가려내는 검정

한 줄: 그룹 사이의 차이가, 그룹 안의 우연한 출렁임에 비해 충분히 큰가? — 이 비율 하나로 검정한다.

1. 어떤 질문에 답하는가

store가 10개 있다. 각 store의 주간 판매 평균이 조금씩 다르다. 이게 진짜 차이(store마다 체계적으로 다르게 팔림)인가, 우연(어쩌다 표본이 그렇게 나옴)인가?

두 그룹이면 t-test로 끝나지만 그룹이 10개면 쌍이 45개다. t-test를 45번 돌리면 "우연히 유의"가 나올 확률이 누적되어 (유의수준 5%씩 45번) 1종 오류가 폭발한다. ANOVA는 "전부 같다"는 하나의 가설을 한 번에 검정해서 이 문제를 피한다.

2. 핵심 아이디어 — 두 종류의 흩어짐을 비교한다

데이터의 전체 흩어짐을 두 조각으로 쪼갠다:

  • 그룹 사이(between): 그룹 평균들이 전체 평균에서 흩어진 정도 → "차이의 크기"
  • 그룹 안(within): 각 데이터가 자기 그룹 평균에서 흩어진 정도 → "우연의 크기" (기준선)

직관: 그룹 안에서 자연스럽게 출렁이는 폭이 ±30인데 그룹 평균들끼리 ±5밖에 차이가 안 나면 — 그건 우연으로 설명된다. 그룹 평균들이 ±200씩 다르면 — 우연으로는 안 된다.

3. 식 — 각 항이 무엇인지

F=SSB/(k1)SSW/(nk)=MSBMSWF = \frac{SS_B / (k-1)}{SS_W / (n-k)} = \frac{MS_B}{MS_W}

기호정의의미
SSBSS_Bgng(yˉgyˉ)2\sum_g n_g(\bar{y}_g - \bar{y})^2그룹 평균들의 흩어짐 (between 제곱합)
SSWSS_Wgi(yiyˉg)2\sum_g \sum_i (y_i - \bar{y}_g)^2그룹 안 흩어짐 (within 제곱합)
k1k-1, nkn-k자유도평균 내기 위한 나눗셈의 분모 (그룹 수 보정 / 표본 수 보정)
MSMSSS ÷ df"자유도당 평균 흩어짐" — 공정한 비교 단위

H0(귀무가설) = 모든 그룹 평균이 같다. H0이 참이면 between도 within도 같은 우연에서 나오므로 F ≈ 1. F가 1보다 충분히 크면 — 그 "충분히"를 F분포 F(k1,nk)F(k-1, n-k)가 정해주고 — H0 기각.

4. 큰 표본의 함정 (이 프로젝트의 핵심 논점)

분모 MSW=SSW/(nk)MS_W = SS_W/(n-k)는 n이 커질수록 정밀해진다 → 아무리 미세한 그룹 차이도 n이 크면 F가 커지고 p ≈ 0이 된다. n = 130,000에서 p < 0.001은 정보가 아니라 표본 크기의 부산물이다.

그래서 질문을 바꾼다: "차이가 있는가"(p) → "차이가 얼마나 큰가"(effect size). 그리고 여기 예쁜 연결이 있다 — ANOVA의 분해에서 바로:

η2=SSBSST=SSBSSB+SSW\eta^2 = \frac{SS_B}{SS_T} = \frac{SS_B}{SS_B + SS_W}

F와 η²는 같은 분해(SS_B, SS_W)의 두 가지 읽기다. F는 "우연 대비 비율"(표본 크기에 민감), η²는 "전체 분산 중 그룹의 몫"(표본 크기와 무관). Cohen 기준: 0.01 / 0.06 / 0.14 = small / medium / large.

5. 우리 프로젝트에서

측정판정
store F2,463 (p ≈ 0)유의 — 단 정보 없음 (n=130K)
item F4,418 (p ≈ 0)동일
store η²14.57%LARGE
item η²62.49%LARGE — store의 4배
joint η²79.49%Stage 1의 이론 상한

흐름: F-test는 문지기(존재 확인)로만 쓰고, 결정 — 둘 다 입력 포함, item이 주 신호, 그리고 천장 0.7949 — 은 전부 η²가 내렸다.

6. 예상 질문 대비

  1. "H0의 '전부 같다'가 정확히 무슨 뜻인가?" → ① 같다의 대상은 모집단 평균 (μ₁=⋯=μ₁₀) — 표본 평균은 우연만으로도 다르게 나온다. ② 대립가설은 "전부 다르다"가 아니라 "적어도 하나는 다르다" — F 유의는 어느 그룹이 다른지를 말해주지 않는다. ③ "같다"를 기준점으로 두는 이유: 차이=0이라는 정확한 한 점이라 거리(F)를 잴 수 있다. ④ "분산이 같다"는 H0가 아니라 전제 조건(등분산 가정) — 검정 대상은 평균뿐.
  2. "왜 t-test를 여러 번 안 하고 ANOVA를 썼나?" → 10개 그룹이면 45쌍 — 다중비교로 1종 오류가 누적된다. ANOVA는 한 번에 검정한다.
  3. "p가 0인데 왜 무시했나?" → 무시한 게 아니라 역할을 한정했다. n=130K에선 p ≈ 0이 자동이라(분모 표준오차 소멸) 크기 정보가 없다 — effect size로 전환.
  4. "ANOVA의 가정은?" → 그룹 내 정규성, 등분산성, 독립성. 본 데이터는 σ∝μ(이분산)와 시간 의존이 있어 가정이 완벽하지 않지만, 우리는 ANOVA를 추론(신뢰구간)이 아니라 분산 분해의 입구로 썼기 때문에 — 그리고 최종 판단을 분포 가정이 필요 없는 η² 비율로 했기 때문에 — 결론이 흔들리지 않는다.
  5. "F = 2,463이 의미하는 바는?" → 그룹 간 평균 흩어짐이 그룹 내 우연 흩어짐의 2,463배라는 비율. 단, n이 커서 이 숫자 자체보다 η²가 실질 정보.

용어 미니

용어
SS (제곱합)편차²의 합 — 흩어짐의 총량
MS (평균제곱)SS ÷ 자유도 — 비교 가능한 단위로 만든 흩어짐
자유도 (df)자유롭게 변할 수 있는 값의 개수 — k−1(그룹), n−k(잔차)
F분포H0 하에서 F 비율이 따르는 기준 분포 — "우연이면 이 정도"
1종 오류차이가 없는데 있다고 결론 (false positive)