TL;DR

  • 공분산은 두 변수가 평균을 기준으로 같은 방향으로 움직이는지, 반대 방향으로 움직이는지를 측정한다.
  • 양수이면 대체로 같이 커지고 같이 작아지는 경향, 음수이면 한쪽이 클 때 다른 쪽은 작아지는 경향이다. 다만 단위가 남아 있어서 크기 자체는 직접 비교하기 어렵다.

공분산

공분산(covariance)은 두 변수의 동반 움직임을 보는 값이다. 분산(variance)이 한 변수의 퍼짐을 본다면, 공분산은 두 변수가 평균 기준으로 함께 움직이는 방향을 본다. 핵심 질문은 간단하다.

한 변수가 자기 평균보다 클 때, 다른 변수도 자기 평균보다 큰가?

그렇다면 두 변수는 같은 방향으로 움직인다. 반대로 한 변수는 평균보다 큰데 다른 변수는 평균보다 작다면 서로 반대 방향으로 움직인다.


직관

사람들의 키와 몸무게가 있다고 하자.

사람키(cm)몸무게(kg)
A16052
B16558
C17063
D17570
E18078

키가 평균보다 큰 사람은 몸무게도 평균보다 큰 편이고, 키가 평균보다 작은 사람은 몸무게도 평균보다 작은 편이다. 이 경우 두 변수는 같은 방향으로 움직이므로 공분산은 양수다.

공분산은 각 관측치에서 다음을 확인한다.

의 위치의 위치곱의 부호의미
평균보다 큼평균보다 큼같은 방향
평균보다 작음평균보다 작음같은 방향
평균보다 큼평균보다 작음반대 방향
평균보다 작음평균보다 큼반대 방향

양수 항이 많이 쌓이면 공분산은 양수가 되고, 음수 항이 많이 쌓이면 공분산은 음수가 된다. 양수와 음수가 서로 섞여 상쇄되면 0에 가까워진다.


수식

표본 공분산은 다음과 같이 계산한다.

각 항의 의미는 다음과 같다.

  • : 평균보다 얼마나 큰지 또는 작은지
  • : 평균보다 얼마나 큰지 또는 작은지
  • 두 편차의 곱: 두 변수가 평균 기준으로 같은 방향인지 반대 방향인지
  • 전체 합: 모든 관측치에서 방향성이 얼마나 누적되는지
  • 로 나누기: 표본에서 모집단의 공분산을 추정하기 위한 보정

모집단 공분산은 기대값으로 표현할 수 있다.


해석

공분산해석
두 변수가 같은 방향으로 움직이는 경향
두 변수가 반대 방향으로 움직이는 경향
평균 기준 동반 움직임이 약함

공분산이 양수이면 가 평균보다 클 때 도 평균보다 큰 경우가 많다. 공분산이 음수이면 가 평균보다 클 때 는 평균보다 작은 경우가 많다.

단, 공분산은 방향만 보여줄 뿐, 관계의 강도는 단위가 남아 있어 직접 비교하기 어렵다.


Pearson 상관계수와의 관계

Pearson 상관계수는 공분산을 두 변수의 표준편차로 나누어 표준화한 값이다.

공분산은 원래 단위가 남아 있어 범위가 정해져 있지 않다. Pearson 상관계수는 이를 부터 사이 값으로 바꾸기 때문에 서로 다른 변수 쌍의 선형 관계를 비교하기 쉽다.

즉, 공분산은 Pearson 상관계수의 핵심 재료다.


주의할 점

단위에 민감하다

공분산은 의 단위와 의 단위를 곱한 단위를 갖는다. 그래서 변수의 단위나 스케일이 바뀌면 공분산 값의 크기도 바뀐다.

방향은 보이지만 표준화된 강도는 아니다

공분산이 양수인지 음수인지는 유용하다. 하지만 이라는 공분산이 강한 관계인지 약한 관계인지는 변수의 단위와 분산을 함께 봐야 한다. 이 문제를 해결한 값이 Pearson 상관계수다.

선형적 동반 움직임 중심이다

공분산은 평균을 기준으로 두 변수가 함께 움직이는지를 본다. 따라서 비선형 구조가 강한 데이터에서는 산점도와 함께 해석해야 한다.


구현

import numpy as np
 
x = [160, 165, 170, 175, 180]
y = [52, 58, 63, 70, 78]
 
cov_matrix = np.cov(x, y)
print(cov_matrix)

np.cov(x, y)는 공분산 행렬을 반환한다. 대각 원소는 각 변수의 분산이고, 비대각 원소가 두 변수 사이의 공분산이다.


Connections

  • Pearson 상관계수 — 공분산을 표준편차로 나누어 부터 사이로 표준화한 값.
  • 표준편차 — 공분산을 단위 없는 상관계수로 만들 때 나누는 각 변수의 퍼짐 단위.
  • 분산(variance) — 한 변수가 자기 평균 주변에서 얼마나 퍼져 있는지 측정한다. 공분산 행렬의 대각 원소는 각 변수의 분산이다.
  • 공분산 행렬 — 여러 변수 쌍의 공분산을 행렬로 모은 구조.
  • [[주성분 분석]] — 공분산 행렬 또는 상관계수 행렬을 기반으로 데이터의 주요 변동 방향을 찾는다.