티스토리 뷰

INTRO

1. 상관분석(Correlation Analysis)

   - 피어슨 상관계수(Pearson Correlation Coefficient ,PCC)

   - 스피어만 상관계수(Spearman's Rank Correlation Coefficient, SRCC)

2. 다차원 척도법(Multi-Dimensional Scailing, MDS)

3. 주성분 분석(Principal Component Analysis, PCA)

 

1. 상관분석

 데이터의 두 변수 간의 관계 분석으로 상관관계를 알아보기 위해 상관계수(Correlation Coefficient)를 이용한다. 등간척도 이상으로 측정되는 두 변수들 간의 상관관계를 측정하는데 쓰이는 피어슨 상관계수와 서열척도인 두 변수들의 상관관계를 측정하는데 쓰이는 스피어만 상관계수가 있다.

출처 : https://namyoungkim.github.io/probability/statistics/2017/09/09/probability/

 

- 피어슨 상관계수

두 확률변수 X,Y의 선형관계의 크기를 측정하는 공분산은 다음과 같이 정의된다.

 

$ Cov(X,Y) = E(X-\mu_X)(Y-\mu_Y), 여기서 \mu_X, \mu_Y는 X,Y의 기대값 $

 

공분산의 크기는 X,Y의 단위에 따라 영향을 받는데, 단위의 영향을 받지않고 언제나 -1과 1사이의 값을 갖도록 피어슨의 상관계수는 다음과 같이 정의된다.

 

 

$ -1 \leq \rho \leq 1 이고 X,Y 가 독립이면 \rho=0 $
$ Var(X), Var(Y)는 X,Y의 분산이고 \sqrt{Var(X)}, \sqrt{Var(X)}는 표준편차 $

 

모수인 피어슨의 상관계수를 추정하기 위해 표본상관계수 r을 사용하고 이를 구하는 공식은 다음과 같다.

 

 

[예제] mtcars 데이터를 이용한 상관분석

dataset

package "Hmisc" mtcars

R console> install.packages("Hmisc")

 

Pearson Correlation Coefficient 구하기

test_correlation_analysis_PCC.R
rm(list=ls())

library(Hmisc)
data(mtcars)
head(mtcars)
tail(mtcars)

drat = mtcars$drat
disp = mtcars$disp

# plot by correlation xy 
plot(drat,disp)

# calculate Corr(X,Y)
sd_drat = sd(drat)
sd_disp = sd(disp)
cov_xy = cov(drat,disp)
Corr_calc = cov_xy/(sd_drat*sd_disp)
Corr_calc
# use cor function
Corr_cor = cor(drat,disp)
Corr_cor

출력결과

> source("~/Rcoding/test_correlation_analysis_PCC.R", echo=TRUE)

> rm(list=ls())

> library(Hmisc)

> data(mtcars)

> head(mtcars)
                   mpg cyl disp  hp drat    wt  qsec vs am gear carb
Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

> tail(mtcars)
                mpg cyl  disp  hp drat    wt qsec vs am gear carb
Porsche 914-2  26.0   4 120.3  91 4.43 2.140 16.7  0  1    5    2
Lotus Europa   30.4   4  95.1 113 3.77 1.513 16.9  1  1    5    2
Ford Pantera L 15.8   8 351.0 264 4.22 3.170 14.5  0  1    5    4
Ferrari Dino   19.7   6 145.0 175 3.62 2.770 15.5  0  1    5    6
Maserati Bora  15.0   8 301.0 335 3.54 3.570 14.6  0  1    5    8
Volvo 142E     21.4   4 121.0 109 4.11 2.780 18.6  1  1    4    2

> drat = mtcars$drat

> disp = mtcars$disp

> # plot by correlation xy 
> plot(drat,disp)

> # calculate Corr(X,Y)
> sd_drat = sd(drat)

> sd_disp = sd(disp)

> cov_xy = cov(drat,disp)

> Corr_calc = cov_xy/(sd_drat*sd_disp)

> Corr_calc
[1] -0.7102139

> # use cor function
> Corr_cor = cor(drat,disp)

> Corr_cor
[1] -0.7102139

 

Hmisc package의 cov, rcorr함수를 이용한 mtcars dataset 상관분석

공분산(cov)은 변수들의 단위가 다르기 때문에 상대 분석이 어렵다.

따라서 상관계수(rcorr)를 구하고 변수들간 p-value를 통해 상관계수의 유의확률을 통해 분석한다.

test_correlation_analysis_PCC.R
...

# covariance of mtcars dataset
cov(mtcars)
# correlation coefficient and p-value for mtcars dataset
rcorr(as.matrix(mtcars), type="pearson")

출력결과

...

> # covariance of mtcars dataset
> cov(mtcars)
             mpg         cyl        disp          hp         drat          wt         qsec
mpg    36.324103  -9.1723790  -633.09721 -320.732056   2.19506351  -5.1166847   4.50914919
cyl    -9.172379   3.1895161   199.66028  101.931452  -0.66836694   1.3673710  -1.88685484
disp -633.097208 199.6602823 15360.79983 6721.158669 -47.06401915 107.6842040 -96.05168145
hp   -320.732056 101.9314516  6721.15867 4700.866935 -16.45110887  44.1926613 -86.77008065
drat    2.195064  -0.6683669   -47.06402  -16.451109   0.28588135  -0.3727207   0.08714073
wt     -5.116685   1.3673710   107.68420   44.192661  -0.37272073   0.9573790  -0.30548161
qsec    4.509149  -1.8868548   -96.05168  -86.770081   0.08714073  -0.3054816   3.19316613
vs      2.017137  -0.7298387   -44.37762  -24.987903   0.11864919  -0.2736613   0.67056452
am      1.803931  -0.4657258   -36.56401   -8.320565   0.19015121  -0.3381048  -0.20495968
gear    2.135685  -0.6491935   -50.80262   -6.358871   0.27598790  -0.4210806  -0.28040323
carb   -5.363105   1.5201613    79.06875   83.036290  -0.07840726   0.6757903  -1.89411290
               vs           am        gear        carb
mpg    2.01713710   1.80393145   2.1356855 -5.36310484
cyl   -0.72983871  -0.46572581  -0.6491935  1.52016129
disp -44.37762097 -36.56401210 -50.8026210 79.06875000
hp   -24.98790323  -8.32056452  -6.3588710 83.03629032
drat   0.11864919   0.19015121   0.2759879 -0.07840726
wt    -0.27366129  -0.33810484  -0.4210806  0.67579032
qsec   0.67056452  -0.20495968  -0.2804032 -1.89411290
vs     0.25403226   0.04233871   0.0766129 -0.46370968
am     0.04233871   0.24899194   0.2923387  0.04637097
gear   0.07661290   0.29233871   0.5443548  0.32661290
carb  -0.46370968   0.04637097   0.3266129  2.60887097


> # correlation coefficient and p-value for mtcars dataset
> rcorr(as.matrix(mtcars), type="pearson")
       mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb
mpg   1.00 -0.85 -0.85 -0.78  0.68 -0.87  0.42  0.66  0.60  0.48 -0.55
cyl  -0.85  1.00  0.90  0.83 -0.70  0.78 -0.59 -0.81 -0.52 -0.49  0.53
disp -0.85  0.90  1.00  0.79 -0.71  0.89 -0.43 -0.71 -0.59 -0.56  0.39
hp   -0.78  0.83  0.79  1.00 -0.45  0.66 -0.71 -0.72 -0.24 -0.13  0.75
drat  0.68 -0.70 -0.71 -0.45  1.00 -0.71  0.09  0.44  0.71  0.70 -0.09
wt   -0.87  0.78  0.89  0.66 -0.71  1.00 -0.17 -0.55 -0.69 -0.58  0.43
qsec  0.42 -0.59 -0.43 -0.71  0.09 -0.17  1.00  0.74 -0.23 -0.21 -0.66
vs    0.66 -0.81 -0.71 -0.72  0.44 -0.55  0.74  1.00  0.17  0.21 -0.57
am    0.60 -0.52 -0.59 -0.24  0.71 -0.69 -0.23  0.17  1.00  0.79  0.06
gear  0.48 -0.49 -0.56 -0.13  0.70 -0.58 -0.21  0.21  0.79  1.00  0.27
carb -0.55  0.53  0.39  0.75 -0.09  0.43 -0.66 -0.57  0.06  0.27  1.00

n= 32 


P
     mpg    cyl    disp   hp     drat   wt     qsec   vs     am     gear   carb  
mpg         0.0000 0.0000 0.0000 0.0000 0.0000 0.0171 0.0000 0.0003 0.0054 0.0011
cyl  0.0000        0.0000 0.0000 0.0000 0.0000 0.0004 0.0000 0.0022 0.0042 0.0019
disp 0.0000 0.0000        0.0000 0.0000 0.0000 0.0131 0.0000 0.0004 0.0010 0.0253
hp   0.0000 0.0000 0.0000        0.0100 0.0000 0.0000 0.0000 0.1798 0.4930 0.0000
drat 0.0000 0.0000 0.0000 0.0100        0.0000 0.6196 0.0117 0.0000 0.0000 0.6212
wt   0.0000 0.0000 0.0000 0.0000 0.0000        0.3389 0.0010 0.0000 0.0005 0.0146
qsec 0.0171 0.0004 0.0131 0.0000 0.6196 0.3389        0.0000 0.2057 0.2425 0.0000
vs   0.0000 0.0000 0.0000 0.0000 0.0117 0.0010 0.0000        0.3570 0.2579 0.0007
am   0.0003 0.0022 0.0004 0.1798 0.0000 0.0000 0.2057 0.3570        0.0000 0.7545
gear 0.0054 0.0042 0.0010 0.4930 0.0000 0.0005 0.2425 0.2579 0.0000        0.1290
carb 0.0011 0.0019 0.0253 0.0000 0.6212 0.0146 0.0000 0.0007 0.7545 0.1290

 

P 행렬에서 carb,am p-value가 0.7545로 상관계수가 유의하지 않음을 알 수 있다

 

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함