공분산은 두 변수가 서로 얼마나 관련이 있는지 같이 움직이는지를 보여주는 수치
이걸 쉽게 만든게 상관관계
두 변수 사이의 선형적인 관계의 강도와 방향을 나타내는 수치입니다
보통은 r로 포현합니다
| r 값 | 해석 |
|---|---|
| 1 | 완벽한 양의 산관관계 |
| 0.7~0.9 | 강한 양의 상관관계 |
| 0.4~0.6 | 중간 정도 양의 상관관계 |
| 0.1~0.3 | 약한 양의 상관관계 |
| 0 | 상관 없음(선형의 상관관계가 아니라는 뜻) |
| -0.1~-0.3 | 약한 음의 상관관계 |
| -0.4~-0.9 | 중간 정도 음의 상관관계 |
| -0.7~-0.9 | 강한 음의 상관관계 |
| -1 | 완벽한 음의 상관관계 |
| 구분 | 공분산 | 상관계수 |
|---|---|---|
| 단위 | 데이터 단위 영향을 받음 | 단위 없음 (무차원) |
| 범위 | 제한 없음 | -1 ~ 1 |
| 해석 | 크기 해석 어려움 | 직관적으로 해석 쉬움 |
y값과 x 값이 같이 올라가면 관계는 양의 상관관계(같이 움직임)
y값이 올라가면 x값이 낮아지는 관계는 음의 상관관계다(두 가지가 반대로 움직임)
y와 x가 전혀 관계가 없다면 상관관계는 없다
cov 메서드는 결측값을 제외한 쌍별 공분산을 구하는 메서드입니다.
공분산이란 확률변수가 2가지 일때 얼마나 퍼져있는가를 구하는 방법입니다.
즉, 두 값을 X축 Y축으로 놓고 점산도를 그렸을때 퍼진 정도라고 할 수 있습니다.
min_periods : 공분산을 구할 최소 요소의 갯수 입니다. 요소의 갯수가 모자르면 NaN을 반환합니다.
col = ['X','Y']
data1 = [[-6,-3],[-4,-1],[-2,-3],[0,1],[2,2]]
data2 = [[7,-4],[4,-1],[2,0],[-1,3],[-4,9]]
data3 = [[3,-4],[3,-1],[3,0],[3,3],[3,9]]
df1 = pd.DataFrame(data=data1, columns=col)
df2 = pd.DataFrame(data=data2, columns=col)
df3 = pd.DataFrame(data=data3, columns=col)
기본적인 사용법
df1은 좌표평면상에서 x가 증가할때 y도 증가하는 경향을 가집니다.
이때 공분산(cov)값은 0보다 크며 양의 상관관계라고 합니다.
print(df1.cov())
>>
X Y
X 10.0 6.0
Y 6.0 5.2
df2은 좌표평면상에서 x가 증가할때 y는 감소하는 경향을 가집니다.
이때 공분산(cov)값은 0보다 작으며 음의 상관관계라고 합니다.
print(df2.cov())
>>
X Y
X 18.30 -20.55
Y -20.55 24.30
df3은 좌표평면상에서 y가 변하여도 x는 변하지 않습니다.
이처럼 x와 y가 상관 없는경우 공분산(cov)값은 0입니다.
print(df3.cov())
>>
X Y
X 0.0 0.0
Y 0.0 24.3
min_periods인수의 사용
min_periods인수는 공분산에 이용될 요소의 최소 갯수를 제한합니다.
이 숫자보다 요소의 수가 적을 경우 NaN을 반환합니다.
print(df3.cov(min_periods=6))
>>
X Y
X NaN NaN
Y NaN NaN