피어슨, 스피어맨, MIC의 상관 계수를 R로 시험해 비교해 본다

소개



두 데이터의 관계를 대략적으로 보려면 상관 계수를 계산할 수 있습니다.
여기서 자주 사용되는 3개의 상관계수를 간단히 정리해, 인공 데이터로 시험해 사용소를 확인해 보았다.

피어슨의 상관 계수



두 변수에 대해 선형 관계를 보는 데 사용됩니다. 편차의 정규 분포를 가정하는 파라 메트릭 방법입니다. -1에서 1까지의 값을 취합니다.
r_{xy} = \frac{\displaystyle \sum_{i = 1}^n (x_i - \overline{x})
(y_i - \overline{y})}{\sqrt{\displaystyle \sum_{i = 1}^n 
(x_i - \overline{x})^2\displaystyle \sum_{i = 1}^n 
(y_i - \overline{y})^2}}

스피어맨의 순위상관계수



두 변수 사이의 단조 관계를 평가하는 데 사용됩니다. 각 변수의 순위 차이를 구한다 (아래 식의 d). 피어슨과는 달리 비파라메트릭한 방법이다. -1에서 1까지의 값을 취합니다.
r_s = 1 - \frac{6\displaystyle \sum_{i = 1}^n {d_i}^2}{n(n^2 - 1)}

MIC(Maximun Information Coefficient)



선형 관계뿐만 아니라 비선형 관계도 파악할 수 있는 상관계수로 사용된다. 0에서 1까지의 값을 취합니다. logic of blue님의 페이지 설명 가 상세하다. qiita에서는 비선형 상관 분석 MIC 정보 가 상세하다.

다양한 데이터의 관계를 만들어 R로 계산해 본다



R에서 MIC를 사용하려면 minerva 패키지가 필요합니다.

선형



아래 그림의 선형 관계 데이터를 만들어 각 상관 계수를 계산합니다.

다음과 같이, 어느 것이나 높은 수치를 얻을 수 있다.
> library(minerva)
> set.seed(1)
> x1 <- rnorm(n=100)
> set.seed(2)
> e <- rnorm(n=100)
> y1 <- 4*x1 + 5 + e
> plot(x1,y1)
> cor(x1, y1, method="pearson")
[1] 0.947994
> cor(x1, y1, method="spearman")
[1] 0.9432103
> mine(x1, y1)$MIC
[1] 0.8849022

3차 곡선



이 경우 피어슨보다 스피어맨이 수치가 큰 경우가 있다. 이것은 선형 관계에서 벗어나지만 단조 증가의 경향은 강하기 때문에 이렇게 된다.

또한, R의 코드는 이후 앞의 것과 계속 실행된다.
> y2 <- 3*x1^3 + x1^2 + 2*x1+ 5 + e
> plot(x1, y2)
> cor(x1, y2, method="pearson")
[1] 0.8569895
> cor(x1, y2, method="spearman")
[1] 0.9351695
> mine(x1, y2)$MIC
[1] 0.8290487

2차 곡선



이 경우, 피어슨도 스피어맨도 수치가 절대치적으로 상당히 낮아지지만, MIC는 제대로 높은 수치가 얻어지고 있다.

> y3 <- 4*x1^2 + 5 + e
> plot(x1, y3)
> cor(x1, y3, method="pearson")
[1] 0.08319834
> cor(x1, y3, method="spearman")
[1] 0.1007261
> mine(x1, y3)$MIC
[1] 0.7361249

sin 커브



2차 곡선과 마찬가지로 MIC는 높은 수치를 얻을 수 있다.

> y4 <- 2*sin(5*x1) + e
> plot(x1, y4)
> cor(x1, y4, method="pearson")
[1] -0.0958496
> cor(x1, y4, method="spearman")
[1] -0.08838884
> mine(x1, y4)$MIC
[1] 0.638089

난수 관계



과연 아무도 절대값으로 낮은 값이 된다. 그러나, MIC는 다른 것보다는 수치가 높게 나오므로, 이 점은 조심하는 것이 좋을지도 모른다.

> set.seed(2)
> y5 <- rnorm(n=100)
> plot(x1, y5)
> cor(x1, y5, method="pearson")
[1] -0.1537208
> cor(x1, y5, method="spearman")
[1] -0.1537954
> mine(x1, y5)$MIC
[1] 0.2701778

마지막으로



대략 3개의 상관계수를 다양한 상황에서 사용해 보았다. 데이터종이 많이 있을 때는 이러한 지표를 이용하여 관계성을 대략 살펴본 후, 유망한 것은 가시화하여 최종 확인하는 것이 좋다고 생각한다.

참고문헌


  • minerva 패키지
  • 비선형 상관 분석 MIC 정보
  • 비선형도 OK인 상관 계수: MIC
  • A Correlation for the 21st Century
  • 좋은 웹페이지 즐겨찾기