-
Python 데이터분석 기초 43 - Python(공분산 / 상관계수)Python 데이터 분석 2022. 11. 10. 11:55
# 공분산 / 상관계수 import numpy as np import matplotlib.pyplot as plt # 공분산 예(공분산 구하기 np.cov() 함수) print(np.cov(np.arange(1, 6), np.arange(2, 7))) # 양의 관계 2.5 print(np.cov(np.arange(10, 60, 10), np.arange(20, 70, 10))) # 양의 관계 250 print(np.cov(np.arange(1, 6), (3,3,3,3,3))) # 0 print(np.cov(np.arange(1, 6), np.arange(6, 1, -1))) # 음의 관계 -2.5 # 공분산의 값이 양의 상관계수, 음의 상관계수인 것은 구했지만, 너무 값들이 다르기 때문에 그것을 1, 0, -1(표준화) 해야된다. print() x = [8, 3, 6, 6, 9, 4, 3, 9, 3, 4] print('x 평균 :', np.mean(x)) print('x 분산 :', np.var(x)) # y = [6, 2, 4, 6, 9, 5, 1, 8, 4, 5] y = [600, 200, 400, 600, 900, 500, 100, 800, 400, 500] print('y 평균 :', np.mean(y)) print('y 분산 :', np.var(y)) plt.scatter(x, y) plt.show() print('x, y 공분산 :', np.cov(x, y)[0, 1]) print('x, y 상관계수 :', np.corrcoef(x, y)[0, 1]) # x, y 상관계수 : 0.8663686463212853 from scipy import stats print(stats.pearsonr(x, y)) # 연속형일 경우 pearsonr 사용 print(stats.spearmanr(x, y)) # 순서가 있는 서열척도일 경우 spearmanr 사용 # 주의 : 공분산이나 상관계수는 선형 데이터인 경우에 활용. m = [-3, -2, -1, 0, 1, 2, 3] n = [9, 4, 1, 0, 1, 4, 9] plt.scatter(m, n) plt.show() # 비선형 데이터라 활용 불가. print('m, n 공분산 :', np.cov(m, n)[0, 1]) print('m, n 상관계수 :', np.corrcoef(m, n)[0, 1]) <console> [[2.5 2.5] [2.5 2.5]] [[250. 250.] [250. 250.]] [[2.5 0. ] [0. 0. ]] [[ 2.5 -2.5] [-2.5 2.5]] x 평균 : 5.5 x 분산 : 5.45 y 평균 : 500.0 y 분산 : 54000.0 x, y 공분산 : 522.2222222222222 x, y 상관계수 : 0.8663686463212853 (0.8663686463212854, 0.0011836205396685649) SpearmanrResult(correlation=0.9000703207408192, pvalue=0.00038610220712161346) m, n 공분산 : 0.0 m, n 상관계수 : 0.0
공분산의 값이 양의 상관계수, 음의 상관계수인 것은 구했지만, 너무 값들이 다르기 때문에 그것을 1, 0, -1(표준화) 해야된다. 밑의 시각화를 보면 공분산의 값은 다르지만 시각화 그래프는 같은 성향을 보이기 때문에 표준화를 하면 값은 똑같이 나온다.
x와 y의 관계 시각화 x와 y의 관계 시각화 m, n 의 관계 시각화 위처럼 비선형 데이터일때는 공분산과 상관계수는 활용 불가능하다.
m, n 공분산 : 0.0
m, n 상관계수 : 0.0'Python 데이터 분석' 카테고리의 다른 글
Python 데이터분석 기초 45 - 관광정보 자료로 상관관계 분석(예제) (0) 2022.11.10 Python 데이터분석 기초 44 - 공분산 / 상관계수 예제 (0) 2022.11.10 Python 데이터분석 기초 42 - 머신 런닝이란? (0) 2022.11.10 Python 데이터분석 기초 41 - 이항검정(양측검정, 단측검정) (0) 2022.11.10 Python 데이터분석 기초 40 - 추론통계 분석 중 비율(value)검정 (0) 2022.11.10