Python에서 상관관계를 계산하는 방법


두 변수 사이의 관계를 정량화하는 한 가지 방법은 두 변수 사이의 선형 연관성을 측정하는 Pearson 상관 계수를 사용하는 것입니다 . 항상 -1과 1 사이의 값을 취합니다. 여기서:

  • -1은 두 변수 사이의 완벽한 음의 선형 상관 관계를 나타냅니다.
  • 0은 두 변수 사이에 선형 상관관계가 없음을 나타냅니다.
  • 1은 두 변수 사이의 완벽한 양의 선형 상관 관계를 나타냅니다.

상관 계수가 0에서 멀어질수록 두 변수 간의 관계가 더 강해집니다.

이 튜토리얼에서는 Python에서 변수 간의 상관 관계를 계산하는 방법을 설명합니다.

Python에서 상관관계를 계산하는 방법

Python에서 두 변수 간의 상관 관계를 계산하려면 Numpy corrcoef() 함수를 사용할 수 있습니다.

 import numpy as np

np.random.seed(100)

#create array of 50 random integers between 0 and 10
var1 = np.random.randint(0, 10, 50)

#create a positively correlated array with some random noise
var2 = var1 + np.random.normal(0, 10, 50)

#calculate the correlation between the two arrays
np.corrcoef(var1, var2)

[[ 1. 0.335]
[ 0.335 1. ]]

두 변수 사이의 상관계수는 0.335 로 양의 상관관계를 보이는 것을 알 수 있다.

기본적으로 이 함수는 상관 계수의 행렬을 생성합니다. 두 변수 사이의 상관 계수만 반환하려면 다음 구문을 사용할 수 있습니다.

 np.corrcoef(var1, var2)[0,1]

0.335

이 상관 관계가 통계적으로 유의한지 테스트하기 위해 Pearson 상관 계수와 양측 p-값을 반환하는 Scipy pearsonr() 함수를 사용하여 Pearson 상관 계수와 관련된 p-값을 계산할 수 있습니다.

 from scipy.stats.stats import pearsonr

pearsonr(var1, var2)

(0.335, 0.017398)

상관 계수는 0.335 이고 양측 p-값은 0.017 입니다. 이 p-값은 0.05보다 작으므로 두 변수 사이에 통계적으로 유의한 상관관계가 있다고 결론을 내릴 수 있습니다.

Pandas DataFrame에서 여러 변수 간의 상관 관계를 계산하려면 .corr() 함수를 사용하면 됩니다.

 import pandas as pd

data = pd.DataFrame(np.random.randint(0, 10, size=(5, 3)), columns=['A', 'B', 'C'])
data

  ABC
0 8 0 9
1 4 0 7
2 9 6 8
3 1 8 1
4 8 0 8

#calculate correlation coefficients for all pairwise combinations
data.corr()

          ABC
A 1.000000 -0.775567 -0.493769
B -0.775567 1.000000 0.000000
C -0.493769 0.000000 1.000000

DataFrame에 있는 두 특정 변수 간의 상관관계만 계산하려는 경우 변수를 지정할 수 있습니다.

 data['A'].corr(data['B'])

-0.775567

추가 리소스

다음 튜토리얼에서는 Python에서 다른 일반적인 작업을 수행하는 방법을 설명합니다.

Python에서 상관 행렬을 만드는 방법
Python에서 Spearman 순위 상관 관계를 계산하는 방법
Python에서 자기상관을 계산하는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다