데이터사이언스

191126 [Python 기초통계] 상관관계 상관계수

프로젝트미냉이 2019. 11. 26. 10:14

상관관계(correlation)

두 대상이 서로 연관성이 있다고 추척되는 관계


상관계수(correlation coefficient)

피어슨 상관계수 : 가장 대표적으로 사용되는 상관계수

  • 공분산을 각 확률변수의 표준편차의 곱으로 나눠준 값
  • -1 ~ 1사이의 값을 가짐
  • 양수일 경우 양의 상관관계 
  • 음수일 경우 음의 상관관계 (부적상관)
  • 예 ) 성적 & 자존감, 온라인게임 & 폭력성
  • 상관계수는 인과성을 보장하지 않음에 유의 (인과성은 회귀분석으로 시행한다)

 

예시1 ) 두 자료의 상관계수 출력

삼성전자 주가와 KOSPI지수의 상관관계 출력하기

- 파일을 open (삼성전자와 KOSPI 각각)

-  json 파일을 로드 (dictionary 상태) -> dataframe으로 변경 ->그 중에 종가(Close)만 출력 -> 시리즈형 데이터

 

- 넘파이의 함수인 corrcoef를 이용해 두 자료간의 상관계수 출력

 

import numpy as np
import pandas as pd

file_KOSPI = open("C:/python_DA/data/KOSPI.json")
series_KOSPI = pd.DataFrame(json.load(file_KOSPI))["Close"]

file_SE = open("C:/python_DA/data/SE.json")
series_SE = pd.DataFrame(json.load(file_SE))["Close"]

np.corrcoef(series_KOSPI,series_SE)

※ 주의

df형태에서 numpy의 corrcoef함수는 사용이 불가함. nparray와 유사한 series형태로만 분석이 가능하므로 다음과 같이 처리하여 분석해야한다

df_KOSPI = pd.DataFrame(series_KOSPI)
df_SE = pd.DataFrame(series_SE)

np.corrcoef(df_KOSPI,df_SE)  # error
np.corrcoef(df_KOSPI["Close"],df_SE["Close"])

 

 

예시 2) Dataframe의 상관계수

 

1) 여러 Series를 하나의 DataFrame으로 묶기

 

import numpy as np
import pandas as pd

# 자료 3개 불러오기
file_KOSPI = open("C:/python_DA/data/KOSPI.json")
series_KOSPI = pd.DataFrame(json.load(file_KOSPI))["Close"]

file_SE = open("C:/python_DA/data/SE.json")
series_SE = pd.DataFrame(json.load(file_SE))["Close"]

file_SE = open("C:/python_DA/data/부산산업.json")
series_Busan = pd.DataFrame(json.load(file_SE))["Close"]


# Dictionary를 활용한다

data = {
    "KOSPI":series_KOSPI, 
    "SE":series_SE, 
    "Busan": series_Busan    
}

df = pd.DataFrame(data)
df.head()

 

 

2) dataframe명.corr() 사용하기 

'''pandas(dataframe)의 상관계수 확인하기'''
display(df.corr())
display(df.cov())