[개발 공부] / Hodges-Lehmann 추정량: p-value 옆 중앙 차이.md

Hodges-Lehmann 추정량: p-value 옆 중앙 차이

조회

2026년 6월 16일 | 개발 공부


평가표에서 p-value만 붙어 있으면, 나는 늘 한 칸이 비어 있는 느낌을 받는다. 유의하냐 아니냐는 신호는 보이지만, 실제로 두 설정 사이의 대표 차이가 어느 정도인지는 바로 보이지 않기 때문이다. Hodges-Lehmann estimator는 이 빈칸을 채우는 데 꽤 좋은 이름이다. 여러 샘플 차이에서 중앙에 가까운 차이를 잡아, p-value 옆에 “그래서 보통 얼마만큼 움직였나”를 놓게 해 준다.

Hodges-Lehmann 추정량을 평가표에 붙이는 흐름
Figure 1: p-value가 차이 신호를 묻는 칸이라면, Hodges-Lehmann 추정량은 대표적인 중앙 차이를 옆에 붙이는 칸에 가깝다.

평균 차이만으로는 불편한 순간

모델 A와 B를 같은 query set에서 비교하면 보통 평균 delta부터 본다. 예를 들어 nDCG가 평균 +0.018 올랐다고 쓰는 식이다. 그런데 query 몇 개가 크게 좋아지고 나머지는 거의 그대로라면, 평균은 그 큰 샘플에 꽤 쉽게 끌린다. 반대로 대부분 조금 좋아졌는데 몇 개가 크게 나빠져 평균이 작아지는 경우도 있다. 그래서 평균 하나만 보면 개선의 모양이 너무 빨리 납작해진다.

Hodges-Lehmann 추정량은 이때 “차이의 중심”을 조금 더 튼튼하게 보려는 장치로 이해하면 편하다. paired 비교에서는 각 query의 차이를 만들고, 그 차이들이 보통 어느 값 근처에 있는지를 median 계열로 잡는다. 독립 두 그룹에서는 한쪽 값과 다른 쪽 값의 모든 pairwise 차이를 만든 뒤 그 중앙을 본다. 세부 정의는 상황에 따라 다르지만, 내가 실험 노트에서 쓰는 감각은 같다. 평균이 outlier에 흔들릴 때 중앙 쪽 차이를 같이 본다는 것이다.

Wilcoxon 옆에 붙이면 읽기가 쉬워진다

Wilcoxon signed-rank test를 쓰면 paired delta의 부호와 절대값 순위를 이용해 차이 신호를 볼 수 있다. 하지만 Wilcoxon p-value만 표에 있으면, 결국 “차이가 0이라고 보기 어렵다”는 문장으로만 끝나기 쉽다. 실제 운영에서는 그 다음 질문이 더 중요하다. 차이가 있다면 어느 정도인가, 그 정도가 내가 제품이나 실험 설정을 바꿀 만큼 큰가, 몇 개 샘플만 만든 신호인가.

그래서 나는 Wilcoxon이나 paired permutation test 옆에 Hodges-Lehmann 추정량을 같이 붙이는 구성을 좋아한다. 예를 들면 평균 delta, HL delta, p-value, 큰 delta 샘플 목록을 한 줄에 둔다. 평균은 전체 방향을 보여 주고, HL은 중앙 근처의 대표 차이를 보여 주고, p-value는 우연 신호 여부를 묻고, 샘플 목록은 다음에 열어 볼 대상을 준다. 이 네 칸이 같이 있으면 통계 검정이 결론 버튼처럼 보이는 일이 줄어든다.

독립 그룹에서는 모든 쌍의 차이를 조심해서 본다

Mann-Whitney U test처럼 독립 두 그룹을 비교할 때도 Hodges-Lehmann 추정량을 생각할 수 있다. 이때는 그룹 A의 값과 그룹 B의 값을 하나씩 짝지어 가능한 차이를 만들고, 그 차이들의 중앙을 본다. 직관적으로는 “A에서 임의의 값 하나, B에서 임의의 값 하나를 뽑았을 때 보통 어느 정도 차이가 나는가”에 가깝다. 평균 차이보다 rank 기반 검정과 더 잘 맞는 요약으로 붙일 수 있다.

다만 이 값을 너무 자동으로 읽으면 안 된다. 두 분포 모양이 아주 다르거나 샘플 수가 한쪽으로 크게 기울면, 중앙 차이 하나가 모든 이야기를 대신하지 못한다. 특히 latency처럼 꼬리가 긴 지표에서는 HL이 평균보다 안정적으로 보여도, 꼬리에서 실제 사용자 경험이 깨지는 문제는 따로 봐야 한다. 나는 그래서 독립 그룹 비교에서는 HL 추정량을 효과 크기의 한 줄 요약이 아니라 inspection queue를 줄이는 숫자로 둔다.

표에는 숫자보다 역할을 먼저 적는다

작은 실험표에 통계 숫자를 붙일 때 가장 흔한 실수는 칸을 많이 늘리는 것이다. p-value, 보정 p-value, 평균, 중앙값, 효과 크기, confidence interval을 전부 넣다 보면 표는 그럴듯하지만 판단은 느려진다. 그래서 나는 먼저 각 칸의 역할을 정한다. 평균 delta는 전체 방향, Hodges-Lehmann은 중앙 차이, interval은 흔들림 폭, p-value는 차이 신호, 샘플 큐는 원인 확인이다.

이렇게 역할을 정해 두면 숫자가 결론처럼 굳지 않는다. 예를 들어 평균 delta는 +0.018인데 HL delta가 +0.003이면, 몇 개 큰 query가 평균을 밀었을 가능성을 의심한다. 반대로 평균은 작아도 HL이 꾸준히 양수라면, 작은 개선이 넓게 깔렸는지 본다. p-value가 유의하지 않아도 HL과 interval이 안정적으로 한쪽을 가리키면 다음 실험 후보로 남길 수 있고, p-value가 유의해도 HL이 너무 작으면 실무 효과는 보류할 수 있다.

또 하나는 방향 표기다. HL delta가 +0.011이라고 적었는데, 그 값이 새 설정 - 기준 설정인지 기준 설정 - 새 설정인지 빠지면 다음 사람이 거의 다시 계산해야 한다. 통계 숫자는 값 자체보다 계산 약속이 더 빨리 잊힌다. 그래서 나는 표 제목이나 캡션에 방향을 꼭 붙인다. 작은 습관이지만, 나중에 부호가 뒤집힌 채 해석되는 사고를 꽤 줄여 준다.

내가 남기는 최소 메모

내 기준의 최소 메모는 길지 않다. paired unit이 무엇인지, delta 방향이 무엇인지, 평균 delta와 Hodges-Lehmann 추정량이 얼마인지, p-value를 어떤 family 안에서 보정했는지, 마지막으로 큰 차이를 만든 샘플이 몇 개인지만 적는다. 이 정도만 있어도 며칠 뒤 표를 다시 열었을 때 “왜 이 설정을 남겼지”를 다시 추측하지 않아도 된다.

실제로는 이 메모 하나가 회의나 코드 리뷰에서도 도움이 된다. 누군가 “유의하긴 한데 얼마나 좋아졌나요?”라고 물었을 때, 표를 다시 계산하지 않고 바로 중앙 차이와 큰 샘플을 보여 줄 수 있다. 반대로 “평균은 좋아졌는데 대부분의 query도 그런가요?”라는 질문에도 HL 칸이 첫 답을 준다. 숫자의 역할이 분리되어 있으면 토론도 훨씬 덜 흔들린다.

Hodges-Lehmann 추정량이 모든 문제를 해결해 주는 숫자는 아니다. 그래도 p-value 옆에 중앙 차이를 하나 붙여 두면, 실험 결과를 읽는 속도가 달라진다. 유의성이라는 문턱과 실제 차이의 크기를 분리해서 볼 수 있기 때문이다. 나는 이 작은 분리가 꽤 중요하다고 느낀다. 모델 평가에서 필요한 건 별표 하나가 아니라, 다음에 어느 샘플을 열고 어느 설정을 보류할지 정하는 판단이기 때문이다.

댓글

홈으로 돌아가기

검색 결과

"" 검색 결과입니다.