Σ
SDCalc
중급응용·12 min

Cohen의 d와 효과 크기 계산

Cohen의 d, Hedges의 g, Glass의 델타를 포함한 효과 크기 계산법을 마스터하세요. 표준편차를 활용하여 p-값 너머의 실질적 유의성을 측정하는 방법을 배워봅니다.

통계적 유의성을 넘어서: 효과 크기 이해하기

효과 크기는 표본 크기와 독립적으로 차이나 관계의 크기를 측정합니다. p-값이 효과가 통계적으로 유의한지를 알려주는 반면, 효과 크기는 그 효과가 실질적으로 얼마나 의미 있는지를 알려줍니다. 이 구분은 연구, 의학, 교육, 비즈니스에서 근거 기반 의사결정에 매우 중요합니다.

신약이 위약 대비 통계적으로 유의한 개선(p < 0.001)을 보이는 제약 임상시험을 생각해 보세요. 효과 크기 없이는 그 개선이 0.1%인지 50%인지 알 수 없습니다. 효과 크기는 이 핵심적인 맥락을 제공하여 이해관계자들이 비용, 부작용, 구현 노력 대비 효과가 가치 있는지 판단하도록 돕습니다.

두 집단을 비교하는 데 가장 흔히 사용되는 효과 크기 측도는 Cohen의 d로, 평균의 차이를 표준편차 단위로 표현합니다. 이 표준화를 통해 서로 다른 연구와 측정 척도 간의 비교가 가능합니다.

효과 크기가 중요한 이유

통계적 유의성은 표본 크기의 영향을 크게 받습니다. 표본이 충분히 크면 사소한 차이도 “유의”하게 나오고, 반대로 중요한 효과도 작은 표본에서는 유의하지 않을 수 있습니다. 효과 크기는 표본 크기에 독립적인 측도를 제공하여 이 문제를 해결합니다.

유의성의 함정

n=10,000인 연구에서 100점 만점 중 0.5점 차이에 대해 p < 0.001이 나올 수 있습니다. 통계적으로 유의하지만 실질적으로는 무의미합니다(d ≈ 0.05). p-값과 함께 항상 효과 크기를 보고하세요.

효과 크기를 사용하는 핵심 이유:

  • 메타분석: 여러 연구의 효과 크기를 결합하여 전체 효과를 추정 가능
  • 검정력 분석: 향후 연구에 필요한 표본 크기 계산에 필수
  • 실무적 결정: 개입 시행의 가치가 있는지 판단에 도움
  • 재현성: 재현 연구가 목표로 삼을 기준점 제공

Cohen의 d: 표준 효과 크기 측도

Cohen의 d는 두 집단 평균의 차이를 합동 표준편차 단위로 표현합니다:

Cohen의 d

d = (M₁ - M₂) / sp

여기서 M₁과 M₂는 집단 평균이고, sp는 다음과 같이 계산되는 합동 표준편차입니다:

합동 표준편차

sp = √[((n₁-1)s₁² + (n₂-1)s₂²) / (n₁+n₂-2)]

d의 부호는 방향을 나타냅니다: M₁ > M₂이면 양수, M₁ < M₂이면 음수입니다. 방향이 문맥상 명확할 때는 절대값 |d|를 보고하기도 합니다.

왜 표준편차를 합동할까?

합동은 두 집단의 모분산이 같다고 가정합니다. 이는 어느 한 집단의 SD만 사용하는 것보다 더 안정적인 추정치를 제공하며, 독립표본 t-검정의 가정과 일치합니다.

대안적 효과 크기 측도

Cohen의 d가 가장 일반적이지만, 특정 상황에 맞는 대안이 있습니다:

Hedges의 g: 편향 보정 효과 크기

Cohen의 d는 작은 표본에서 모집단 효과 크기를 약간 과대추정합니다. Hedges의 g는 보정 계수를 적용합니다:

Hedges의 g 보정

g = d × (1 - 3/(4(n₁+n₂) - 9))

집단당 표본이 20개 이상이면 차이는 무시할 수 있습니다. 작은 표본(n < 20)에서는 Hedges의 g가 선호됩니다.

Glass의 Δ: 분산이 다른 경우

변동성이 알려진 통제 집단이 있을 때, 통제 집단의 표준편차만 분모로 사용합니다:

Glass의 델타

Δ = (M₁ - M₂) / s_control

처치가 분산에 영향을 줄 수 있는 경우(예: 저성과자에게 더 많이 도움이 되는 개입)에 유용합니다.

효과 크기 해석: Cohen의 기준

Jacob Cohen은 d 값 해석을 위한 다음의 관례를 제안했습니다:

효과 크기 (d)해석집단 간 중첩
0.285% 중첩
0.567% 중첩
0.853% 중첩
1.2매우 큼40% 중첩
2.0거대19% 중첩

맥락이 중요합니다

이것은 대략적인 지침일 뿐 절대적 기준이 아닙니다. 일부 분야에서는 d = 0.2가 매우 의미 있을 수 있고(예: 심장마비 위험 감소), 다른 분야에서는 d = 0.8이 당연할 수 있습니다(예: 과외 vs 무교육).

계산 예시: 교육 개입

한 학교에서 새로운 독서 프로그램을 시험합니다. 통제 집단(n=25): 평균=72, SD=12. 처치 집단(n=30): 평균=79, SD=14. Cohen의 d를 계산합니다:

1

합동 분산 계산

sp² = [(25-1)(12)² + (30-1)(14)²] / (25+30-2) = [24×144 + 29×196] / 53 = [3456 + 5684] / 53 = 172.45
2

합동 SD 계산

sp = √172.45 = 13.13
3

Cohen의 d 계산

d = (79 - 72) / 13.13 = 7 / 13.13 = 0.53
4

해석

중간 효과 크기(d = 0.53). 처치 집단이 통제 집단보다 약 표준편차의 절반만큼 높은 점수를 받았습니다.

이는 처치 집단에서 무작위로 한 학생을, 통제 집단에서 무작위로 한 학생을 뽑으면 처치 학생이 약 64%의 확률로 더 높은 점수를 받는다는 뜻입니다(중첩에서 계산).

Python 구현

신뢰구간과 함께 효과 크기를 프로그래밍적으로 계산합니다:

python
import numpy as np
from scipy import stats

def cohens_d(group1, group2):
    """Calculate Cohen's d for two independent groups."""
    n1, n2 = len(group1), len(group2)
    var1, var2 = np.var(group1, ddof=1), np.var(group2, ddof=1)

    # Pooled standard deviation
    pooled_std = np.sqrt(((n1-1)*var1 + (n2-1)*var2) / (n1+n2-2))

    # Cohen's d
    d = (np.mean(group1) - np.mean(group2)) / pooled_std
    return d

def hedges_g(group1, group2):
    """Calculate Hedges' g (bias-corrected effect size)."""
    n1, n2 = len(group1), len(group2)
    d = cohens_d(group1, group2)

    # Correction factor for small sample bias
    correction = 1 - 3 / (4*(n1+n2) - 9)
    return d * correction

# Example usage
control = [68, 72, 75, 70, 69, 74, 71, 73, 76, 72]
treatment = [75, 79, 82, 78, 80, 77, 81, 76, 83, 79]

d = cohens_d(treatment, control)
g = hedges_g(treatment, control)
print(f"Cohen's d: {d:.3f}")
print(f"Hedges' g: {g:.3f}")