
➡️ 모수 상관계수 : 피어슨 상관계수
전제 : 데이터가 정규분포를 따르고 + 연속형의 숫자 데이터가 + 선형 관계 일때 사용
- 특징
- 두 연속형 변수 간의 선형 관계를 측정하는 지표 (수치형)
- -1에서 1 사이의 값을 가지며, 1은 완전한 양의 선형 관계, -1은 완전한 음의 선형 관계
- 0은 선형 관계가 없음을 의미
- 적용 예시
- 공부 시간과 시험 점수 간의 상관관계 분석
- 피어슨 상관계수 : 파이썬 코드
더보기
- 모듈: from scipy.stats import pearsonr
- 함수 : pearsonr (x, y)
- return: correlation, p-value ( p-value 값 필요없을때는 언더바 처리)
- 주의: 상관계수 구할때 결측값이 있으면 에러남 ( 결측시 제거 선행 필수)
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from scipy.stats import pearsonr
# 예시 데이터 생성
np.random.seed(0)
study_hours = np.random.rand(100) * 10
exam_scores = 3 * study_hours + np.random.randn(100) * 5
# 데이터프레임 생성
df = pd.DataFrame({'Study Hours': study_hours, 'Exam Scores': exam_scores})
# 피어슨 상관계수 계산
pearson_corr, _ = pearsonr(df['Study Hours'], df['Exam Scores'])
print(f"피어슨 상관계수: {pearson_corr}")
# 상관관계 히트맵 시각화
sns.heatmap(df.corr(), annot=True, cmap='coolwarm', vmin=-1, vmax=1)
plt.title('pearson coefficient heatmap')
plt.show()
➡️ 비 모수 상관계수 : 스피어만 & 켄달의 타우
전제 : 순서형 데이터 일때 사용 가능 (데이터의 분포를 몰라도됨)
- 특징
- 스피어만 상관계수는 두 변수의 순위 간의 상관 관계를 측정.
- 값은 -1에서 1 사이
- 켄달의 타우는 두 변수 간의 순위 일관성을 측정.
- 스피어만 상관계수
- 두 변수 순위 간의 일관성 = 순위가 일정하게 올라가냐 내려가냐
- 켄달의 타우 상관계수 보다 데이터 내 편차와 에러에 민감
- 켄달의 타우 상관계수
- 두변 순위간의 일치 or 불일치 쌍 측정 = 키↑ 몸무게↑ (일치쌍), 키 ↑ 몸무게 ↓(불일치)
- 비 모수 상관계수 : 파이썬 코드
더보기
- 모듈 : from scipy.stats import spearmanr, kendalltau
- 스피어만 함수 : spearmanr(x,y)
- 켄달의 타우 함수 : kendalltau(x,y)
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()
➡️ 상호정보 상관계수
두 변수가 범주형 이고 + 비선형&복잡한 관계를 탐지하고자 할 때
- 두 변수 간의 상호 정보를 측정 (정보량을 계산하기때문에 숫자든 아니든 상관없음)
- 범주형 데이터에 대해서도 적용 가능
- 비 모수 상관계수 : 파이썬 코드
더보기
- 모듈 :from sklearn.metrics import mutual_info_score
- 함수: mutual_info_score(X, Y)
import numpy as np
from sklearn.metrics import mutual_info_score
# 범주형 예제 데이터
X = np.array(['cat', 'dog', 'cat', 'cat', 'dog', 'dog', 'cat', 'dog', 'dog', 'cat'])
Y = np.array(['high', 'low', 'high', 'high', 'low', 'low', 'high', 'low', 'low', 'high'])
# 상호 정보량 계산
mi = mutual_info_score(X, Y)
print(f"Mutual Information (categorical): {mi}")

'통계,검정,머신러닝' 카테고리의 다른 글
머신러닝 | 로지스틱 회귀 분석/분류 분석 (+sklearn 파이썬 실습) (1) | 2025.01.14 |
---|---|
머신러닝 | 머신러닝 기초와 선형 회귀 분석 (+sklearn 파이썬 실습) (0) | 2025.01.13 |
통계 기초 | 회귀분석 ( 선형 회귀/다항 회귀/범주형 회귀 분석/스플라인 회귀) (0) | 2025.01.10 |
연속 확률 분포 | 정규분포/ 표준 정규 분포/ 긴 꼬리 분포/ 스튜던트T 분포/ 카이제곱 분포 (0) | 2025.01.10 |
가설 검정 | Z검정과 T검정 ( +2표본 T검정 / SCIPY 모듈 코드) (0) | 2025.01.10 |