본문 바로가기
10. 상관분석/상관계수행렬

[R] 상관계수행렬 그리는 법 (corrplot 패키지 이용)

by makhimh 2021. 6. 14.
반응형

1. 패키지 설치

 

corrplot 패키지를 설치하고 불러옵니다. 

 

install.packages("corrplot")
library(corrplot)

2. 데이터 

iris 데이터를 이용합니다. 

> head(iris)
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa


Species 는 수치형 데이터가 아니므로 제거해줍니다. 

> data=iris[,1:4]
> head(data)
  Sepal.Length Sepal.Width Petal.Length Petal.Width
1          5.1         3.5          1.4         0.2
2          4.9         3.0          1.4         0.2
3          4.7         3.2          1.3         0.2
4          4.6         3.1          1.5         0.2
5          5.0         3.6          1.4         0.2
6          5.4         3.9          1.7         0.4

3. 상관계수 행렬 계산

corrplot 패키지로 그래프를 그리려면 상관계수행렬을 계산해주어야 합니다. 

library(corrplot)
data=iris[,1:4]
cor_matrix=cor(data)
> cor_matrix
             Sepal.Length Sepal.Width Petal.Length Petal.Width
Sepal.Length    1.0000000  -0.1175698    0.8717538   0.8179411
Sepal.Width    -0.1175698   1.0000000   -0.4284401  -0.3661259
Petal.Length    0.8717538  -0.4284401    1.0000000   0.9628654
Petal.Width     0.8179411  -0.3661259    0.9628654   1.0000000

4. 그래프 (circle)

corrplot 함수를 이용합니다. 디폴트 method는 circle 입니다.

 

library(corrplot)

data=iris[,1:4]

cor_matrix=cor(data)
corrplot(cor_matrix)

 


5. 그래프 (number)

method 옵션을 num으로 바꿔줍니다.

 

data=iris[,1:4]

cor_matrix=cor(data)
corrplot(cor_matrix,method="num")

 


5. 그래프 (circle + num)

두개의 그래프를 겹쳐그립니다. type옵션을 하나는 upper로 다른 하나는 lower로 설정해줍니다. 첫번째 그래프의 tl.pos 를 "d"로 설정하여 대각요소에 변수명이 나오도록 합니다. 두번째 그래프의 diag, tl.pos, cl.pos 는 전부 숨겨줍니다. 

library(corrplot)

data=iris[,1:4]

cor_matrix=cor(data)
corrplot(cor_matrix,method="circle", type = "upper", tl.pos = "d")
corrplot(cor_matrix,add=TRUE,method="num", type = "lower",
         diag = FALSE, tl.pos = "n", cl.pos = "n")

 

반응형

댓글