비모수 상관계수

김요한·2024년 8월 5일

통계학

목록 보기
23/30

비모수 상관계수

  • 데이터가 정규분포를 따르지 않을 때 사용하는 상관계수

  • 가운데 그래프가 스피어만 상관계수
    • 초록색 점들로 나타내었으며, x와 y의 순위 관계를 보여줌.
    • 스피어만 상관계수는 두 변수의 순위 간의 상관관계를 측정함
    • 값은 -1에서 1 사이로 해석됨
  • 세 번째 그래프가 켄달의 타우 비선형 상관계수
    • 빨간색 점들로 나타내었으며, x와 y의 비선형 관계를 보여줌.
    • 켄달의 타우는 두 변수 간 순위 일관성을 측정, 비선형 관계를 탐지하는데 유용함.

비모수 상관계수

  • 데이터가 정규분포를 따르지 않거나 변수들이 순서형 데이터일 떄 사용하는 상관계수.
  • 데이터의 분포에 대한 가정 없이 두 변수 간의 상관관계를 측정할 때 사용
  • 대표적으로 스피어만 상관계수와 켄달의 타우 상관계수가 있음.

스피어만 상관계수

  • 두 변수 순위 간의 일관성을 측정.
  • 켄달의 타우 상관계수 보다 데이터 내 편차와 에러에 민감

켄달의 타우 상관계수

  • 순위 간의 일치 쌍 불일치 쌍의 비율을 바탕으로 계산
  • ex) 사람의 키,몸무게에 대해 상관계수를 알고자 할 때 키가 크고 몸무게도 더 나가면 일치 쌍에 해당, 키가 크지만 몸무게가 더 적으면 불일치 쌍에 해당 이들의 개수 비율로 상관계수 결정

비모수 상관계수 언제 사용하나

  • 데이터의 분포에 대한 가정을 하지 못할 때
  • 순서형 데이터에서도 사용하고 싶을 때
from scipy.stats import spearmanr, kendalltau

# 예시 데이터 생성
np.random.seed(0)
customer_satisfaction = np.random.rand(100)
repurchase_intent = 3 * customer_satisfaction + np.random.randn(100) * 0.5

# 데이터프레임 생성
df = pd.DataFrame({'Customer Satisfaction': customer_satisfaction, 
'Repurchase Intent': repurchase_intent})

# 스피어만 상관계수 계산
spearman_corr, _ = spearmanr(df['Customer Satisfaction'], 
df['Repurchase Intent'])
print(f"스피어만 상관계수: {spearman_corr}")

# 켄달의 타우 상관계수 계산
kendall_corr, _ = kendalltau(df['Customer Satisfaction'], 
df['Repurchase Intent'])
print(f"켄달의 타우 상관계수: {kendall_corr}")

# 상관관계 히트맵 시각화
sns.heatmap(df.corr(method='spearman'), annot=True, cmap='coolwarm', 
vmin=-1,vmax=1) 
plt.title('spearman coefficient heatmap')
plt.show()

0개의 댓글