SW/주가 예측

시계열 데이터 : 상관 계수란? : 개념, 분석

얇은생각 2019. 6. 30. 07:30
반응형

시계열 데이터 : 상관 계수란? : 개념, 분석



상관은 2개 변수간에 어떤 선형적인 관계가 있는지를 분석하는 방법입니다. 2개 변수의 공분산을 정규화한 것으로, 변수 간의 상관관계의 정도를 상관계수로 나타냅니다. 


상관관계는 다음과 같이 정의할 수 있습니다. 


공분산과 달리 상관관계 값은 방향성과 함께 상관관계의 정도를 나타냅니다. 값이 1에 가까울수록 양의 강한 상관관계라 할 수 있습니다. -1에 가까울수록 음의 강한 상관관계를 의미합니다.


0인 경우에는 선형적으로 상관관계가 없다는 것입니다.


상관관계를 나타내는 상관 계수는 어떤 계수들이 있을까요?


대표적으로는 Kendal, Spearman, Pearson 등이 있습니다. 가장 많이 사용하는 계수는 바로 Pearson 상관 계수입니다. pandas 라이브러리를 사용하면 쉽게 상관 계수를 구할 수 있습니다. 


아래 예제를 통해, 만도와 모비스의 상관 계수를 알아보겠습니다.



import pandas as pd
import pandas_datareader.data as web
import datetime
import matplotlib.pyplot as plt
from pandas.plotting import scatter_matrix


# file_name 다운로드한 주가 데이터를 저장할 파일 이름
# company_code 종목 코드
# year1/month1/date1 데이터를 다운로드할 시작일
# year2/month2/date2 데이터를 다운로드할 마감일
def download_stock_data(file_name, company_code, year1, month1, date1, year2, month2, date2):
start = datetime.datetime(year1, month1, date1)
end = datetime.datetime(year2, month2, date2)
df = web.DataReader("%s.KS" % (company_code), "yahoo", start, end)
df.to_pickle(file_name)
return df


def load_stock_data(file_name):
df = pd.read_pickle(file_name)
return df


download_stock_data('mobis.data', '012330', 2018, 1, 1, 2018, 12, 31)
df_mobis = load_stock_data('mobis.data')

download_stock_data('mando.data', '204320', 2018, 1, 1, 2018, 12, 31)
df_mando = load_stock_data('mando.data')

print( df_mobis['Close'].corr(df_mando['Close']))
# 0.8574947122278256



위 예제를 통해 모비스와 만도의 상관계수는 0.85인 것을 알 수 있습니다. 이것은 같은 방향성을 가지고 있으며, 계수값이 0.8보다 크므로 뚜렷한 양적 선형관계가 있다고 할 수 있습니다. 일반적으로 상관 계수의 절대값 0.7보다 크면 강하고, 0.3보다 작으면 약한 것으로 해석합니다.

반응형