본문 바로가기
python

[통계학] 3. 공분산과 상관계수 및 시각화

by jinsuc28 2022. 5. 14.

※ 인공지능 회귀분석 강의 통계와 확률을 바탕으로 정리하였습니다.

 

2차원 데이터 분석은 크게 2가지 방법으로 볼 수 있다.

1. 수치 지표: 상관계수, 공분산

2. 시각화 그래프: 산점도, 회귀직선 등

 

공분산

두 변수의 상관관계를 수치화 하기 위한 지표

두 변수의 각각 편차의 곱의 합과 길이 만큼 나눈 것

# 공분산 구하기

np.cov(수학점수, 영어점수, ddof=0)

아래와 같이 매트릭스로 나옴
자기 자신과 자기 자신의 공분산은 분산으로써 결과값이 나옴
array([
	[86, 65],
    	[65,68]
    ])

 

하지만, 공분산으로 우리는 상관관계를 파악하기는 쉽지 않다.

왜냐하면 변수의 단위가 변수마다 다르기 때문이다.

ex) (키: cm, 몸무게: kg) 각 두 값은 하나로 공분산을  표현할 때

어느 정도 상관관계가 있는 지 판단하기 어려움

 

따라서 단위에 의존하지 않는 상관관계를 나타내는 지표가 필요하여 상관계수가 나옴

 

상관계수(Correlation coefficient)

공분산 값에서 단위에 의존하지 않도록 각 데이터의 단위인 표준편차로 나누어 준 값

rxy를 상관계수라고 한다.

 

상관계수는 -1과 1사이의 값을 가진다.

공분산 계산 방법
1. 직접 계산방법

np.cov(수학점수, 영어점수, ddof=0)/(np.std(수학점수)*np.std(영어점수))

2. np.corrcoef() 함수 사용
np.corrcoef(수학점수, 영어점수)

매트릭스로 출력이 되며 자기 자신과 자신의 상관계수는 1이다.

3. DataFrame.corr() 함수

df = DataFrame(수학점수, 영어점수)
df.corr()
데이터프레임으로 상관계수가 출력된다.(넘파이보다 좀더 시각적이다.)

 

시각화

상관관계가 있더라도 전혀 상관관계가 없는 데이터일 수도 있음

ex) 앤스컴(Anscombe)의 콰르텟 데이터 예시

앤스텀은 데이터셋은 평균,표준편차, 상관관계가 같더라도 전혀 다른 데이터 일 수 있는 사례를 보여줌

따라서 수치 지표를 파악하더라도 시각화는 필수!

대표적 시각화

산점도

matplotlib의 scatter를 통해 대략적인 데이터 분포를 파악

 

회귀직선

두 데이터 사이의 관계를 잘 나타내는 직선

 

matplotlib은 회귀직선을 그릴 수 없다 따라서 넘파이로 그려보자

np.polyfit()과 np.ploy1d를 활용하자

 

히트맵

색의 차이를 통해 표현하는 히스토그램의 2차원 버전

 

Histd2d 사용