13강 / 20강
귀무분포 — 우연을 직접 만들어 재기
순열검정 한 판
6강에서 상호정보량이 표본이 적으면 부풀려진다고 했습니다. 11강의 t 값도, 5강의 상관계수도 마찬가지입니다. 값 하나만 보고는 판정할 수 없습니다.
해법은 놀랍도록 단순합니다.
변이 표시를 환자들 사이에서 마구 섞어 같은 계산을 수천 번 반복한다
섞고 나면 변이와 활성 사이의 진짜 관계는 끊어집니다. 그런데도 계산은 매번 0 이 아닌 값을 냅니다 — 그게 우연이 만들어 내는 값의 범위입니다. 이것을 귀무분포(null distribution) 라고 합니다.
실제 자료에서 나온 값이 이 분포의 바깥쪽 끝에 있으면 "우연이 아니다"라고 말합니다. 그 바깥쪽에 있는 비율이 곧 p값입니다.
🎮 직접 섞어 보세요
섞는 횟수를 늘려 가며 히스토그램이 어떻게 채워지는지, 관측값이 어디에 서 있는지 보세요.
10,000번 섞는 데 몇 초면 됩니다. 분포를 가정할 필요가 전혀 없습니다.
Python
브라우저에서 실행
🤔 확인 문제
순열검정에서 변이 표시를 섞는 이유는 무엇인가요?
해설 섞는 순간 '이 환자에게 변이가 있다' 는 정보가 무작위가 됩니다. 남은 것은 순전히 자료의 구조와 우연이고, 그 범위가 판정의 기준자가 됩니다.
무엇을 섞을 것인가 — 함정
순열검정에서 가장 흔한 실수는 섞으면 안 되는 것을 섞는 것입니다. "귀무가설이 참일 때 자료가 어떻게 생겼을까"를 정확히 흉내내야 합니다.
| 검정하려는 것 | 섞을 것 | 유지할 것 |
|---|---|---|
| 변이 ↔ MR 활성 | 환자별 변이 표시 | 활성값들의 구조 |
| 레귤론 농축 | 레귤론에 속한 유전자 이름 | 시그니처 순위표 |
| 두 아형 차이 | 아형 표시 | 환자별 발현 프로필 전체 |
예를 들어 아형 표시 대신 유전자 이름을 섞으면, 유전자들 사이의 상관 구조가 깨져서 귀무분포가 실제보다 좁아집니다. 그러면 p값이 실제보다 작게 나와 거짓 발견이 쏟아집니다.
이 실수는 실제 논문에서도 종종 발견됩니다. 무엇을 섞는지 늘 확인하세요.
Python
브라우저에서 실행
🤔 확인 문제
유전자들이 서로 상관되어 있는 자료에서 유전자마다 따로 값을 섞어 귀무분포를 만들면 어떤 문제가 생기나요?
해설 함께 움직이는 성질(상관)이 자료의 실제 잡음 구조입니다. 그것을 지우면 우연의 폭을 과소평가하게 됩니다.
🤔 확인 문제
10,000번 순열을 돌렸는데 관측값만큼 극단적인 값이 하나도 없었습니다. p값을 어떻게 보고하는 것이 정직한가요?
해설 순열검정의 해상도는 순열 수가 정합니다. 10,000번이면 1/10,000 아래는 구별할 수 없습니다. 더 작은 p값이 필요하면 순열을 더 돌리거나 분포 근사를 써야 합니다.