12강 / 20강
귀무분포 — 아무 일도 없었다면 어땠을까
무엇을 섞느냐가 무엇을 묻느냐를 정한다
NES 가 5.2 라고 나왔습니다. 큰 값 같은데, 정말 큰 걸까요? 이 질문에 답하는 유일한 방법은 아무 일도 없는 세계를 만들어 보고 거기서도 5.2 가 나오는지 확인하는 것입니다.
그 "아무 일도 없는 세계"를 귀무분포(null distribution)라고 합니다. 만드는 방법은 데이터를 섞는 것이고, 여기에 함정이 하나 있습니다 — 무엇을 섞느냐에 따라 전혀 다른 질문에 답하게 됩니다.
섞는 방법 두 가지
유전자 섞기는 이렇게 묻습니다 — "이 레귤론의 부하들이 아무 자리에나 놓였어도 이만큼 쏠렸을까?" 빠르고 간단하지만, 유전자끼리 원래 함께 움직인다는 사실(공발현)을 무시하므로 p 값이 지나치게 작게 나옵니다.
샘플 섞기는 이렇게 묻습니다 — "종양과 정상 딱지가 뒤바뀌었어도 이만큼 쏠렸을까?" 유전자 사이의 상관 구조가 그대로 보존되므로 훨씬 정직합니다. 대신 샘플이 충분해야 합니다 (보통 한 집단에 5개 이상).
귀무분포의 평균과 표준편차로 나누면 그것이 곧 NES 입니다.
Python
브라우저에서 실행
🎮 섞어 보세요
버튼을 누를 때마다 섞기가 한 번 일어나고, 그 결과가 히스토그램에 쌓입니다. 빨간 선이 진짜 점수입니다. 처음에는 종 모양이 잘 안 보이지만 100번쯤 누르면 모양이 드러납니다. 유전자 섞기와 샘플 섞기를 번갈아 써 보고, 귀무분포의 폭이 얼마나 다른지 확인해 보세요.
유전자 섞기는 p 값을 낙관적으로 만듭니다. 샘플 섞기가 정직합니다.
Python
브라우저에서 실행
🤔 확인 문제
유전자 섞기로 만든 귀무분포가 p 값을 지나치게 작게 만드는 까닭은?
해설 진짜 데이터에서는 유전자들이 덩어리로 함께 움직입니다. 섞어서 그 구조를 부수면 “아무 일도 없는 세계”가 실제보다 지나치게 얌전해지고, 그와 견준 우리 점수는 실제보다 놀라워 보입니다.
🤔 확인 문제
샘플 섞기를 쓰기 어려운 상황은?
해설 샘플이 3개씩이면 딱지를 바꿔 붙이는 경우의 수 자체가 얼마 안 됩니다. 만들 수 있는 귀무 세계가 스무 가지뿐이면 p 값을 0.05 아래로 낼 수조차 없어요.
🤔 확인 문제
aREA 가 NES 를 수식으로 내는데도 섞기를 이해할 필요가 있는 까닭으로 옳은 것은?
해설 aREA 의 해석적 p 값은 낙관적입니다. 실제 유전자들은 독립이 아니니까요. msVIPER 는 샘플 순열로 만든
ges.null 로 NES 를 다시 표준화해 이 낙관을 걷어냅니다.