본문 바로가기
데이터분석/확률과 통계

상관관계, 상관계수

by Jaeseok_Shim 2020. 4. 22.

1. 상관관계 분석(Correlation Analysis)이란?

상관계수(Correlation)는 두 변수간 연관성을 알아보는 지표이다.

상관계수로 키와 몸무게, 공부한 시간과 성적과의 관계나 판매 촉진비와 매출 간의 관계를 파악할 수 있다.

 

상관계수 중에는 피어슨(Pearson) 상관계수가 가장 많이 알려져 있다. 피어슨 상관계수는 -1.00 ~ 1.00 사이의 값을 가지며 -1.00이나 1.00에 가까울수록 변수 간 연관성이 높다고 볼 수 있으나, 인과관계를 이야기하는 것이 아니니 주의해야한다. 

 

예를 들어, 경찰서와의 거리와 범죄율과는 상관관계가 높을 수 있는데 경찰서가 많아서 범죄율이 낮을 수는 있지만, 범죄율이 낮아서 경찰서가 많다는 것은 이상한 논리이다. 그리고 통화량과 물가 간의 상관관계가 높더라도 물가 상승의 원인이 반드시 통화량의 증가 때문이라고 볼 수 없고, 통화량이 증가하면 물가가 오르지 않을 가능성도 많기 때문이다. (이 경우는 통제 변수나 또 다른 분석이 필요하다.)

 

  • 상관계수 = 0 : 변수간 연관성이 없다.
  • 상관계수 > 0 : 양의 상관관계 (하나의 변수가 증가하면 다른 변수도 증가)
  • 상관계수 < 0 : 음의 상관관계 (하나의 변수가 증가하면 다른 변수는 감소)

2. 파이썬(Python) 코드

파이썬에서는 Pandas 패키지를 이용해서 상관관계를 분석할 수 있으며 두 변수간 상관계수를 확인하기 위해서는 아래와 같이 실행한다.

import pandas as pd

# 기온데이터 로드
df = pd.read_csv('.\datasets\weather_2019_daejeon.csv', encoding='cp949')

# 기온, 풍속, 지면온도의 subset을 생성
df_subset = df[['기온(°C)', '풍속(m/s)', '지면온도(°C)']]

# 기온과 풍속간 상관계수
corr1 = df_subset['기온(°C)'].corr(df_subset['풍속(m/s)'])

# 기온과 지면온도간 상관계수
corr2 = df_subset['기온(°C)'].corr(df_subset['지면온도(°C)'])

print('기온과 풍속 간 상관계수 : {:.2f}'.format(corr1))
print('기온과 지면온도 간 상관계수 : {:.2f}'.format(corr2))

위 코드의 출력 값이다.

기온과 풍속 간 상관계수 : 0.77
기온과 지면온도 간 상관계수 : 0.90

전체 변수들의 상관계수를 확인할 수도 있다.

corr = df_subset.corr(method = 'pearson')

print(corr)

댓글