R에서 상관관계 행렬 생성 및 시각화
이 기사에서는 먼저 상관관계 매트릭스를 만들기 위해 데이터를 준비하는 방법을 살펴봅니다. 그런 다음 상관관계 매트릭스를 만들고 시각화합니다.
샘플 코드는 dplyr
, ggplot2
및 GGally
패키지를 사용합니다. 이러한 패키지를 사용할 수 없는 경우 설치해야 합니다.
예제 코드:
# Install required packages.
# Uncomment and run the concerned line.
# install.packages("dplyr")
# install.packages("ggplot2")
# install.packages("GGally")
R의 cor()
함수
Base R은 두 숫자 벡터 간의 상관 계수 또는 데이터 프레임 또는 행렬의 숫자 열에 대한 상관 행렬을 계산하는 cor()
함수를 제공합니다.
함수의 설명서는 인수 x
, y
, use
및 method
사용에 대한 세부 정보를 제공합니다.
x
인수는 데이터를 사용합니다. 누락된 데이터가 있는 경우 use
인수가 필요합니다.
방법
은 기본적으로 피어슨
입니다.
R에서 상관관계 매트릭스를 만들기 위한 데이터 준비
상관 계수는 숫자 데이터에 대해서만 계산할 수 있습니다. 데이터는 단순히 숫자처럼 보여서는 안 됩니다. 숫자 형식이어야 합니다.
다음 샘플 데이터 프레임에는 숫자와 문자 열로 구성된 2단계 열이 있습니다.
숫자가 포함된 열에 대해서도 cor()
함수를 사용할 수 없습니다. 해당 숫자는 숫자 값으로 저장되지 않기 때문입니다.
예제 코드:
# Vectors, data frame.
f1 = as.factor(c(7,7,3,11,7,5,5))
str(f1)
f2 = as.factor(c(6,6,6,12,6,4,2))
str(f2)
s = letters[4:10]
fr = data.frame(s,f1,f2)
# The data frame shows numbers.
fr
# But the numbers are not stored in numeric format.
str(fr)
# Correlation matrix cannot be computed.
cor(fr[2:3])
출력:
> # The data frame shows numbers.
> fr
s f1 f2
1 d 7 6
2 e 7 6
3 f 3 6
4 g 11 12
5 h 7 6
6 i 5 4
7 j 5 2
> # But the numbers are not stored in numeric format.
> str(fr)
'data.frame': 7 obs. of 3 variables:
$ s : chr "d" "e" "f" "g" ...
$ f1: Factor w/ 4 levels "3","5","7","11": 3 3 1 4 3 2 2
$ f2: Factor w/ 4 levels "2","4","6","12": 3 3 3 4 3 2 1
> # Correlation matrix cannot be computed.
> cor(fr[2:3])
Error in cor(fr[2:3]) : 'x' must be numeric
데이터가 숫자이지만 요소로 저장되었다고 가정합니다. 해당 열을 숫자로 변환할 수 있습니다.
여기에는 요인 수준이 아닌 올바른 숫자를 얻기 위한 두 단계가 포함됩니다. 먼저 문자로 변환한 다음 숫자로 변환합니다.
예제 코드에서는 dplyr
패키지의 mutate()
, across()
및 all_of()
함수와 파이프 연산자 %>%
를 사용합니다. 실제 변환은 사용자 지정 함수를 사용하여 수행됩니다.
예제 코드:
library(dplyr)
# This custom function does the actual conversion.
con_fn = function(k){
return(as.numeric(as.character(k)))
}
# We will convert specific columns to numeric.
fr2 = fr %>% mutate(across(all_of(c("f1","f2")), con_fn))
# The columns are now numeric.
str(fr2)
# Compute the correlation matrix.
cor(fr2[2:3]) # No error now.
출력:
> # The columns are now numeric.
> str(fr2)
'data.frame': 7 obs. of 3 variables:
$ s : chr "d" "e" "f" "g" ...
$ f1: num 7 7 3 11 7 5 5
$ f2: num 6 6 6 12 6 4 2
> # Compute the correlation matrix.
> cor(fr2[2:3]) # No error now.
f1 f2
f1 1.0000000 0.7833495
f2 0.7833495 1.0000000
두 숫자 변수에 대한 상관 행렬을 성공적으로 만들었습니다.
R에서 상관관계 행렬 시각화하기
시각화를 만들기 전에 열을 몇 개 더 추가합니다. 마지막 열은 int
유형이며 역시 숫자입니다.
예제 코드:
# Reproducible vectors.
set.seed(555)
n1 = round(rnorm(7)+2,1)
set.seed(222)
n2 = sample(22:42, 7, replace=TRUE)
# Join the columns to the data frame.
fr3 = cbind(fr2, n1, n2)
# Check the structure.
str(fr3)
# Compute the correlation matrix.
cor(fr3[2:5])
출력:
> # Check the structure.
> str(fr3)
'data.frame': 7 obs. of 5 variables:
$ s : chr "d" "e" "f" "g" ...
$ f1: num 7 7 3 11 7 5 5
$ f2: num 6 6 6 12 6 4 2
$ n1: num 1.7 2.5 2.4 3.9 0.2 2.9 1.8
$ n2: int 36 39 41 30 31 30 39
> # Compute the correlation matrix.
> cor(fr3[2:5])
f1 f2 n1 n2
f1 1.0000000 0.7833495 0.3124483 -0.5809116
f2 0.7833495 1.0000000 0.4938292 -0.4142586
n1 0.3124483 0.4938292 1.0000000 -0.1132145
n2 -0.5809116 -0.4142586 -0.1132145 1.0000000
GGally
패키지의 ggcorr()
함수를 사용하여 상관관계 행렬을 시각화합니다. 이 패키지는 ggplot2
패키지에 의존합니다.
이 함수는 두 가지 작업을 수행한다는 점에 유의해야 합니다. 상관 행렬을 계산한 다음 플로팅합니다.
기본적으로 ggcorr()
함수는 pairwise
관찰(결측값이 있는 경우)을 사용하고 pearson
상관 계수를 계산합니다. 또한 ColorBrewer
팔레트를 사용합니다.
-
색상을 연속적으로 등급화할 수 있지만 6개의 개별 값을 사용합니다. 인수
nbreaks=6
은 이 결과를 달성합니다.이 함수는 범위 -1에서 1까지를 6개의 등간격으로 나눕니다.
-
상관 계수 값의 범위가 음수에서 양수까지 다양할 수 있으므로 다양한 색상 팔레트가 필요합니다.
-
색맹 친화적인 팔레트를 사용합니다. 이 팔레트는 최대 11개의 고유한 색상 값을 제공할 수 있습니다.
-
label=TRUE
인수는 색상 타일에 상관 관계 값을 표시합니다.
예제 코드:
# Load the GGally library.
# This loads ggplot2 also.
library(GGally)
# Visualize the correlation matrix.
ggcorr(fr3[2:5], nbreaks=6, palette="PuOr", label=TRUE, label_size=5, size=8, legend.size=10)
상관관계 매트릭스의 도표. 더 어두운 음영은 더 높은 상관관계를 나타냅니다.
상관 범위는 -1(주황색으로 표시)에서 1(보라색으로 표시)까지입니다.
상관관계 행렬이 있고 이를 플로팅하고 싶다고 가정합니다. data=NULL
을 지정하고 cor_matrix
를 사용하여 상관 행렬을 제공하여 ggcorr()
함수를 사용할 수 있습니다.
예제 코드:
# Just three columns, for illustration.
fr4 = cor(fr3[2:4])
fr4
# Only visualize with given correlation matrix.
ggcorr(data = NULL, cor_matrix= fr4, nbreaks=7, label=TRUE, label_size=5, size=8, legend.size=10)
주어진 상관관계 매트릭스의 도표입니다.
참조
dplyr
기능에 대해서는 문서 패키지를 참조하십시오.GGally
패키지의 CRAN 페이지는 해당 설명서로 연결됩니다.