-
상관분석 (Correlation) in pythondata-science-summary/summary 2020. 9. 16. 23:01반응형
<엔지니어는 구현을 못하면 모르는것이다>
상관분석 (Correlation)
두 변수간에 어떤 선형적 관계를 가지고 있는지 분석하는 방법
관계정도를 나타낸 것을 상관계수라고 함
공분산 역시 관계를 나타내지만 공분산에서 두 변수 각각의 표준편차로 나눠주어 단위에 따른 영향을 제거하고 값을 -1 ~ 1 사이로 정해줌
상관계수가 절대값 1에 가까울 수록 강한 선형 관계를 나타냄
pearson 상관계수를 제곱하면 분산에서 공유하는 비율
만약 X, Y의 상관계수가 0.4 이면 그 제곱은 0.16 으로 x의 분산중 16% 를 y와 공유 또는 y로 설명됨, 선형적관계만 설명가능
상관계수에는 일반적으로 사용하는 pearson과 서열척도에 사용하는 spearnman, kendal 방식이 있음
import numpy as np from scipy import stats x = [-2.1, -1, 4.3] y = [3, 1.1, 0.12] # 공분산 print(np.cov(x,y)) # 공분산에 표준편차 나눠줌 # ddof = 1 은 n-1로 나눈 경우 => 자유도 print(np.cov(x,y)[0,1]/ (np.std(x, ddof=1)* np.std(y, ddof=1))) print(np.corrcoef(x,y)[0,1]) #pearson 상관계수 print(stats.pearsonr(x,y)) # 상관계수 & p_value # spearman # 서열 척도를 사용한 변수일떄 사용 x = [1,2,3,4,5] y = [5,6,7,8,7] print(stats.spearmanr(x,y)) # 상관계수 & p_value print(stats.spearmanr(x,y).correlation) # kendall # 비선형적관계이거나 서열변수일때 사용 print(stats.kendalltau(x,y)) # 상관계수 & p_value # pandas 로 위 3개 가능 import pandas as pd df = pd.DataFrame([(.2, .3), (.0, .6), (.6, .0), (.2, .1)], columns=['dogs', 'cats']) print(df.corr(method='pearson')) print(df.corr(method='spearman')) print(df.corr(method='kendall'))
반응형'data-science-summary > summary' 카테고리의 다른 글
결정 계수 in python (0) 2020.09.17 선형회귀(LinearRegression) in python (0) 2020.09.17 Data를 train 과 test set으로 원하는 비율만큼 분리하는법 (0) 2020.09.16 PCA in python (0) 2020.09.16 Robust scaling 하는법 in python (0) 2020.09.16