데이터사이언스
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())