13강 / 20강

귀무분포 — 우연을 직접 만들어 재기

순열검정 한 판

귀무분포 — 우연을 직접 만들어 재기
"이 정도 값이 우연히도 나올 수 있나?" — 답은 직접 섞어 보면 나옵니다.

6강에서 상호정보량이 표본이 적으면 부풀려진다고 했습니다. 11강의 t 값도, 5강의 상관계수도 마찬가지입니다. 값 하나만 보고는 판정할 수 없습니다.

해법은 놀랍도록 단순합니다.

변이 표시를 환자들 사이에서 마구 섞어 같은 계산을 수천 번 반복한다

섞고 나면 변이와 활성 사이의 진짜 관계는 끊어집니다. 그런데도 계산은 매번 0 이 아닌 값을 냅니다 — 그게 우연이 만들어 내는 값의 범위입니다. 이것을 귀무분포(null distribution) 라고 합니다.

실제 자료에서 나온 값이 이 분포의 바깥쪽 끝에 있으면 "우연이 아니다"라고 말합니다. 그 바깥쪽에 있는 비율이 곧 p값입니다.

🎮 직접 섞어 보세요

섞는 횟수를 늘려 가며 히스토그램이 어떻게 채워지는지, 관측값이 어디에 서 있는지 보세요.

빨간 선이 오른쪽 끝에 있을수록 '우연이 아니다'에 가깝습니다
불러오는 중…
10,000번 섞는 데 몇 초면 됩니다. 분포를 가정할 필요가 전혀 없습니다.
Python 브라우저에서 실행
🤔 확인 문제
순열검정에서 변이 표시를 섞는 이유는 무엇인가요?

무엇을 섞을 것인가 — 함정

순열검정에서 가장 흔한 실수는 섞으면 안 되는 것을 섞는 것입니다. "귀무가설이 참일 때 자료가 어떻게 생겼을까"를 정확히 흉내내야 합니다.

검정하려는 것섞을 것유지할 것
변이 ↔ MR 활성환자별 변이 표시활성값들의 구조
레귤론 농축레귤론에 속한 유전자 이름시그니처 순위표
두 아형 차이아형 표시환자별 발현 프로필 전체

예를 들어 아형 표시 대신 유전자 이름을 섞으면, 유전자들 사이의 상관 구조가 깨져서 귀무분포가 실제보다 좁아집니다. 그러면 p값이 실제보다 작게 나와 거짓 발견이 쏟아집니다.

이 실수는 실제 논문에서도 종종 발견됩니다. 무엇을 섞는지 늘 확인하세요.
Python 브라우저에서 실행
🤔 확인 문제
유전자들이 서로 상관되어 있는 자료에서 유전자마다 따로 값을 섞어 귀무분포를 만들면 어떤 문제가 생기나요?
🤔 확인 문제
10,000번 순열을 돌렸는데 관측값만큼 극단적인 값이 하나도 없었습니다. p값을 어떻게 보고하는 것이 정직한가요?