데이터 분석/통계(Statistics)

[Python] 상관 분석(산점도, 상관계수) - Pearson, Spearman, Kendall

Jerry Jun 2020. 9. 19. 17:45
728x90

상관분석(Correlation Analysis)


상관분석은 쉽게 말하면 직선(선형)의 관계가 있는지 분석하는 것이다.

상관분석에서 알아야 할 점은 [산점도], [상관계수] 이다.



상관분석설명



상관 분석의 핵심은 Y를 예측하는 것이고 X 들에 대해 얼마나 선형 관계가 강하고 약한지 파악한다. (featuring) 예를 들어 X_1의 자료가 질적자료이고 A와 B가 있을 때는 Two sample test를 진행하여 Y와의 관계를 파악해 볼 수 있고, A,B,C,D, 등의 질적자료가 있을 때는 분산분석(ANOVA)를 이용할 수도 있을 것이다. X와 Y라는 양적자료가 있을 때 대부분 더 중요한 양적 자료를 Y로 둔다.


분산분석에는 "일원배치 분산분석" 이라는 것이 있다. 질적인 자료 하나를 가지고 양적인 자료와 차이가 있는지 분석하는 것이다. "이원배치 분산분석"은 A라는 질적 자료와 B라는 질적 자료 두개가 들어갔을 때 이 두개에 의해서 양적인 자료가 차이가 있는지 분석하는 것이다. 이 이야기는 이 게시물에서 다루지 않는다.



# 산점도(Scatter plot)


sns.pairplot(iris, x_vars = "sepal_length", y_vars = "sepal_width")


산점도


데이터셋은 유명한 iris 를 사용하였다. 산점도를 보기 위해서 seaborn에서 제공하는 pairplot()을 이용한다.




선형관계



산점도를 보는데 문제가 되는 점이 있다. 똑같은 데이터지만 단위가 바뀜으로 인해서 (1) 이 (2) 보다 직선의 관계가 100배 더 강하다고 나온다. 같은 데이터인데 이래서는 문제가 있다. 공분산에서는 단위가 바뀌면 직선의 관계가 확 달라지는 단점이 있다.  그래서 나온 것이 피어슨의 상관계수이다.



상관계수


단위가 바뀌어도 X의 표준편차와 Y의 표준편차로 공분산을 나누어준다. 이렇게 되어 단위가 바뀌어도 직선의 관계가 잘 나올 수 있다. 상관계수 r은 1에 가까울수록 선형을 띄며 0에 가까울수록 선형을 띄지 않는다고 생각하면 된다.




# Spearman


Spearman


X, Y가 정규성을 만족하지 않거나, 양적인 자료가 아닌 순위형 자료로 올 때 Spearman 을 사용한다. 사진과 같이 5개의 데이터가 주어졌을 때 양적 자료 X와 양적 자료 Y의 순위를 매기고 Spearman의 공식을 대입해보았더니 0.9가 나왔다. 이는 키가 클 수록 몸무게도 크다라는 것을 보여준다. 이것이 Spearman의 상관계수이다.




# Kendall


Kendall



두 양적 자료간의 관계를 볼 때 쓰는 다른 방법은 Kendall 이다. 이 경우에서는 X(키)를 기준으로 오름차순 정렬을 한 뒤 첫 번째 자료부터 보게된다. 키 : 160 에 몸무게 : 49 인 첫번째 데이터에 기준을 두고 두번째 ~다섯번째 데이터를 보면서 X가 증가하고 Y가 증가하는지 확인한다. 그러다 세번째 데이터가 기준 일 때 네번째 데이터의 몸무게가 전과 다르게 감소한다. 이럴 때 disconcordant pair에 해당한다. 그렇게 마지막까지 확인한 뒤 공식을 통해 확인해보면 0.8 이 나오게 된다. 이전의 Spearman보다는 작지만 이렇게도 구할 수 있다는 것을 보여준다.




Pearson의 상관분석


귀무가설 : X와 Y간의 직선의 관계가 없다.

대립가설 : X와 Y간의 직선의 관계가 있다.

Pearson의 상관분석은 사진과 같은 분포를 따르고 대립가설이 "같지 않다"이니 양쪽으로 가면 직선의 관계가 있다고 판단한다.



다음 게시물에서는 파이썬을 이용하여 상관분석을 해보도록 하겠다.





* 실습출처 :  2020 SBA아카데미 AI 데이터분석 개발자과정 : 기초 통계 (이부일 CEO님)


300x250