이 글은
2022.07.04 - [수학의 재미/행렬 이론] - 공분산과 공분산 행렬
공분산과 공분산 행렬
어떤 현상이나 타깃을 관찰하다 보면 여러 특징(features)들이 있습니다. 예를 들어 사람을 관찰할 경우 키, 몸무게, 나이 등등 학생 학습 성취도를 관찰할 경우: 국어 점수, 수학 점수 등 그런데 경
sine-qua-none.tistory.com
을 엑셀의 함수들을 사용하여 구해보는 글입니다.

저번 글에서 봤던 데이터입니다. 다시 한번 살펴보면 공분산은 2가지 방법으로 구할 수 있다고 했습니다.
p개의 변수(features) X1,X2,⋯,Xp 가 있고 각각이 n개의 관찰 데이터 샘플을 가지고 있는 상황에서, 즉
(∣∣∣X1X2⋯Xp∣∣∣)=(x11x12⋯x1px21x22⋯x2p⋮⋮⋱⋮xn1xn2⋯xnp)
에서 공분산행렬 C는 다음과 같이 구합니다. 각 i≤p에 대해 E(Xi)=μi라 하면,
방법 1
1≤i,j≤p 에 대해,
Cij=E(Xi−μi)(Xj−μj)=E(XiXj)−E(Xi)E(Xj)
방법 2.
X=(∣∣∣X1−μ1X2−μ2⋯Xp−μp∣∣∣)
라 놓고
C=1nXTX
를 이용하여 구하기
하나하나 살펴보겠습니다.
방법 1. 공분산 행렬의 각 원소를 COVARIANCE 함수로 구하기

엑셀에 두 통계 변수의 공분산을 구하는 함수는
- COVARIANCE.P : 두 데이터 집단 사이의 모집단 공분산
- COVARIANCE.S : 두 데이터 집단 사이의 표본 집단 공분산
두 가지가 있습니다.
표본집단의 공분산은 여기서 다룬 STDEV처럼 불편 추정량을 구하는 것입니다. 수식으로 써보면 n개의 데이터로 이루어진 변수 X=(xi)와 Y=(yi)에 대해,
COVARIANCE.P=1nn∑i=1(xi−μX)(yi−μY)COVARIANCE.S=1n−1n∑i=1(xi−μX)(yi−μY),
이고 μX=1n∑xi,μY=1n∑yi입니다.
직접 엑셀로 검증해 보겠습니다.

○ 셀 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 |
'엑셀' 카테고리의 다른 글
트렌드 곡선 구하기 - 지수 (0) | 2022.05.16 |
---|---|
트렌드 곡선 구하기 - 거듭제곱 (0) | 2022.05.15 |
트렌드 직선의 비밀(선형회귀) 엑셀실습 #2 (0) | 2022.05.13 |
트렌드 직선의 비밀(선형회귀) 엑셀실습 #1 (0) | 2022.05.13 |
STDEV 함수 (0) | 2022.05.09 |
댓글