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에서 자기상관을 계산하는 방법