피어슨, 스피어맨, 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개의 상관계수를 다양한 상황에서 사용해 보았다. 데이터종이 많이 있을 때는 이러한 지표를 이용하여 관계성을 대략 살펴본 후, 유망한 것은 가시화하여 최종 확인하는 것이 좋다고 생각한다.
참고문헌
두 변수에 대해 선형 관계를 보는 데 사용됩니다. 편차의 정규 분포를 가정하는 파라 메트릭 방법입니다. -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개의 상관계수를 다양한 상황에서 사용해 보았다. 데이터종이 많이 있을 때는 이러한 지표를 이용하여 관계성을 대략 살펴본 후, 유망한 것은 가시화하여 최종 확인하는 것이 좋다고 생각한다.
참고문헌
r_s = 1 - \frac{6\displaystyle \sum_{i = 1}^n {d_i}^2}{n(n^2 - 1)}
선형 관계뿐만 아니라 비선형 관계도 파악할 수 있는 상관계수로 사용된다. 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개의 상관계수를 다양한 상황에서 사용해 보았다. 데이터종이 많이 있을 때는 이러한 지표를 이용하여 관계성을 대략 살펴본 후, 유망한 것은 가시화하여 최종 확인하는 것이 좋다고 생각한다.
참고문헌
> 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
> 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
> 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
> 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
> 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개의 상관계수를 다양한 상황에서 사용해 보았다. 데이터종이 많이 있을 때는 이러한 지표를 이용하여 관계성을 대략 살펴본 후, 유망한 것은 가시화하여 최종 확인하는 것이 좋다고 생각한다.
참고문헌
Reference
이 문제에 관하여(피어슨, 스피어맨, MIC의 상관 계수를 R로 시험해 비교해 본다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/purple_jp/items/69b97a76cfbb45048b63텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)