R에서 상관관계 행렬 생성 및 시각화

Jesse John 2023년6월21일 R R Matrix
  1. R의 cor() 함수
  2. R에서 상관관계 매트릭스를 만들기 위한 데이터 준비
  3. R에서 상관관계 행렬 시각화하기
  4. 참조
R에서 상관관계 행렬 생성 및 시각화

이 기사에서는 먼저 상관관계 매트릭스를 만들기 위해 데이터를 준비하는 방법을 살펴봅니다. 그런 다음 상관관계 매트릭스를 만들고 시각화합니다.

샘플 코드는 dplyr, ggplot2GGally 패키지를 사용합니다. 이러한 패키지를 사용할 수 없는 경우 설치해야 합니다.

예제 코드:

# 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, usemethod 사용에 대한 세부 정보를 제공합니다.

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 팔레트를 사용합니다.

  1. 색상을 연속적으로 등급화할 수 있지만 6개의 개별 값을 사용합니다. 인수 nbreaks=6은 이 결과를 달성합니다.

    이 함수는 범위 -1에서 1까지를 6개의 등간격으로 나눕니다.

  1. 상관 계수 값의 범위가 음수에서 양수까지 다양할 수 있으므로 다양한 색상 팔레트가 필요합니다.
  2. 색맹 친화적인 팔레트를 사용합니다. 이 팔레트는 최대 11개의 고유한 색상 값을 제공할 수 있습니다.
  3. 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)

주어진 상관관계 매트릭스의 도표입니다.

주어진 상관 행렬의 플롯

참조

  1. dplyr 기능에 대해서는 문서 패키지를 참조하십시오.
  2. GGally 패키지의 CRAN 페이지는 해당 설명서로 연결됩니다.
튜토리얼이 마음에 드시나요? DelftStack을 구독하세요 YouTube에서 저희가 더 많은 고품질 비디오 가이드를 제작할 수 있도록 지원해주세요. 구독하다
작가: Jesse John
Jesse John avatar Jesse John avatar

Jesse is passionate about data analysis and visualization. He uses the R statistical programming language for all aspects of his work.

관련 문장 - R Matrix