상관계수(Correlation)

상관계수란 두 변수 사이의 선형 관계를 나타내는 지표로 그 수식은 아래와 같다.

$$ cor(X,Y)= {{cov(X, Y)}\over{\sigma_X, \sigma_Y}}$$

$$ cov(X,Y)={{1}\over{n-1}} \sum^n_{i=1}(x_i-E(X))(y_i-E(Y))$$

$$ VAR(X)={{1}\over{n-1}}\sum^n_{i=1}(x_i-E(X))^2$$

$$ E(X)=\bar{x}={{1}\over{n}} \sum^n_{i=1} x_i$$

$$ cor(X,Y)= {{\sum^n_{i=1}(x_i-\bar{x})(y_i-\bar{y})}\over{\sqrt{\sum^n_{i=1} (x_i -{\bar{x}} )^2} \sqrt{\sum^n_{i=1} (y_i -{\bar{y}} )^2}}}$$

X1=c(4,4,7,7,10,10)# 연령
X2=c(1,2,2,4,3,6)#언어 속도
Y=c(14,23,30,50,39,67)#기억범위
cor(X1,Y)# 연령에따른 기억범위

MY_COR=function(X,Y){
  #COV
  COV=sum((X-sum(X)/length(X))*
        (Y-sum(Y)/length(Y)))/(length(Y)-1)
  VAR_X=sum((X-sum(X)/length(X))^2)/(length(X)-1)
  VAR_Y=sum((Y-sum(Y)/length(Y))^2)/(length(Y)-1)
  return(COV/((VAR_X^(1/2))*(VAR_Y^(1/2))))
}

MY_COR(X,Y)

부분상관(Partial Correlation)

만약 두 변수 $X$와 $Y$의 관계에서 $Z$가 $X$와 관련이 있다고 한다면, $Z$의 영향을 제외한 $X$와 $Y$ 사이의 상관관계를 부분상관계수라고 한다. 여기서 $Z$를 통제 변수라 한다. 즉, 부분상관은 제 3의 변수의 영향을 제외한 두 변수 사이의 상관관계를 의미한다.

$$r_{12,3}={{r_{12}-r_{13} r_{23}}\over{\sqrt{1-r_{13}^2}\sqrt{1-r_{23}^2}}}$$

# Partial Correlation
(cor(X1,Y)-cor(X1,X2)*cor(Y,X2))/
  (sqrt(1-cor(X1,X2)^2)*sqrt(1-cor(Y,X2)^2))

준부분상관(Part Correlation)

두 변수 사이의 상관관계를 구할 때, 두 변수 중 하나의 변수에 대해서만 다른 변수가 미치는 효과를 제외하여 구한 상관관계를 의미한다. 이는 Y의 분산 중 X1만이 설명할 수 있는 Y의 분산을 의미한다.

# Semi Partial Correlation
(cor(X1,Y)-cor(X1,X2)*cor(Y,X2))/
  (sqrt(1-cor(Y,X2)^2))
(cor(X1,Y)-cor(X1,X2)*cor(Y,X2))/
  (sqrt(1-cor(X1,X2)^2))

패키지 활용

library('ppcor')
pcor.test(X1,Y,X2)
spcor.test(X1,Y,X2)
spcor.test(Y,X1,X2)

참고

Partial and Semipartial Correlation
Listen Data offers data science tutorials covering a wide range of topics such as SAS, Python, R, SPSS, Advanced Excel, VBA, SQL, Machine Learning
상관(correlation), 부분상관(partial correlation), 준부분상관(semipartial correlation, part correlation)
상관(correlation)이란 두 변수가 연관되는 정도로 이해할 수 있다. Y와 X1간의 zero order correlation ...