R

상관분석(그래프) with mtcars

한번해보즈아 2021. 6. 9. 20:48

상관분석은 주로 변수사이의 상관관계를 파악하기 위하여 시행하는데 이번에는 R에 내장되어있는 mtcars데이터로 상관분석 및 그래프를 그려보겠습니다. 또한 두 변수간의 상관계수 검정도 같이 실시하면 다음과 같습니다.  mpg변수와 cyl변수사이의 상관계수는 -0.85이며 유의확률이 0.000000000이므로 유의수준 0.05하에서 상관계수는 통계적으로 유의하다고 할수있습니다.

 

 

> mt_cor <- cor(mtcars) ## mtcars에는 연속형변수만 있으므로 전처리 없이 분석
> round(mt_cor, 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


> cor.test(mtcars$mpg, mtcars$cyl)

	Pearson's product-moment correlation

data:  mtcars$mpg and mtcars$cyl
t = -8.9197, df = 30, p-value = 0.0000000006113
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 -0.9257694 -0.7163171
sample estimates:
      cor 
-0.852162 

 

또한 R에 내장되어있는 함수인 PAIRS를 이용하면 다음과 같은 그래프도 구할수있습니다.

 

 

pairs(mt_cor)

pairs를 이용한그래프

 

 

이 그래프보다 좀더 깔끔한 그래프를 보기위한 library로 corrplot패키지가 있는데 이를 사용한 그래프는 다음과같습니다.

install.packages("corrplot")
library(corrplot)
corrplot(mt_cor, method="number")
corrplot(mt_cor, method="circel")

circle을 이용한 그래프
number을 이용한 그래프

 

이 외에도 method에 “circle”, “square”, “ellipse”, “number”, “shade”, “color”, “pie” 를 입력하여 다양한 모양의 그래프를 출력할수있습니다.

 

col <- colorRampPalette(c("red", "black", "green","blue","yellow"))

corrplot(mt_cor,
         method="color", #색깔로 표현
         col=col(5), #숫자를 키우면 좀더 스펙트럼한색 사용가능
         type="upper", #대각선 윗부분만 표현
         order="hclust", #유사색상끼리 군집화
         addCoef.col = "black", #상관계수 색깔
         diag=F) # 1로 표시되는 대각선행렬 제외