공분산
공분산(covariance): 두 변수가 함께 변화하는 정도를 나타내는 지표
공분산
두 개의 데이터 x
와 y
가 있을 때
x = [8, 3, 6, 6, 9, 4, 3, 9, 3, 4]
y = [6, 2, 4, 6, 10, 5, 1, 8, 4, 5]
산점도로 나타내기. 가로축은 x
, 세로축은 y
를 나타냄.
import matplotlib.pyplot as plt
plt.plot(x, y, 'o')
[<matplotlib.lines.Line2D at 0x20e0fb52898>]
np.cov
를 사용하면 x의 분산, y의 분산과 함께 x와 y의 공분산을 계산
import numpy as np
np.cov(x, y)
array([[6.05555556, 5.61111111], [5.61111111, 6.98888889]])
공분산만 보고자 한다면 아래와 같이 함
np.cov(x, y)[0, 1]
5.61111111111111
공분산의 해석
부호:
- 공분산이 +인 경우: 두 변수가 같은 방향으로 변화(하나가 증가하면 다른 하나도 증가)
- 공분산이 -인 경우: 두 변수가 반대 방향으로 변화(하나가 증가하면 다른 하나는 감소)
크기:
- 공분산 = 0이면 두 변수가 독립, 즉, 한 변수의 변화로 다른 변수의 변화를 예측하지 못함
- 공분산의 크기가 클 수록 두 변수는 함께 많이 변화
- 단위에 따라 공분산의 크기가 달라지므로 절대적 크기로 판단이 어려움
- 공분산을 -1 ~ 1 범위로 표준화 시킨 것이 상관계수
주의: 공분산은 선형적인 관계를 측정하기 때문에 두 변수가 비선형적으로 함께 변하는 경우는 잘 측정하지 못함
아래 z와 w는 $w = z^2$의 관계가 있지만 공분산은 0
z = [-3, -2, -1, 0, 1, 2, 3]
w = [9, 4, 1, 0, 1, 4, 9]
np.cov(z, w)[0, 1]
0.0