Lesson 7 of 20
순위로 바꾸기 — 값을 버리고 자리를 얻다
이상치 하나에 결론이 흔들리지 않게
시그니처를 만들었습니다. 이제 그 값을 그대로 쓰면 될까요? VIPER 는 그러지 않습니다. 값을 순위로 바꿉니다.
왜냐고요? 발현 데이터에는 말도 안 되는 값이 심심찮게 섞입니다. 시료 하나가 오염됐거나, PCR 이 튀었거나, 애초에 그 유전자가 원래 그렇거나. 값을 그대로 쓰면 그런 값 하나가 전체 계산을 끌고 다닙니다.
순위로 바꾸면 그 걱정이 사라집니다. 1등이 2등보다 얼마나 큰지는 잊고, 1등이라는 사실만 남깁니다. 거인이 하나 끼어들어도 줄 서는 순서는 안 바뀝니다.
값을 버리고 자리를 얻는 거래 — 강건함을 얻고 크기 정보를 잃습니다.
Python
Runs in your browser
순위를 매기는 두 가지 방식
VIPER 안에서 순위는 두 가지 방식으로 쓰입니다. 10강에서 이 둘이 합쳐집니다.
앞의 것은 어느 쪽으로 변했는지를 봅니다 (방향성). 뒤의 것은 얼마나 변했는지만 봅니다 (비방향성). "부하들이 위쪽에 몰렸나"와 "부하들이 양 끝에 몰렸나"는 다른 질문이고, VIPER 는 둘 다 봅니다.
🎮 이상치를 던져 보세요
유전자 하나를 골라 값을 아주 크게 만들어 보세요. 왼쪽의 값 막대는 그 하나 때문에 나머지가 전부 납작해지지만, 오른쪽의 순위 막대는 거의 그대로입니다. 이것이 VIPER 가 순위를 쓰는 이유입니다.
같은 데이터를 두 가지로 줄 세웁니다. 물어보는 질문이 다르기 때문입니다.
Python
Runs in your browser
🤔 Check yourself
VIPER 가 시그니처 값을 순위로 바꿔 쓰는 주된 이유는?
Answer 발현 데이터에는 튀는 값이 흔합니다. 순위는 이상치의 크기를 반영하지 않으므로, 오염된 시료 하나가 전체 결론을 뒤집는 일을 막아 줍니다.
🤔 Check yourself
절대값 순위(방향 무시)가 대답하는 질문은?
Answer 절대값 순위는 부호를 지우고 변화의 크기만 봅니다. “일부는 올라가고 일부는 내려갔지만 어쨌든 다들 크게 흔들렸다” 같은 상황을 잡아내는 데 쓰입니다.
🤔 Check yourself
순위 변환의 대가로 옳은 것은?
Answer 1등과 2등의 차이가 20 이든 0.01 이든 순위로는 똑같이 “한 칸” 입니다. 강건함을 얻는 대신 크기 정보를 내주는 거래예요.