ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • P-value와 효과크기 비교 실험: 같은 유의성 판정, 다른 차이의 크기
    Machine Learning/데이터과학을 위한 통계 2026. 9. 3. 11:11
    728x90
    반응형

    핵심: p-value 하나로 중요도를 결론내리지 않고, 효과크기·절대 차이·분산·신뢰구간을 함께 확인합니다.

    p-value가 작으면 차이도 큰 걸까요? 꼭 그렇지는 않습니다. 표본이 충분히 크면 아주 작은 차이도 통계적으로 유의해질 수 있고, 표본이 작으면 꽤 큰 차이도 유의하지 않을 수 있습니다. 그래서 결과표에서 p-value만 떼어 읽으면 실제 판단에 필요한 크기와 불확실성을 놓치게 됩니다.

    이번 글에서는 실제 사용자나 고객 데이터 대신, 조건을 공개할 수 있는 합성 fixture 두 개를 고정해 비교했습니다. 두 fixture는 t 통계량과 유의성 판정을 같게 만들었지만, p-value가 같은 것은 아닙니다. 표본 수와 평균 차이를 다르게 설계해 비슷한 p-value가 실제로는 얼마나 다른 차이를 가릴 수 있는가를 확인했습니다.

    분석 결과를 읽을 때 p-value와 효과크기를 나누어 보는 장면

    그림 1. p-value가 비슷해도 절대 차이와 효과크기는 달라질 수 있습니다.

    결론부터 보면

    먼저 제목을 정확히 읽어야 합니다. 여기서 “같은 유의성 판정”은 두 결과 모두 p<0.05라는 뜻입니다. p-value 자체는 A가 0.00157712, B가 0.00307301로 서로 다르고, 두 결과에서 정확히 같은 값은 t 통계량 3.16227766입니다.

    두 조건 모두 양측 검정에서 유의했습니다. 그러나 A의 평균 차이는 1, Cohen's d는 0.10이고, B의 평균 차이는 10, Cohen's d는 1.00입니다. A의 p-value가 더 작다고 해서 A의 차이가 더 크거나 더 중요한 것은 아닙니다.

    조건 집단별 n treatment-control 평균 차이 Cohen's d p-value · 95% CI
    A · 큰 표본
    작은 차이
    2,000 +1 0.10 0.00157712
    95% CI: 0.380 ~ 1.620
    B · 작은 표본
    큰 차이
    20 +10 1.00 0.00307301
    95% CI: 3.598 ~ 16.402

    두 행의 t 통계량은 모두 3.16227766입니다. p-value가 완전히 같지 않은 이유는 자유도(df)가 A는 3,998, B는 38로 다르기 때문입니다. 중요한 점은 두 결과가 모두 같은 유의성 문턱을 넘었다는 사실보다, 그 문턱을 넘은 차이가 어느 정도 크기인지가 서로 다르다는 데 있습니다.

    큰 표본의 작은 효과와 작은 표본의 큰 효과를 비교한 통계 인포그래픽

    그림 2. A는 큰 표본에서 작은 차이를, B는 작은 표본에서 큰 차이를 보여 줍니다.

    실험 조건을 먼저 고정했습니다

    결과를 보고 fixture를 고른 것이 아니라, 계산 전에 다음 조건을 고정했습니다.

    • A: control 평균 100, treatment 평균 101, 집단별 n=2,000, 표본 표준편차 10
    • B: control 평균 100, treatment 평균 110, 집단별 n=20, 표본 표준편차 10
    • 검정: 독립된 두 집단의 pooled two-sample t-test, 양측, 유의수준 0.05
    • 효과크기: 평균 차이를 pooled sample SD로 나눈 Cohen's d
    • 불확실성: 평균 차이의 95% 신뢰구간
    • 반복: 난수 seed를 바꾼 반복은 하지 않았습니다. 동일한 입력을 다시 계산하는 결정적 fixture이므로, 반복 변동성 대신 입력 조건과 계산식을 재현하는 데 초점을 맞췄습니다.

    각 집단은 평균을 중심으로 같은 크기의 음수·양수 편차를 배치해 표본 표준편차가 정확히 10이 되도록 만들었습니다. 그래서 결과를 흔드는 랜덤 seed 대신, 입력 조건과 계산식을 그대로 다시 실행할 수 있게 했습니다.

    fixture를 다시 만드는 최소 코드

    각 집단에 같은 크기의 음수·양수 편차를 배치하면 목표 평균과 표본 표준편차를 고정할 수 있습니다. 아래 코드는 실험에 사용한 합성 집단 생성 규칙을 짧게 옮긴 것입니다. 통계량은 이 집단에 pooled two-sample t-test를 적용해 계산합니다.

    function makeGroup(mean, n, sd) {
      const offset = sd * Math.sqrt((n - 1) / n);
      const half = n / 2;
      return Array.from({ length: n }, (_, i) =>
        mean + (i < half ? -offset : offset)
      );
    }
    
    const controlA = makeGroup(100, 2000, 10);
    const treatmentA = makeGroup(101, 2000, 10);
    const controlB = makeGroup(100, 20, 10);
    const treatmentB = makeGroup(110, 20, 10);

    A는 평균 차이 1, B는 평균 차이 10을 만들고 두 조건의 pooled 표본 표준편차를 10으로 맞춥니다. 따라서 d × sqrt(n / 2)가 두 조건에서 같아져 t 통계량이 같아집니다. p-value의 미세한 차이는 자유도 차이에서 생깁니다.

    p-value는 차이의 크기가 아닙니다

    이 실험에서 p-value는 귀무가설이 참일 때 관측된 차이 이상으로 극단적인 결과가 나올 가능성을 요약합니다. p-value 자체가 귀무가설이 참일 확률도 아니고, 효과의 크기나 의사결정의 중요도를 알려 주는 숫자도 아닙니다.

    두 집단 평균 차이의 표준오차는 대략 다음처럼 표본 수의 영향을 받습니다.

    SE = pooled_SD × sqrt(2 / n)
    t  = mean_difference / SE
    d  = mean_difference / pooled_SD

    A에서는 차이가 1에 불과하지만 집단별 표본이 2,000개라 표준오차가 0.3162까지 줄었습니다. B에서는 차이가 10으로 더 크지만 집단별 표본이 20개라 표준오차가 3.1623입니다. 두 t 값은 같아지고, p-value는 자유도 차이만큼 비슷한 수준으로 나옵니다.

    효과크기와 절대 차이를 같이 읽는 순서

    1. 먼저 절대 차이를 적습니다

    평균이 몇 단위 달라졌는지부터 적어야 합니다. A의 +1과 B의 +10은 p-value를 보지 않아도 다른 크기입니다. 단위가 있는 지표라면 이 차이가 실제 운영에서 어느 정도인지 바로 연결할 수 있습니다.

    2. 같은 단위가 어려우면 효과크기를 봅니다

    Cohen's d는 표준편차를 기준으로 차이를 표준화합니다. 이번 fixture에서는 pooled SD가 10이므로 A는 d=0.10, B는 d=1.00입니다. 단, d의 해석도 분야·측정도구·비용에 따라 달라지며, 숫자만으로 자동 판정할 수는 없습니다.

    3. 신뢰구간으로 가능한 범위를 남깁니다

    A의 95% CI는 0.380~1.620, B는 3.598~16.402입니다. 점 추정치 하나만 보고 확신하지 않고, 데이터가 허용하는 범위를 함께 남기면 “정확히 1이다”와 “대략 0.38에서 1.62 사이일 수 있다”를 구분할 수 있습니다.

    보고 문장을 이렇게 바꾸면 됩니다

    p-value만 적는 문장보다 판단에 필요한 숫자를 함께 적는 편이 낫습니다.

    A: 평균 차이는 1.000, Cohen's d=0.10, 95% CI는 0.380~1.620, p=0.00158이었다. 통계적으로 유의했지만 실질적 중요도는 최소 중요 차이와 비교해 판단해야 한다.

    B: 평균 차이는 10.000, Cohen's d=1.00, 95% CI는 3.598~16.402, p=0.00307이었다. A와 같은 t 통계량을 보였지만 절대 차이와 표준화 효과크기는 더 컸다.

    여기서 “중요하다”라는 결론을 자동으로 붙이지 않은 이유도 분명합니다. 예를 들어 업무 지표에서 최소 중요 차이가 5라면 A와 B의 판단은 달라질 수 있지만, 그 기준 5는 통계 검정이 정해 주는 값이 아니라 제품·업무·도메인에서 먼저 정해야 하는 값입니다.

    결과표를 닫기 전 체크리스트

    • p-value와 함께 절대 평균 차이를 적었나?
    • 효과크기의 정의와 값, 방향을 적었나?
    • 표본 수와 분산 또는 표준편차를 확인했나?
    • 95% 신뢰구간을 보고 가능한 범위를 남겼나?
    • 실질적 중요도를 판단할 최소 차이 또는 비용 기준이 있나?
    • 합성 데이터, 탐색 결과, 실제 데이터의 경계를 구분했나?

    이번 글의 한계

    이번 결과는 두 집단의 분산이 같고, 독립 표본이며, 평균 차이가 대칭적으로 만들어진 합성 fixture에서 나온 값입니다. 실제 데이터의 이상치, 결측, paired 구조, 순서형 척도, 반복 측정은 포함하지 않았습니다. 따라서 이 숫자를 의료·제품·정책 효과로 일반화할 수 없습니다.

    또한 p-value와 효과크기를 함께 보았다고 해서 어떤 검정을 선택할지까지 해결되는 것은 아닙니다. T-test와 Mann-Whitney 중 무엇을 쓸지는 비교 질문과 자료 구조를 먼저 확인해야 하는 별도의 문제입니다.

    마무리

    p-value는 “우연만으로 보기 어려운가”를 묻는 숫자에 가깝고, 효과크기와 절대 차이는 “얼마나 달라졌는가”를 묻습니다. 신뢰구간은 “그 차이가 어느 범위까지 가능한가”를 남깁니다.

    결과표를 볼 때 순서를 하나만 기억하면 됩니다. 절대 차이 → 효과크기 → 분산과 표본 수 → 신뢰구간 → 의사결정 기준 → p-value. p-value 하나로 결론을 닫지 않고, 이 순서로 숫자를 다시 펼쳐 보면 통계적으로 유의한 결과와 실제로 중요한 결과를 구분하기 쉬워집니다.

    기본 용어와 T-test·Z-test의 차이가 먼저 필요하다면 P-Value, T-Test, Z-Test 설명도 함께 읽어보세요. 이번 글은 그 설명을 반복하기보다, 고정 합성 fixture로 p-value와 효과크기의 역할을 나눠 본 후속 글입니다.

    728x90
    반응형
Designed by Tistory.