Loading [MathJax]/jax/output/CommonHTML/jax.js
본문 바로가기
엑셀

공분산 행렬을 엑셀로 구하기

by hustler78 2022. 7. 5.
728x90
반응형

이 글은

2022.07.04 - [수학의 재미/행렬 이론] - 공분산과 공분산 행렬

 

공분산과 공분산 행렬

어떤 현상이나 타깃을 관찰하다 보면 여러 특징(features)들이 있습니다. 예를 들어 사람을 관찰할 경우 키, 몸무게, 나이 등등 학생 학습 성취도를 관찰할 경우: 국어 점수, 수학 점수 등 그런데 경

sine-qua-none.tistory.com

을 엑셀의 함수들을 사용하여 구해보는 글입니다.

 

 

배달업체의 자료

저번 글에서 봤던 데이터입니다. 다시 한번  살펴보면 공분산은 2가지 방법으로 구할 수 있다고 했습니다.

 

p개의 변수(features) X1,X2,,Xp 가 있고 각각이 n개의 관찰 데이터 샘플을 가지고 있는 상황에서, 즉

 

(X1X2Xp)=(x11x12x1px21x22x2pxn1xn2xnp)

에서 공분산행렬 C는 다음과 같이 구합니다. 각 ip에 대해 E(Xi)=μi라 하면,

방법 1
1i,jp 에 대해,
Cij=E(Xiμi)(Xjμj)=E(XiXj)E(Xi)E(Xj)

 

 

방법 2.
X=(X1μ1X2μ2Xpμp)
라 놓고 
C=1nXTX
를 이용하여 구하기

 

하나하나 살펴보겠습니다.

 

방법 1. 공분산 행렬의 각 원소를 COVARIANCE 함수로 구하기

 

엑셀에 두 통계 변수의 공분산을 구하는 함수는 

  1. COVARIANCE.P : 두 데이터 집단 사이의 모집단 공분산
  2. COVARIANCE.S : 두 데이터 집단 사이의 표본 집단 공분산

두 가지가 있습니다. 

표본집단의 공분산은 여기서 다룬 STDEV처럼 불편 추정량을 구하는 것입니다. 수식으로 써보면 n개의 데이터로 이루어진 변수 X=(xi)Y=(yi)에 대해,

COVARIANCE.P=1nni=1(xiμX)(yiμY)COVARIANCE.S=1n1ni=1(xiμX)(yiμY),

이고 μX=1nxi,μY=1nyi입니다.

 

직접 엑셀로 검증해 보겠습니다.

 

 

○ 셀 C19, D19에 X, Y의 평균을 구합니다. AVERAGE() 사용 → μX,μY 계산

○ I열 , J열에  C, D열에서 각각의 평균을 빼준 배열을 만듭니다.

○ 두 배열의 원소의 곱의 합, 즉 내적을 구합니다. SUMPRODUCT() 사용 → (xiμX)(yiμY) 계산

○ 셀 G6에 데이터 개수를 구합니다. COUNTA() 사용

○ 셀 G7, G8에 모집단의 공분산,  표본집단의 공분산을 구합니다.

○ 셀 G3, G4와 비교합니다.

 

 

방법 2를 이용하기

 

○ 각 데이터에서 평균을 뺀 X라는 배열을 준비합니다. (F, G열)

○ RANGE(I3:J4) 영역에 빨간 네모 박스 친 수식을 걸어줍니다. 좀 더 분석해 보면

  -  TRANSPOSE(F3:G17) 로 XT를 의미합니다.

  - F3:G17 은 X를 의미합니다.

  - MMULT는 두 배열의 곱입니다. 즉 XTX를 의미합니다.

  - COUNTA(F3:F17)은 데이터의 개수입니다.

  - 주의할 점: 결과가 배열로 나와야 하므로 배열 수식을 걸어줘야 합니다. 배열 수식은

원하는 영역을 선택한 후, 수식을 입력하고 Ctrl + Shift + Enter를 치면 됩니다.
위 그림의 빨간 영역처럼 { } 괄호로 묶인 수식이 나오게 됩니다.

 

 

따라서 방법 1이나 방법 2나 모두 똑같은 결과를 얻습니다. 저번 글에서 처럼 python을 이용하면 쉬우나, 실무에서는 엑셀을 사용한 데이터 분석도 많이 하기 때문에 알아두면 유용할 것 같군요.

 

 

 

 

끝으로 분석에서 썼던 엑셀 함수 리스트입니다.

AVERAGE COVARIANCE.P COVARIANCE.S COUNTA
SUMPRODUCT MMULT TRANSPOSE  
728x90
반응형

댓글