더북(TheBook)

다음은 아이리스 데이터에서 Sepal.Width, Sepal.Length의 피어슨 상관 계수를 구하는 예다. 상관 계수 값이 작아 두 값 사이에 큰 상관관계는 없지만, Sepal.Width가 커짐에 따라 Sepal.Length가 작아지는 경향이 있음을 알 수 있다.

> cor(iris$Sepal.Width, iris$Sepal.Length)
[1] -0.1175698

아이리스에서 Species를 제외한 모든 컬럼의 피어슨 상관 계수를 구해보자.

> cor(iris[,1:4])
            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

만약 살펴봐야 할 컬럼의 수가 많다면 한눈에 숫자가 잘 안 들어올 수 있다. symnum( )을 사용하면 숫자들을 간략한 기호로 볼 수 있다. 결과에 표시된 기호들을 보면 P.L(Petal.Length)과 Petal.Width 간의 상관 계수가 가장 크고(B로 표시됨), 그 다음으로 Sepal.Length와 Petal.Length, Sepal.Length와 Petal.Width가 상관관계가 큼(+로 표시됨)을 쉽게 알 수 있다.

> symnum(cor(iris[,1:4]))
             S.L S.W P.L P.W
Sepal.Length 1
Sepal.Width      1
Petal.Length +   .   1
Petal.Width  +   .   B   1
attr(,"legend")
[1] 0 ' ' 0.3 '.' 0.6 ',' 0.8 '+' 0.9 '*' 0.95 'B' 1

corrgram 패키지는 상관 계수를 시각화하는 데 유용하다. 다음 코드는 아이리스의 상관 계수를 그림의 우측 상단에 배치하고(upper.panel=panel.conf), 대각선에는 컬럼의 이름을 적고, 좌측 하단에는 상관 계수를 그림으로 표현하는 예다. 그림에서 오른쪽 위에서 왼쪽 아래로 빗금이 쳐진 부분은 양의 상관 계수를 뜻하고, 왼쪽 위에서 오른쪽 아래로 빗금이 쳐진 영역은 음의 상관 계수를 뜻한다. 색의 짙기는 상관 계수의 크기를 뜻해 절댓값이 큰 상관 계수일수록 더 짙은 색을 띤다. 그림 7-11에 실행 결과를 보였다.

> install.packages("corrgram")
> library(corrgram)
> corrgram(iris, upper.panel=panel.conf)
그림 7-11 아이리스 데이터에 대한 corrgram( ) 수행 결과
그림 7-11 아이리스 데이터에 대한 corrgram( ) 수행 결과

피어슨 상관 계수는 데이터의 선형 관계 정도를 판단한다. 따라서 Y=X, Y=2X는 모두 선형 관계가 성립하므로 피어슨 상관 계수가 1이다. 피어슨 상관 계수에서는 선형 관계가 성립하면 1, 성립하지 않으면 1이 아닌 값을 갖게 된다. 다음 코드는 이러한 사실을 확인시켜준다.

> cor(1:10, 1:10)
[1] 1
> cor(1:10, 1:10*2)
[1] 1

반면 비선형 상관관계 Y=X3은 선형 상관관계가 아니므로 1보다 작은 값을 가진다.

> x = 1:10
> y = x^3
> cor(x, y)
[1] 0.9283912
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.