일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 태블로
- map
- Set
- 내배캠_학습기록
- 다중공선성
- 데이터전처리
- 아티클스터디
- 내일배움일지
- AB테스트
- Join
- Leetcode
- 반복문
- 이중for문
- Til
- 통계학
- Max
- 선형회귀
- DATE_SUB
- 프로그래머스
- 가설검정
- ★
- f-string
- 내일배움캠프
- SQL
- 시각화
- 데이터시각화
- SQLD
- 한줄for문
- python
- 리스트
- Today
- Total
노력에는 지름길이 없으니까요
5.2 비모수 상관계수 본문
모수 상관계수, 비모수 상관계수로 나뉘어지는데,
대표적인 모수 상관계수가 피어슨 상관계수!
그리고 비모수 상관계수의 대표로는 스피어만, 켄달의 타우 상관계수가 있다.
모수통계방법 : 어떤 분포를 알며 모수값(예를 들면 평균이나 분산) 또한 안다는 가정하에 분석하는 방법
비모수통계방법: 모집단의 모수성을 가정을 하지 않고 하는 방법
정보가 없거나 모호할 경우에는 비모수 통계방법이 더 정확도가 높다.
- 두 번째 그래프가 스피어만 상관계수 그림!
- 초록색 점들로 나타내었으며, X와 Y의 순위 관계를 보여줍니다.
- 스피어만 상관계수는 두 변수의 순위 간의 상관 관계를 측정합니다.
- 값은 -1에서 1 사이로 해석됩니다.
- 세 번째 그래프가 켄달의 타우 비선형 상관계수
- 빨간색 점들로 나타내었으며, X와 Y의 비선형 관계를 보여줍니다.
- 켄달의 타우는 두 변수 간의 순위 일관성을 측정합니다. 비선형 관계를 탐지하는 데 유용합니다.
☑️ 비모수 상관계수
- 데이터가 정규분포를 따르지 않거나 변수들이 순서형 데이터일 때 사용하는 상관계수
- 데이터의 분포에 대한 가정 없이 두 변수 간의 상관관계를 측정할 때 사용
- 대표적으로 스피어만 상관계수와 켄달의 타우 상관계수가 있음
가. 스피어만 상관계수
- 두 변수의 순위 간의 일관성을 측정 -> 순위가 같은 방향으로 가고 있냐 아니냐
- 켄달의 타우 상관계수 보다 데이터 내 편차와 에러에 민감
나. 켄달의 타우 상관계수
- 순위 간의 일치 쌍 및 불일치 쌍의 비율을 바탕으로 계산
- ex) 예를들어 사람의 키와 몸무게에 대해 상관계수를 알고자 할 때 키가 크고 몸무게도 더 나가면 일치 쌍에 해당, 키가 크지만 몸무게가 더 적으면 불일치 쌍에 해당 이들의 개수 비율로 상관계수를 결정
☑️ 데이터의 분포에 대한 가정을 하지 못할 때
☑️ 순서형 데이터에서도 사용하고 싶을 때
스피어만과 켄달은 각각 어느 때에 쓰는 게 좋은지?
튜터님께 여쭤봤는데 좋은 답변을 주셨다.
결론: 데이터에 동점이 많거나 표본의 수가 적을 때는 켄달의 타우가 더 적절
이유: 켄달의 타우가 데이터 간의 순서 일치 여부를 더 정확히 반영하는데 반해, 스피어만은 동점이 발생하면 평균 순위를 사용하여 처리. 이는 동점이 많은 경우 정확한 순서 일치 여부를 반영하지 못함)
실무에서 켄달은 잘 안씀... 피어슨, 스피어만을 주로 쓴다고 알아두기.
회사에 따라 다르겠지만 모수가 크면 대부분 정규분포를 따른다고 가정한다고 배웠음
-> 중복 데이터가 많을 확률이 낮으니 스피어만을 써도 문제가 없음
게다가 데이터 크기가 클 수록 '모든 쌍을 구하는 켄달'이 계산량이 많기 때문에, 스피어만이 더 용이함
(표본의 크기가 적을 때 켄달을 주로 사용)
스피어만 -> 평균순위 사용
31242 -> 4 1 2.5 5 2.5
켄달 -> 모든 조합을 다 구함.
(1,3) (2,1) ... 모든 쌍을 구한 다음에 방향이 같은지
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}")
> 스피어만 상관계수: 0.8663546354635462
켄달의 타우 상관계수: 0.6690909090909092
이 경우 0.2 정도로 차이가 크게 나왔지만, 대부분의 데이터셋에서는 상관계수가 비슷하게 나온다고 함... 한 번 확인해봐야겠다
# 상관관계 히트맵 시각화
sns.heatmap(df.corr(method='spearman'),
annot=True, #represent the cell values with text
linewidth=.5, #Add lines between cells
cmap='crest',
vmin=-1, vmax=1 #Set the colormap norm (data values corresponding to minimum and maximum points):
)
plt.title('spearman coefficient heatmap')
plt.show()
'통계학' 카테고리의 다른 글
가설검정의 주의점 - 6.1 재현 가능성 (0) | 2024.08.06 |
---|---|
5.3 상호정보 상관계수 (0) | 2024.08.05 |
5.1 피어슨 상관계수 (0) | 2024.08.05 |
4.4 다항회귀, 스플라인 회귀 (0) | 2024.08.05 |
4.3 범주형 변수 (0) | 2024.08.05 |