순서형, 연속형, 범주형 변수간 분석/순서형 변수간 분석

[python/파이썬] 순서형 변수간 연관성을 보여주는 스피어만 순위상관계수

gilber 2023. 1. 3. 06:27
728x90

데이터를 살펴보면 키와 몸무게와 같이 연속적인 자료값이 있으며,

등수와 같이 순서를 나타내는 자료값도 있으며, 

남녀와 같이 연속적이지도 않고, 순서를 의미하지 않는 자료값도 있습니다. 

 

연속적인 자료값은 연속형 변수라고하며, 

키와 몸무게의 예시처럼 서로 연관성을 지닐 수도 있습니다.

이때 두 연속형 변수 사이에 연관성이 있는 정도를 보여주는 것이 공분산과 상관계수입니다. 

 

순서를 나타내는 자료값은 순서형 변수라고하며,

수학등수와 영어등수의 예시처럼 서로 연관성이 있는지 여부를 파악하고 싶은 경우도 있습니다. 

이때 두 순서형 변수 사이에 연관성이 있는 정도를 보여주는 것이,

스피어만의 순위상관계수와 켄달의 타우입니다. 

 

 

스피어만의 순위상관계수(Spearman's Rank Correlation Coefficient)
스피어만의 순위상관계수는 순위에 대한 데이터가 있는 경우 활용하지만,

순위에 대한 데이터가 아닌 경우라도, 

순위를 가진 데이터로 변경하여 활용하기도 합니다.

 

5명의 수학점수와 영어점수 데이터입니다.

점수사이에 어떤 수도 들어갈 수 있는 연속적인 자료이지만,

수학점수의 분포가 10점부터 90점까지 극단적으로 분포가 되어,

상관계수를 활용하면 데이터가 왜곡될 수 있습니다. 

 

상관계수는 자료값들의 흩어진 정도가 평균을 중심으로 몰려있고,

평균보다 작아질수록, 평균보다 커질수록 점점 드물게 나온다고 가정하기 때문입니다.

즉, 데이터가 정규분포를 따른다는 전제 하에 상관계수를 사용합니다. 

 

그래서 5명의 점수가 정규분포를 따르는지 따르지 않는지 확실하지 않은 경우에는,

분포를 가정하지 않는 순위상관계수를 사용합니다.

 

위의 데이터를 순위를 가진 데이터로 변경하겠습니다.

참고로 별도의 데이터로 만들지 않고, 기존 데이터 옆에 붙여 넣고 싶다면 loc를 사용합니다.

기본적인 설명을 덧붙이자면, 위의 명령은 등호( = )를 기준으로 왼쪽과 오른쪽으로 나누며,

오른쪽에 있는 data.loc[:, 'math'].rank()를 실행 한 후, 

왼쪽의 data.loc[ :, 'math_rank']를 만들라는 의미입니다.

 

loc는 location의 약자로서 가공할 데이터의 범주를 지정합니다.

범주는 [ ]로 지정하며, [ ]안의 ' : '은 모든 데이터를 읽어오고,

그중 'math' 칼럼에 있는 자료값을 가지고 rank 메서드를 적용하라는 의미입니다.

 

영어순위도 더하였습니다.

 

스피어만 상관계수는 다음과 같이 구합니다.

 

식의 기본적인 구조는 수학순위와 영어순위의 차이(d)를 제곱하고,

그 차이를 모두 더한 후 6을 곱합니다. 

그리고 이 수를 데이터의 개수인 n을 활용하여 나눠줍니다.

최종적으로 1에서 이렇게 구해진 수를 빼주면 스피어만 순위상관계수가 나옵니다.

 

여기서 6은 특별한 의미를 지닌 수는 아닙니다.

스피어만 상관계수는 수학적으로 피어슨 상관계수에서 유래한 통계량입니다.

피어슨 상관계수를 순서만 있는 데이터에도 사용하도록 확장하는 과정에서 나온 수입니다.

 

스피어만 상관계수를 계산하기 위해 필요한 순위 자료값만 가지고 옵니다.

수학순위와 영어순위 간 차이는 다음과 같습니다.

각각의 차이를 제곱하여 모두 더하면 다음과 같습니다.

직접적으로 수식에 대입하여 스피어만 순위상관계수를 구하겠습니다. 

스피어만 순위상관계수는 -1부터 1 사이의 값을 보여줍니다.

순위상관계수가 1에 가까운 수치라면, 양의 상관관계가 강하다고 볼 수 있으며, 

본문의 예제를 활용하면, 수학등수가 높을 수록 영어등수가 높다고 볼 수 있습니다. 

순위상관계수가 -1에 가까운 수치라면, 음의 상관관계가 강하다고 볼 수 있으며,

본문의 예제를 활용하면, 수학등수가 높을 수록 영어등수는 낮다고 볼 수 있습니다. 

 

수식을 이해하기 위해 직접적인 방식으로 순위상관계수를 구하였으나,

scipy를 활용하여 간단히 구할 수도 있습니다.

참고로 spearmanr은 두 개의 결괏값을 줍니다. 

바로 스피어만 순위상관계수와 p-value이며, 예제의 corr이 스피어만 순위상관계수입니다.

예제의 p_value는 p-value이며, 다음과 같습니다.

p-value는 스피어만 순위상관계수가 통계적으로 의미 있는 수준인지 판별하는 기준이 됩니다.

일반적으로 0.05 이상인 경우는 순위상관계수가 0으로 판단되어, 통계적으로 의미 있는 수치로 여겨지지 않으나,

본문은 순위상관계수의 측정방법에 관한 글이므로, 해당 내용은 참고용으로 게시합니다.

 

스피어만 순위상관계수는 피어슨 상관계수에서 확장된 개념입니다. 

따라서 위의 데이터에 대해서 피어슨 상관계수를 적용하면 같은 결과가 나옵니다.

다만, 데이터의 분포가 확실하지 않은 경우라면 스피어만 순위상관계수가 적합하며,

데이터를 탐색적으로 살펴보는 단계에 한하여 스피어만 순위상관계수를 활용합니다.

반응형