상관분석(Correlation Analysis)

ddoddo·2023년 1월 7일
0

데이터분석 with R

목록 보기
9/21

상관분석이란?

상관분석(Correlation Analysis)이란 연속형인 두 변수 간에 어떤 선형적 또는 비선형적인 관계를 갖고 있는지 분석하는 방법이다. 상관분석을 실시하면 두 변수 간의 관계를 상관계수(Correlation Coefficient)로 나타낸다. 상관계수는 -1에서 1까지의 값을 가지며 음(-)의 부호일 경우 반비례 관계인 음의 상관관계를 나타내고, 양(+)의 부호일 경우 비례 관계인 양의 상관관계를 나타낸다. 0일 경우 상관관계가 없다.

Data Load

5개의 변수와 30개의 행으로 구성되어 있다.

> df <- read.csv('ch5-1.csv', header=TRUE)
> head(df)
  chick_nm weight egg_weight movement food
1      a01    140         65      146   14
2      a02    128         62      153   12
3      a03    140         65      118   13
4      a04    135         65      157   13
5      a05    145         69      157   13
6      a06    138         65      143   13

> str(df)
'data.frame':	30 obs. of  5 variables:
 $ chick_nm  : chr  "a01" "a02" "a03" "a04" ...
 $ weight    : int  140 128 140 135 145 138 125 148 133 145 ...
 $ egg_weight: int  65 62 65 65 69 65 61 69 64 69 ...
 $ movement  : int  146 153 118 157 157 143 110 159 133 174 ...
 $ food      : int  14 12 13 13 13 13 11 15 11 13 ...

데이터 셋

상관분석은 수치형 변수만 가능하므로 수치형 변수만을 담은 데이터 셋을 만든다.

> df2 <- df[, 2:5]

상관분석

R에서 상관분석은 cor() 함수를 통해 가능하다.

> df_corr <- cor(df2)
> df_corr
              weight egg_weight  movement      food
weight     1.0000000  0.9571693 0.3807186 0.8775735
egg_weight 0.9571693  1.0000000 0.4282457 0.8081467
movement   0.3807186  0.4282457 1.0000000 0.3190107
food       0.8775735  0.8081467 0.3190107 1.0000000

모두 양의 상관관계가 있는 것으로 나타났다.

상관계수를 구하는 방법에는 피어슨(Pearson), 스피어만(Spearman), 켄달(Kendall) 세 가지가 존재한다. cor() 함수에서 별도 method 옵션을 지정하지 않을 경우 피어슨 상관계수를 기본으로 한다. 스피어만 상관계수는 순서형 또는 서열 척도일 경우 사용하며, 피어슨 상관계수가 선형관계 크기만 측정하는 것에 비해 비선형적인 관계도 나타낼 수 있다.

상관분석 결과 표현

상관분석 결과의 경우 상관행렬 형태로만 나타내게 되면 데이터의 해석을 왜곡할 우려가 있기 때문에 그림도 같이 확인해야 한다. plot() 함수를 통해 변수들 간의 관계를 산점도(Scatter Plot)으로 나타낸다.

> plot(df2)

egg_weight와 food 변수는 몸무게 변수와 강한 양의 상관관계를 갖는 것으로 보인다. 반면 movement의 경우 상관계수로만 판단하였을 때 뚜렷한 선형관계가 있을 것으로 판단되었으나 데이터의 분포가 흩어져 있음을 확인할 수 있다.

corrplot 이라는 패키지를 사용하여 상관분석한 결과를 보기 좋게 표현할 수 있다.

> install.pacakges('corrplot')
> library(corrplot)
> corrplot(df_corr)

corrplot 패키지는 원의 색상과 크기를 통해 상관계수의 방향과 크기를 표현한다. 다양한 옵션을 사용하면 기본 산점도보다 훨씬 상관관계를 잘 표현할 수 있다.

> corrplot(df_corr, method='ellipse',
+          type='lower',
+          addCoef.col='white')

  • method : 형태 표시 circle, square, ellipse, number, pie
  • type : 구역 표시 full, lower, upper
  • addCoef.col : 상관계수 색상 표시
  • title : 제목

0개의 댓글