Covariance vs. Correlation
Covariance (공분산)
"Covariance" is the raw version of correlation.
- 두 random variable(확률변수)가 얼마나 (선형적으로) 같이 변하는 정도를 나타냄.
- 여러 random variables 에서는 matrix로 기재됨(covariance matrix, Σ).
- main diagonal은 자기자신과의 covariance, 즉 해당 확률변수 하나에 대한 variance임.
- matrix로 보여지는 경우엔 여러 random variable들이 있고 이들 중에 나올 수 있는 쌍에서의 covariance를 보여줌.
- 항상 symmetric matrix 임. (every symmetric matrix is orthogonally diagonalizable)
- Correlaton coefficient(상관계수, Pearson's correlation coefficient, r)와 비슷하나,
covariance는 두 random variable들이 같이 변하는 정도가 강할수록 큰 값을 가지기도 하지만,
각각의 random variable의 variance(분산)에도 영향을 받음.- 극단적으로 애기해서 두 확률변수가 서로 독립적 이라도 각각의 확률변수의 variance가 클 경우 큰 값을 가짐.
- 때문에 서로 얼마나 선형적인 상관관계가 있는지를 말하는데 있어서는 Correlation coefficient가 더 많이 사용됨.
다음은 covariance의 수식이다.
Cov(X,Y)=E[(X−E[X])(Y−E[Y])]=E[(X−μX)(Y−μY)]=E[XY−μYX−μXY+μXμY]=E[XY]−μYE[X]−μXE[Y]+μXμY=E[XY]−μYμX−μXμY+μXμY=E[XY]−μXμY=1N−1N∑i=1(Xi−μX)(Yi−μY)
- E[] : estimated value로 흔히 mean을 의미한다.
- X, Y : covariance를 구하고자 random variable임.
참고로 covariance의 sign은 linear 관계가 비례관계 인지 역비례관계 인지를 나타냄:
- positive → 같이 증가,
- negative→ 역관계(하나가 증가시 하나는 감소)
위의 식은 개념을 잘 보여주는 식이며,
일반적으로는 centering (μX와 μY가 0이 되도록 처리하는 것을 가르킴)을 수행했다고 가정하고
다음과 같은 matrix equation으로 나타냄.
Σ=cov(X)=1n−1XXT∝XXT
- 위 식에서 X는 centering을 수행한 이후의 matrix임.
(random variables 이 column으로 배치되고, sample들이 row로 배치됨, 아래 example 참고)- centering은 결국 각 column에서 mean이 0이 되도록 column들의 mean을 구하고 각 column에 대해 빼주는 처리를 의미함.
- Σ는 covariance matrix 이며 항상 square matrix이면서 symmetric matrix이며 eigne vectors들이 서로 orthgonal함.
Example : Covariance Matrix
다음과 같은 데이터를 수집했다고 가정.
- X,Y,Z 확률변수를 하나의 sample (or obj)이 가지고 있는 형태 (feature vector).
- 전체 샘플 수는 4, feature의 수는 3임.
X | Y | Z | |
sample 1 | 1 | 4 | 3 |
sample 2 | 2 | 3 | 5 |
sample 3 | 3 | 2 | 2 |
sample 4 | 4 | 1 | 7 |
위의 Data를 Matrix D라고 할 때, 하나의 feature에 대한 vector들 x,y,z (←Data Matrix의 column vector)을 통해 다음과 같이 표현할 수 있음.
D=[143235322417]=[xyz]
feature X(or column X)와 Y의 covariance는 다음과 같음.
cov(x,y)=1N−1⟨x,y⟩−μXμY=1N−1xTy−μXμY=13[1234][4321]−(2.5×2.5)=13[−1.5−0.50.51.5][1.50.5−0.5−1.5]=−1.667
이를 한번에 표현하는 covariance matrix Σ는 deviation matrix D′을 이용하여 계산 가능함.
- standard deviation σ와 variance σ2의 관계를 matrix로 확장한 셈.
cov(D)=Σ=1N−1D′TD′=13[1−2.52−2.53−2.54−2.54−2.53−2.52−2.51−2.53−4.255−4.252−4.257−4.25][1−2.54−2.53−4.252−2.53−2.55−4.253−2.52−2.52−4.254−2.51−2.57−4.25]=[1.67−1.671.5−1.671.67−1.51.5−1.54.92]
- Σ에서 main diagonal은 각 feature column 자체의 variance에 해당.
- main diagonal 이외의 entry들은 covariance들이기 때문에 Σ는 항상 Symmetric matrix임.
cov(X,Y)=cov(Y,X)=−1.67cov(X,Z)=cov(Z,X)=1.5cov(Y,Z)=cov(Z,Y)=−1.5
Correlation (상관계수)
- Covariance와 함께, 두 random variable (확률변수)간의 선형적인 상관관계의 강도를 나타냄.
- Covariance와 달리 range가 [-1,1]로 고정됨 : 1,-1 은 각각 매우 강한 positive 상관관계, negative 상관관계를 나타냄. (linear상관관계)
- 0 인 경우, 두 random variable은 독립임 (전혀 상관없음)
- Covariance를 각 random variable의 standard deviation(표준편차)로 나누어줌으로서
각각의 확률변수의 variance에 대해선 normalization임.- 때문에 두 변수가 선형적으로 같이 변하는 정도만을 반영하고, 각 변수가 홀로 variance가 큰 경우에는 큰 값을 가지지 않게 되어있음.
주의할 점은 선형적 상관관계를 보여주는 것이라, 비선형적 관계에서는 값의 크기가 낮을 수 있다.
더욱 주의할 점은 상관관계를 의미하지 절대로 인과관계를 의미하는 건 아니라는 점이다.
수식은 다음과 같다.
r=1N−1N∑i=1(Xi−μXσX)(Yi−μYσY)=E[(X−μXσX)(Y−μYσY)]=E[(X−μX)(Y−μY)]σXσY=Cov(X,Y)σXσY
N−1 로 나누어준 이유는 statistics에서 degree of freedom이 N−1로 처리하기 때문임.
다음 그림은 wikipedia의 correlation설명으로 나오는 그림으로 non-linear에서 correlation coefficient가 얼마나 낮게 나올 수 있는지를 보여주며, 동시에 기울기가 correlation coefficient와 전혀 상관이 없다는 사실도 보여준다.

Correlation (상관관계) Is Not Causation (인과관계)
아래 인용된 내용을 읽어보면,
두 random variable이 직접적인 인과관계인지, 이 둘을 중개해주는 다른 factor들이 있는지 등을
correlation coefficient는 전혀 애기를 해주지 않는다는 것을 확인할 수 있다.
또한 누가 원인인지 결과인지를 구분하는데 필요한 정보도 제공하지 않는다.
You have probably heard at some point that “correlation is not causation,” most likely from someone looking at data that posed a challenge to parts of his worldview that he was reluctant to question. Nonetheless, this is an important point—if xand y are strongly correlated, that might mean that x causes y, that y causes x, that each causes the other, that some third factor causes both, or nothing at all.
Example
import pandas as pd import numpy as np x = np.arange(-5,5) y0 = -3*x+4 y1 = 2*x y2 = 2*x+3 y3 = 5*x y4 = x**2 y5 = np.random.randn((10))*5+2 df = pd.DataFrame( data = {'x':x, 'y0':y0, 'y1':y1, 'y2':y2, 'y3':y3, 'y4':y4, 'y5':y5 }, index=[*np.arange(10)], )
- 여기서
y5
는 정규분포에 따르는 random variable이니, correlation이나 covariance가 낮게 나와야 함. y4
는 서로 상관관계가 있으나 linear한 관계가 아님.- 나머지들은 positive 또는 negative한 선형 상관관계임. (기울기의 차이가 있음)
DataFrame 인스턴스 df
는 다음과 같음.
index | x | y0 | y1 | y2 | y3 | y4 | y5 |
---|---|---|---|---|---|---|---|
0 | -5 | 19 | -10 | -7 | -25 | 25 | 4.47 |
1 | -4 | 16 | -8 | -5 | -20 | 16 | 10.44 |
2 | -3 | 13 | -6 | -3 | -15 | 9 | -1.03 |
3 | -2 | 10 | -4 | -1 | -10 | 4 | 1.56 |
4 | -1 | 7 | -2 | 1 | -5 | 1 | -8.49 |
5 | 0 | 4 | 0 | 3 | 0 | 0 | -1.57 |
6 | 1 | 1 | 2 | 5 | 5 | 1 | 3.99 |
7 | 2 | -2 | 4 | 7 | 10 | 4 | 5.08 |
8 | 3 | -5 | 6 | 9 | 15 | 9 | -1.02 |
9 | 4 | -8 | 8 | 11 | 20 | 16 | -4.18 |
Covariance는 다음과 같음. (main diagonal이 1이 아닌 각각의 random variable의 variance임을 유의)
df.cov()
index | x | y0 | y1 | y2 | y3 | y4 | y5 |
---|---|---|---|---|---|---|---|
x | 9.16 | -27.5 | 18.33 | 18.33 | 45.83 | -9.16 | -6.29 |
y0 | -27.5 | 82.5 | -55.0 | -55.0 | -137.5 | 27.5 | 18.88 |
y1 | 18.33 | -55.0 | 36.66 | 36.66 | 91.66 | -18.33 | -12.59 |
y2 | 18.33 | -55.0 | 36.66 | 36.66 | 91.66 | -18.33 | -12.59 |
y3 | 45.83 | -137.5 | 91.66 | 91.66 | 229.16 | -45.83 | -31.48 |
y4 | -9.16 | 27.5 | -18.33 | -18.33 | -45.83 | 67.83 | 15.21 |
y5 | -6.29 | 18.88 | -12.59 | -12.59 | -31.48 | 15.21 | 28.78 |
Correlation은 다음과 같음.
df.corr()
index | x | y0 | y1 | y2 | y3 | y4 | y5 |
---|---|---|---|---|---|---|---|
x | 1.0 | -1.0 | 1.0 | 1.0 | 1.0 | -0.36 | -0.38 |
y0 | -1.0 | 1.0 | -1.0 | -1.0 | -1.0 | 0.36 | 0.38 |
y1 | 1.0 | -1.0 | 1.0 | 1.0 | 1.0 | -0.36 | -0.38 |
y2 | 1.0 | -1.0 | 1.0 | 1.0 | 1.0 | -0.36 | -0.38 |
y3 | 1.0 | -1.0 | 1.0 | 1.0 | 1.0 | -0.36 | -0.38 |
y4 | -0.36 | 0.36 | -0.36 | -0.36 | -0.36 | 1.0 | 0.34 |
y5 | -0.38 | 0.38 | -0.38 | -0.38 | -0.38 | 0.34 | 1.0 |
'... > Math' 카테고리의 다른 글
[Math] Jacobian : Summary (0) | 2022.05.07 |
---|---|
[Math] Commonly used Vector derivatives. (0) | 2022.05.05 |
[Statistics] Sample Point Method (0) | 2022.05.01 |
Closed-form solution and Closed-form expression (0) | 2022.04.29 |
Normal Equation : Vector derivative 를 이용한 유도 (0) | 2022.04.28 |