2025-04-21

장상희·2025년 4월 21일

파이썬

목록 보기
19/31

공분산

공분산은 두 변수가 서로 얼마나 관련이 있는지 같이 움직이는지를 보여주는 수치

공분산 구하기

  1. x,y 두 데이터의 평균 구하기
  2. 기존 데이터에 평균 데이터를 빼서 x,y의 편차 구하기
  3. x편차와 y편차를 곱해서 두 값의 관계 보기
  4. 공분산은 편차 곱의 평균이야 그래서 구한 값들을 모두 더하고, 학생수로 나누면 돼
  5. 공분산이 양수 일떄는 양의 관계고 음수 일때는 음의 관계

이걸 쉽게 만든게 상관관계

상관관계

두 변수 사이의 선형적인 관계의 강도와 방향을 나타내는 수치입니다

보통은 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)

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
profile
프로그래머 꿈나무

0개의 댓글