본문 바로가기
Programming/Python

[Python] 상관분석 (산점도, 상관계수, 검정)

by 코딩하는 금융인 2024. 1. 5.

안녕하세요.

오늘은 기본적인 데이터 분석 중 하나인 상관분석을 파이썬으로 하는 방법에 대해 알아보겠습니다.

 

 파이썬 상관분석(Correlation Analysis)

▣ 상관분석이란?

두 연속 변수가 서로 상관(관련)이 있는지 검정하는 통계분석 기법

 

 - 회귀분석(원인→결과)과는 다르며, 상관계수의 값은 -1부터 1까지의 값을 가고 0인 경우에는 선형의 상관관계가 없다고 보면 됨

 - 상관분석의 경우, 빅데이터분석기사 실기 등 데이터 시험에서 자주 출제되는 유형

 

※ 과거 R로 포스팅한 글이 있으니, 관심 있으신 분들은 아래 글을 참조하시기 바랍니다.

2021.06.27 - [Programming/R] - [R] 통계 분석 및 가설 검정 (t 검정, 상관분석)

 

: 예시 데이터 iris

import seaborn as sns
import matplotlib.pyplot as plt

# iris 데이터 load
iris = sns.load_dataset("iris")
iris.describe()

iris 요약

 

1) 상관계수 시각화

# 상관관계 구하기
cor_matrix = iris.corr()

# heatmap 시각화
sns.heatmap(cor_matrix, cmap = 'coolwarm', annot = True, fmt =".2f")
plt.show()

 

 - petal_length와 petal_width가 강한 양의 상관관계를 보이고 있고, 전반적으로 petal_length 지표가 다른 지표들과 유의미한 상관관계를 가짐

iris heatmap

 

2) 상관분석 검정

 - 파이썬에는 다양한 상관계수 검정함수가 있지만, 가장 유명한 scipy 패키지의 stats.pearson()을 활용

 - 첫 번째 인수에는 상관계수 그리고 두 번째 인수에는 p-value 값이 결과로 출력

 - 통상적으로, 많은 변수들(columns)이 있는 데이터프레임 특성상 특정 변수와 나머지 변수들의 상관계수를 구해야 하는 상황이 존재하기에 for문을 통해 petal_length와 그 외 변수들의 상관계수 검정을 실습

import scipy.stats as stats

Y = iris.petal_length
for i in iris.columns[:4]:
  print(i)
  X = iris[i].values
  print('Correlation statistics: {:.2f}'.format(stats.pearsonr(X,Y)[0]))
  print('P-value: {:.2f}'.format(stats.pearsonr(X,Y)[1]))
  # 95% 신뢰도
  if stats.pearsonr(X,Y)[1] > 0.05:
    print('there is no Correaltion')
  else:
    print('there is a Correaltion')

 

: 결과 확인하기

[sepal_length]
Correlation statistics: 0.87
P-value: 0.00
there is a Correaltion

[sepal_width]
Correlation statistics: -0.43
P-value: 0.00
there is a Correaltion

[petal_length]
Correlation statistics: 1.00
P-value: 0.00
there is a Correaltion

[petal_width]
Correlation statistics: 0.96
P-value: 0.00
there is a Correaltion

 

 

반응형

댓글