← 문제 목록/Spearman 순위 상관 (Rank Correlation) [medium]
문제 해설

Spearman 순위 상관 (Rank Correlation) [medium]

통계 · medium

preview

Spearman 순위 상관 [medium]

v1 상관계수 (Pearson) 는 선형 관계 만 포착. 비선형이지만 단조 (monotonic) 관계에는 둔함:

  • y=x3y = x^3 — 완벽한 단조, Pearson ρ0.8\rho \approx 0.8 정도.
  • y=exy = e^x — 완벽한 단조, Pearson ρ0.5\rho \approx 0.5 에 그침.

Spearman (1904) 는 값 대신 순위 (rank) 에 Pearson 을 적용 → 단조 관계면 ρ=1\rho = 1 (혹은 1-1). 이상치에도 더 강건.

알고리즘

  1. 각 열 X:,jX_{:,j}순위 로 변환 (최소 = 1, 동률은 평균 순위).
  2. 순위 행렬에 Pearson 상관 적용.

동률(tied) 처리가 표준 scipy 방식과 일치하도록 average rank 사용.

특성

성질PearsonSpearman
범위[-1, 1][-1, 1]
선형 관계 필요아니오 (단조면 충분)
이상치 민감도높음낮음 (순위 기반)
대칭성·대각 1

과제

함수 spearman_correlation(X) 를 완성하세요.

  • X shape (N, D).
  • 반환: (D, D) Spearman 상관 행렬.
  • 힌트: np.argsort(np.argsort(col)) 로 basic rank, 동률은 동률 그룹의 평균 순위 로.
  • 구현 팁: scipy.stats.rankdata(col, method='average') 동치 필요.

테스트 케이스

#이름검증
1shape (D, D)
2대칭 + 대각 = 1
3범위 [-1, 1]
4y=x3y = x^3 완벽 단조 → ρ = 1Pearson 은 그렇지 않음
5동률(ties) 처리 average rank
6이상치에 Pearson 대비 강건1개 outlier 추가 전후 변화
7scipy.stats.spearmanr 과 일치
코드 작성
Loading...
실행 결과

코드를 작성하고 Run 을 눌러보세요.