전체변수간 산점도 매트릭스
데이터셋을 구성하고 있는 모든 변수컬럼 간의 상호관련성을 산점도(scatter plot) 매트릭스(matrix)를 통해서 살펴볼 수 있습니다.
산점도 매트릭스를 표현하기 위해 사용된 함수는 plot( )입니다.
먼저 산점도 매트릭스를 표현하기 전에 데이터를 불러오겠습니다.
# 여행자 관련 csv 파일
my <- read.csv(file = 'tour.csv',
header = TRUE, sep = ',',
stringsAsFactors = TRUE,
strip.white = TRUE,
na.strings = c('.', '?', 'NA'))
파일을 불러오는 방법은 여기를 참고하면 됩니다.
이제 plot함수를 실행시켜보겠습니다.
plot(my)
그러면 이런식으로 산점도 메트릭스가 출력되는 것을 확인할 수 있습니다.
전체변수간 상관관계 매트릭스
다음은 데이터셋을 구성하고 있는 모든 변수컬럼 간의 상호관련성을 연관∙상관관계 매트릭스를 통해서 살펴볼 수 있습니다.
round(cor(my),3))
여기서 cor( ) 함수는 상관관계를 그려주는 함수이고 round(변수, 표현하고 싶은 소수점자리)는 소수점 자리 정리를 위해 사용합니다.
위에 식을 상관관계 결과를 변수로 만든후 다시 round함수를 통해 소수점 자리 정리를 해서 표현할 수도 있습니다.
temp <- cor(my)
round(temp,3)
결과 값은 아래와 같습니다.
여기서 만약 NA값을 없애고 싶으면 use='complete.obs'를 사용하면 됩니다.
temp <- cor(my,
use = 'complete.obs')
round(temp, 2)
NA가 사라진 것을 볼 수 있습니다.
범주형 변수간 산점도∙연관관계 매트릭스
일부 범주형 변수컬럼 간의 상호관련성을 산점도와 연관관계 매트릭스를 통해서 살펴볼 수 있습니다.
먼저 일부 변수형 컬럼만 꺼내어서 plot차트를 만들어 보겠습니다.
plot(my$gender, my$age)
다음과 같은 Plot차트가 생성된 것을 확인할 수 있습니다. 하지만 이걸로는 연관성을 확인할 수 없습니다. 따라서 cor함수를 이용해서 연관성을 파악하겠습니다.
cor(my$gender, my$age, method = 'spearman', use = 'complete.obs')
여기서 method = 'spearman'은 Spearman의 순위상관계수 혹은 Spearman이 ρ(rho) 지정, 비모수 상관계수 계산 (정규성 불충족 시)을 뜻합니다.(범주형 데이터 간의 상관계수)
결과값은 다음과 같습니다.
반올림하면 약 -0.17정도이므로 성별과 나이는 상관관계가 별로 없다는 것을 확인할 수 있습니다.
여기서 상관관계 계수를 이해할려면 아래의 표를 참고 하시면 됩니다.
상관계수 | 상관관계 정도 |
-0.9 ~ -1.0 , 0.9 ~ 1.0 | 매우강함 |
-0.7 ~ -0.9 , 0.7 ~ 0.9 | 강함 |
-0.4 ~ -0.7 , 0.4 ~ 0.7 | 상관관계가 있음 |
-0.2 ~ -0.4 , 0.2 ~ 0.4 | 약함 |
-0.2 ~ 0.0 , 0.0 ~ 0.2 | 매우 약함 |
이제 마지막으로 범주형 카테고리를 4개 선정해서 서로 연관성이 어느정도 인지 한번 비교해 보겠습니다.
먼저 카테고리 4개를 따로뺀 변수를 만들겠습니다.
ctg <- my[c('gender', 'age', 'object', 'accom')]
그 후 plot을 통해 비교할수 있는지 확인하겠습니다.
그래프로는 무엇을 뜻하는지 확인하기가 어렵습니다. 다음은 cor 함수를 통해 서로 상관관계가 어느정도 있는지 확인하겠습니다.
만약 상관관계가 매우약한것도 표현하고 싶으면 use='complete.obs' 를 사용하고 아니면 NA로 표현하고 싶으면 사용하지 않겠습니다.
여기서 보면 대부분 상관관계가 매우 약합니다. 그나마 성별과 목적이 약한 상관관계를 가지고 있다고 설명할 수 있습니다.
연속형 변수간 산점도•상관관계 매트릭스
다음은 일부 연속형 컬럼간의 상호 관련성을 확인하겠습니다. 위에서 본것과 마찬가지로 plot함수나 cor함수를 통해 확인할 수 있습니다.
먼저 여행 방문후 이미지와 재 방문의지 간 관련성이 있는지 확인하겠습니다.
cor(my$af_img, my$revisit, method = 'pearson')
결과값은 0.44가 출력됩니다. 이것을 통해 여행 방문후 이미지와 재방문의지간의 관련성이 있다고 확인할 수 있습니다.
여기서 method = 'pearson'을 사용했는데 이것은 연속형 변수간 상관관계를 구해줄때 도움을 주는 method입니다.
산점도 매트릭스 패키지 이용
1. psych::pairs.panels() 함수를 이용한 산점도 매트릭스
개별 변수의 분포 모양을 히스토그램(histogram)과 밀도곡선(density plot)으로 표시하며, 각 변수간 관련성을 수치와 다원형 분포모양과 빨간색 추세선으로 나타냅니다.
위에서 만든 연속형과 범주형 각각 산점도 매트릭스를 찍어보겠습니다.
범주형 데이터
pairs.panels(ctg,
method = "spearman",
hist.col = "green",
density = TRUE,
ellipses = TRUE)
연속형 데이터
pairs.panels(cnt,
method = "pearson",
hist.col = "green",
density = TRUE,
ellipses = TRUE)
이렇게 상승되는 것이 뚜렷하게 보이면 상관관계가 어느정도 있는것을 확인할 수 있습니다.
2. PerformanceAnalytics::chart.Correlation()함수를 이용한 산점도 매트릭스
개별변수의 분포모양을 히스토그램(histogram)과 밀도곡선(density plot)으로 표시하며, 각 변수간 관련성을 수치와 별표, 산점도와 빨간색 추세선으로 나타냅니다.
범주형 데이터
chart.Correlation(ctg, histogram = T)
연속형 데이터
chart.Correlation(ctg, histogram = T)
3. corrplot::corrplot()함수를 이용한 산점도 매트릭스
결측치(NA) 포함유무에 따라 물음표(?) 기호가 나타나고 관계정도를 색상스펙트럼과 수치로 나타내며, 파이차트와 부채꼴 모양, 수치형 혼합 등 다양한 형태의 산점도 매트릭스를 구현해줍니다.
⭐️ 먼저 NA포함 데이터 관찰치를 제외하겠습니다.
ctg_pure <- na.omit(ctg)
cnt_pure <- na.omit(cnt)
my_pure <- na.omit(my)
범주형 데이터
- NA 값 포함
corrplot(cor(ctg))
corrplot.mixed(cor(ctg))
NA값 미포함
corrplot(cor(ctg_pure), method = 'pie')
corrplot.mixed(cor(cnt_pure))
연속형 데이터
- NA 값 포함
corrplot(cor(cnt))
corrplot.mixed(cor(cnt))
- NA 값 미포함
corrplot(cor(cnt_pure), method = 'pie')
corrplot.mixed(cor(cnt_pure))
전체데이터 상관관계 파악하기
결측치 포함
corrplot(cor(my))
결측치 미포함
corrplot.mixed(cor(my_pure))
이 자료는 https://www.youtube.com/channel/UChPuesN49tcqQqYRQHrLCuw를 참조하여 작성하였습니다.
'Data·AI > R 데이터분석' 카테고리의 다른 글
R. 연속형 변수 특성 요약과 시각화(등간형) (0) | 2020.08.24 |
---|---|
R. 범주형 변수 특성 요약과 시각화(이항형, 다향형) (0) | 2020.08.24 |
R. 데이터 탐색하기 (0) | 2020.08.21 |
R. 데이터셋 로딩하기 - Excel, JSON, 외부링크 데이터 (1) | 2020.08.21 |
R. 데이터셋 로딩하기 - 플레인 텍스트 파일 (0) | 2020.08.21 |
댓글