상관분석이란?
상관분석(Correlation Analysis)은 확률론과 통계학에서 두 변수간에 어떤 선형적 관계를 갖고 있는 지를 분석하는 방법이다. 두변수는 서로 독립적인 관계로부터 서로 상관된 관계일 수 있으며 이때 두 변수간의 관계의 강도를 상관관계(Correlation, Correlation coefficient)라 한다. 상관분석에서는 상관관계의 정도를 나타내는 단위로 모상관계수 ρ를 사용한다.
상관관계의 정도를 파악하는 상관계수(Correlation coefficient)는 두 변수간의 연관된 정도를 나타낼 뿐 인과관계를 설명하는 것은 아니다. 두 변수간에 원인과 결과의 인과관계가 있는지에 대한 것은 회귀분석을 통해 인과관계의 방향, 정도와 수학적 모델을 확인해 볼 수 있다.
R에서 상관분석
R에서는 상관분석하는 방법은 몇가지 함수만 알면 간단하게 할 수 있다.
이 글에서는 R에서 기본으로 제공하는 mtcars 데이터 셋을 이용하고자 한다.
mtcars 데이터 셋은 미국의 1973~74년 자동차 모델에 대한 디자인 성능 연비등의 정보를 나타내고 있다.
우선 mtcars 데이터 셋을 확인해보자
R-fiddle 버그로 종종 소스코드가 안 보이는 증상이 있음.
str(mtcars)
head(mtcars)
데이터 컬럼 수는 11개이며 32개의 로우 데이터로 구성되어 있다.
그럼 해당 변수들 간의 상관분석을 해보자
cor 함수를 이용하면 간단하게 상관분석을 할 수 있다.
R-fiddle 버그로 종종 소스코드가 안 보이는 증상이 있음.
mcor <- cor(mtcars)
round(mcor, 2)
상관분석 결과를 간략하게 확인해보면 아래와 같다.
1 또는 -1에 가까울 수록 두 변수간의 상관관계가 있음을 알 수 있다.
> round(mcor, 2) mpg cyl disp hp drat wt qsec vs am gear carb mpg 1.00 -0.85 -0.85 -0.78 0.68 -0.87 0.42 0.66 0.60 0.48 -0.55 cyl -0.85 1.00 0.90 0.83 -0.70 0.78 -0.59 -0.81 -0.52 -0.49 0.53 disp -0.85 0.90 1.00 0.79 -0.71 0.89 -0.43 -0.71 -0.59 -0.56 0.39 hp -0.78 0.83 0.79 1.00 -0.45 0.66 -0.71 -0.72 -0.24 -0.13 0.75 drat 0.68 -0.70 -0.71 -0.45 1.00 -0.71 0.09 0.44 0.71 0.70 -0.09 wt -0.87 0.78 0.89 0.66 -0.71 1.00 -0.17 -0.55 -0.69 -0.58 0.43 qsec 0.42 -0.59 -0.43 -0.71 0.09 -0.17 1.00 0.74 -0.23 -0.21 -0.66 vs 0.66 -0.81 -0.71 -0.72 0.44 -0.55 0.74 1.00 0.17 0.21 -0.57 am 0.60 -0.52 -0.59 -0.24 0.71 -0.69 -0.23 0.17 1.00 0.79 0.06 gear 0.48 -0.49 -0.56 -0.13 0.70 -0.58 -0.21 0.21 0.79 1.00 0.27 carb -0.55 0.53 0.39 0.75 -0.09 0.43 -0.66 -0.57 0.06 0.27 1.00
위 데이터만으로 충분히 분석할 수 있지만 이왕이면 차트로 표현해보자
R에서는 기본적으로 plot을 지원하며 ggplot2와 같은 차트 패키지를 많이 지원하고 있다.
여기서는 상관분석 차트 표현을 위하여 corrplot 패키지를 사용하려 한다.
R-fiddle 버그로 종종 소스코드가 안 보이는 증상이 있음.
library(corrplot)
mcor <- cor(mtcars)
round(mcor, 2)
corrplot(mcor, method='shade', shade.col=NA, tl.col='black', tl.srt=45)
차트를 확인해보면 아래와 같다. 양수 1에 가까울 수록 파란색 계열로 음수 1에 가까울 수록 붉은색 계열의 색상으로 표현됨을 알 수 있으며 위 데이터 결과보다 차트로 보는것으로 변수간의 상관관계를 쉽게 확인할 수 있다.
'R' 카테고리의 다른 글
R DB Connection (0) | 2014.01.28 |
---|---|
R 데이터프레임(DF) grep & gsub (0) | 2014.01.17 |
R evel함수활용 : String Source Code Execute (2) | 2014.01.17 |