<!doctype html>
2026년 6월 24일 | 개발 공부
Hedges' g는 두 그룹의 평균 차이를 표준편차 단위로 읽되, 표본 수가 작을 때 Cohen's d가 조금 크게 보이는 문제를 보정한 효과 크기다. 이름만 보면 또 다른 통계 기호처럼 느껴지지만, 실제로는 “이 평균 차이를 그대로 믿어도 되는가”를 묻는 아주 실무적인 장치에 가깝다. 나는 작은 실험표에서 d만 덜렁 적힌 숫자를 볼 때마다, 표본 수가 몇 개인지와 보정이 들어갔는지를 먼저 확인하게 됐다.
최근 효과 크기들을 이어서 정리하다 보니, p-value보다 먼저 “차이가 어느 단위로 적혔는지”를 보는 습관이 더 중요해졌다. Glass's Delta는 기준군 표준편차를 자로 쓰고, Cliff's Delta나 Vargha-Delaney A12는 두 묶음의 승패 비율을 본다. Hedges' g는 그중에서도 두 그룹의 평균 차이를 pooled standard deviation으로 표준화하되 작은 표본 편향을 줄이는 쪽에 서 있다.
Cohen's d와 거의 같은 출발점
계산의 출발점은 낯설지 않다. 두 그룹의 평균 차이를 구하고, 두 그룹의 표준편차를 합친 pooled SD로 나누면 Cohen's d가 된다. 예를 들어 모델 A와 모델 B의 query-level 점수 평균이 0.04만큼 벌어졌고 pooled SD가 0.10이라면 d는 0.4다. 숫자만 놓고 보면 “평균 차이가 표준편차의 0.4칸 정도”라는 뜻이다.
문제는 표본 수가 작을 때다. 작은 평가 세트에서는 표준편차 추정 자체가 흔들리고, d가 실제 모집단 효과보다 조금 크게 보이는 경향이 생긴다. Hedges' g는 여기서 보정 계수 J를 곱한다. J는 보통 1보다 조금 작은 값이라, 결과적으로 g는 d보다 약간 작아진다. 이 차이가 크지는 않아도, n이 작을수록 해석에는 꽤 중요해진다.
작은 표본 보정이 필요한 순간
내가 이 값을 떠올리는 상황은 대개 샘플 수가 애매한 실험이다. query 20개짜리 retrieval 비교, seed 5개짜리 모델 실험, 사용자 로그를 아직 충분히 모으지 못한 A/B 전초전 같은 경우다. 평균 차이는 보이는데, 그 차이를 그대로 크게 말하기에는 평가 표면이 얇다. 이때 Hedges' g를 쓰면 효과가 사라지는 것은 아니지만 해석의 톤이 한 칸 낮아진다.
이 보정은 결론을 보수적으로 만들기 위한 장식이 아니다. 작은 표본에서 큰 숫자가 나왔을 때 “우리가 운 좋게 큰 차이를 뽑은 건 아닌가”를 한 번 묻는 장치다. 특히 여러 설정을 훑으며 가장 좋아 보이는 결과만 골라낸 날에는 더 조심해야 한다. 표본 수가 작고 후보가 많을수록, 보기 좋은 효과 크기는 선택 과정의 산물일 가능성도 커진다.
보정 계수 자체도 생각보다 직관적이다. 자유도 df가 커질수록 J는 1에 가까워지고, 표본이 작을수록 1보다 더 멀어진다. 흔히 근사식으로 J = 1 - 3/(4df - 1)을 쓰는데, 이 식을 외우는 것보다 중요한 건 방향이다. 표본이 충분히 많으면 d와 g는 거의 같아지고, 표본이 작으면 g가 d보다 눈에 띄게 작아진다.
이 차이를 보고 “효과가 줄었다”고 표현하면 조금 어색하다. 효과 자체가 줄어든 게 아니라, 우리가 작은 표본에서 얻은 추정치를 덜 성급하게 읽는 것이다. 그래서 나는 작은 실험의 첫 결과를 공유할 때 g를 함께 적어 두면 말투가 차분해진다고 느낀다. 숫자가 좋아 보이는 날일수록 이런 보정 흔적이 있어야 다음 실험 설계를 덜 낙관적으로 잡는다.
보고서에 같이 적을 숫자들
Hedges' g 하나만 적으면 오히려 답답하다. 나는 최소한 평균 차이, 각 그룹의 표준편차, pooled SD, Cohen's d, 보정 계수 J, Hedges' g를 나란히 남기는 편이 좋다고 본다. 표가 길어 보이면 d와 g만 남길 수도 있지만, 원자료 단위의 평균 차이를 같이 적어야 나중에 다시 읽기 편하다. 표준화 효과 크기는 비교를 쉽게 하지만, 원래 metric의 감각을 지우는 부작용도 있다.
예를 들어 “평균 nDCG 차이 0.032, d 0.52, Hedges' g 0.49”처럼 적으면 숫자가 덜 과장된다. d와 g의 차이가 작아 보여도, 그 차이가 “작은 표본 보정이 들어갔다”는 흔적이다. 여기에 bootstrap confidence interval을 붙이면 더 좋다. g는 효과 크기의 한 점이고, bootstrap은 현재 평가 세트가 바뀌었을 때 그 효과가 얼마나 흔들릴지를 보여 준다.
반대로 표본이 충분히 크면 g만 고집할 필요는 덜하다. d와 g가 사실상 같은 값으로 붙어 있다면, 보고서에는 g를 대표값으로 두고 괄호 안에 d를 남기는 정도면 충분하다. 중요한 건 같은 프로젝트 안에서 표기 기준을 바꾸지 않는 것이다.
Glass's Delta와 헷갈리지 않기
Glass's Delta와 Hedges' g는 둘 다 평균 차이를 표준편차 단위로 바꾸지만, 질문이 다르다. Glass's Delta는 기준군의 표준편차를 분모로 고정한다. “기준 운영 상태의 흔들림으로 보면 이 변화가 몇 칸인가”를 묻고 싶을 때 자연스럽다. 반면 Hedges' g는 두 그룹의 분산을 합친 pooled SD에서 출발한다. 두 그룹을 더 대칭적인 비교 대상으로 놓는 셈이다.
그래서 기준선이 명확하고 개입이 분산 자체를 바꿀 수 있다면 Glass's Delta가 더 읽기 쉽다. 두 독립 그룹을 비교하고, 평균 차이의 표준화 크기를 조금 더 일반적인 방식으로 말하고 싶다면 Hedges' g가 편하다. 나는 둘 중 하나가 더 고급이라고 보지 않는다. 어떤 분모가 질문에 맞는지를 먼저 정하고, 그다음 효과 크기 이름을 고르는 쪽이 덜 헷갈린다.
내가 실제로 쓰는 판단 순서
작은 평가 로그를 받으면 먼저 paired 구조인지부터 본다. 같은 query를 두 설정이 모두 지난 비교라면 paired delta, permutation test, Wilcoxon signed-rank test가 먼저다. 독립 두 그룹처럼 봐도 되는 상황이고 평균 차이를 말하고 싶다면 Hedges' g 후보로 넘어간다. 분포 모양이 많이 다르거나 평균보다 승패 비율이 중요하면 Cliff's Delta나 Vargha-Delaney A12를 본다.
그다음 표본 수를 확인한다. 표본이 작으면 d만 적지 않고 g를 같이 적는다. 마지막으로 원자료 plot이나 최소한 샘플별 차이 목록을 붙인다. 효과 크기는 숫자를 예쁘게 만드는 도구가 아니라, 다음 실험을 계속할지 멈출지 정하는 압축된 신호다. 작은 표본에서는 그 신호가 쉽게 커 보이기 때문에, Hedges' g처럼 한 번 낮춰 읽는 절차가 꽤 믿음직하다.
'[개발 공부]' 카테고리의 다른 글
| MDE: 실험표가 잡아낼 수 있는 최소 차이 (0) | 2026.06.25 |
|---|---|
| TOST 등가성 검정과 허용 폭 (0) | 2026.06.25 |
| Glass's Delta: 기준군 표준편차로 읽는 평균 차이 (0) | 2026.06.23 |
| Vargha-Delaney A12: 두 독립 표본의 승률 효과 크기 (0) | 2026.06.22 |
| Brunner-Munzel 검정: 분포 모양이 다른 두 표본 비교 (0) | 2026.06.21 |