상관분석 실습
상관분석 = 두 변수의 관계성 분석
-
실업자 수와 개인 소비 지출의 상관관계
-
R에 내장된 cor.test()를 이용하면 상관분석을 할 수 있다.
library(ggplot2)
economics <- as.data.frame(ggplot2::economics)
cor.test(economics$unemploy, economics$pce) #unemploy(실업자 수), pce(개인 소비 지출)
# 출력결과
# Pearson's product-moment correlation
#
# data: economics$unemploy and economics$pce
# t = 18.63, df = 572, p-value < 2.2e-16
# alternative hypothesis: true correlation is not equal to 0
# 95 percent confidence interval:
# 0.5608868 0.6630124
# sample estimates:
# cor
# 0.6145176
# 출력 결과를 보면 p-value가 0.05 미만이므로, 실업자 수와 개인 소비 지출의
# 상관이 통계적으로 유의하다고 해석 가능
# 출력 결과 맨 아래 'cor'이 상관계수를 의미한다.
# 상관계수가 양수 0.61이므로, 실업자 수와 개인 소비 지출은 한 변수가 증가하면
# 다른 변수가 증가하는 정비례 관계임을 알 수 있다.
상관행렬 히트맵 만들기
- 여러 변수의 관련성을 한번에 알아보고자 할 경우, 모든 변수의 상관 관계를 나타낸
- 상관행렬을 만든다. 상관행렬을 보면 어떤 변수끼리 관련이 크고 적은지 파악 가능.
- R에 내장된 mtcars 데이터를 이용해 상관행렬을 만든다.
# 여러 변수의 관련성을 한번에 알아보고자 할 경우, 모든 변수의 상관 관계를 나타낸
# 상관행렬을 만든다. 상관행렬을 보면 어떤 변수끼리 관련이 크고 적은지 파악 가능.
# R에 내장된 mtcars 데이터를 이용해 상관행렬을 만든다.
head(mtcars)
car_cor <- cor(mtcars) # 상관행렬 생성
round(car_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
# 출력된 상관행렬을 보면 mtcars의 11개의 변수가 서로 얼마나 관련되어 있는지 알 수 있다.
# 1. mpg(연비) 행과 cyl(실린더 수) 열이 교차되는 부분을 보면 상관계수가 -0.85이므로,
# 연비가 높을수록 실린더 수가 적은 경향이 있다는 것을 알 수 있다.
# 2. cyl(실런더 수)과 wt(무게)의 상관계수가 0.78이므로 실린더 수가 많을수록 자동차가
# 무거운 경향이 있음을 알 수 있다.
히트맵 그래프
install.packages("corrplot")
library("corrplot")
corrplot(car_cor, method = "number") # corrplot()의 파라미터를 이용해 method에
# "number"를 지정해 상관계수가 나타나도록 표현함
# 다양한 파라미터를 지정함
# 그래프 색깔을 바꾸기 위해 colorRampPalette()를 이용해 새상 코드 목록을 생성하는
# col() 함수를 만들어 파라미터에 활용
col <- colorRampPalette(c("#BB4444", "#EE9988", "#FFFFFF", "#77AADD",
"#4477AA"))
corrplot(car_cor,
method = "color", # 색깔로 표현
col = col(200), # 색상 200개 선정
type = "lower", # 왼쪽 아래 행렬만 표시
order = "hclust", # 유사한 상관계수끼리 군집화
addCoef.col = "black", # 상관계수 색깔
tl.col = "black", # 변수명 색깔
tl.srt = 45, # 변수명 45도 기울임
diag = F) # 대각 행렬 제외