[Math] Covariance and Correlation

공분산(covariance) & 상관계수(correlation coefficient)

- 다변수 확률변수 간의 상관관계 표현

1. 공분산

표본공분산(sample covariance)

  • 절대값: 무의미
  • 부호: 데이터 간 상관관계 방향(x의 $\bar{x}$ 대비 증감에 따른 y의 $\bar{y}$ 대비 증감)
  • $(\bar{x}, \bar{y})$를 원점으로 $(x-\bar{x}) \times (y-\bar{y})$ 사각형의 면적으로 계산
    • 음수 면적 존재

2. 상관계수

  • 공분산 normalize

표본상관계수(correlation coefficient)

  • 절대값: 변수 간 (의존)크기=선형(직선)관계 크기 표현(scatter_plot 선형 정도)
    • 즉, x알면 y를 알 수 있는 정도
    • 비선형은 catch 불완전
      • eg. 2차함수: x알면 y 100% 맞출 수 있지만(완전한 상관관계 존재), corr값은 0 가능
  • 부호: 데이터 상관관계 방향
    • 중요: scatter plot의 기울기 절대값 크기는 상관계수와 아무런 의미 없음
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 상관계수의 예
np.random.seed(0)
corrs = [1, .7, .3, -.3, -.7, -1]
plt.figure(figsize=(15, 2))

mean = [0, 0]
for i, r in enumerate(corrs):
cov = [[1, r], [r, 1]]
x, y = np.random.multivariate_normal(mean, cov, size=1000).T
plt.subplot(1, len(corrs), i+1)
plt.plot(x, y, 'ro', ms=1)
# plt.axis('equal')
plt.title(r"$\rho={}$".format(r))
plt.grid(False)
plt.suptitle("corr and scatter_plot", y=1.1)
plt.tight_layout()
plt.show()

reference

< !-- add by yurixu 替换Google的jquery并且添加判断逻辑 -->