250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 선형회귀
- 한줄for문
- Set
- SQLD
- 데이터전처리
- Leetcode
- Join
- f-string
- 시각화
- 내일배움캠프
- 아티클스터디
- python
- 이중for문
- 다중공선성
- 내일배움일지
- 프로그래머스
- 태블로
- 내배캠_학습기록
- map
- 반복문
- Til
- AB테스트
- ★
- 통계학
- 리스트
- Max
- SQL
- 가설검정
- DATE_SUB
- 데이터시각화
Archives
- Today
- Total
노력에는 지름길이 없으니까요
5.1 피어슨 상관계수 본문
728x90
상관계수를 상세히 공부하는 파트다.
가장 대표적으로 많이 사용하는 상관계수!
데이터가 선형적 관계가 존재하며, 데이터가 정규분포로 존재한다는 전제가 충족되어야 한다.
- 가장 왼쪽 그래프가 피어슨 상관계수 그래프!
- 첫 번째 그래프는 파란색 점들로 나타내었으며, X와 Y의 선형 관계를 보여줍니다.
- 그래프에서 점들이 직선적으로 퍼져 있으며, 상관계수는 0.99로 매우 강한 양의 선형 관계를 나타냅니다.
피어슨 상관계수
- 두 연속형 변수 간의 선형 관계를 측정하는 지표
- -1에서 1 사이의 값을 가지며
- 1은 완전한 양의 선형 관계
- -1은 완전한 음의 선형 관계
- 0은 선형 관계가 없음을 의미
순서(등급)형 데이터에 대해서는 연속형 변수라고 할 수 없다.
선형적인 관계가 예상 될 때
- 공부 시간과 시험 점수 간의 상관관계 분석
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()
# 피어슨 상관계수 계산
pearson_corr, _ = pearsonr(df['Study Hours'], df['Exam Scores'])
print(f"피어슨 상관계수: {pearson_corr}")
# 상관관계 히트맵 시각화
sns.heatmap(df.corr(),
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('pearson coefficient heatmap')
plt.show()
프로젝트 발표에서도 히트맵으로 상관계수 분석을 실시했었고, 상관계수뿐만 아니라 빈도분석에서도 사용될 수 있다고 한다. 히트맵 그리는 법은 잘 알아두는 게 좋을 듯.
팀프로젝트에서 사용했던 데이터에 있던 컬럼들의 상관계수를 알아보았다.
# 상관행렬 히트맵 시각화
# 대각선을 기준으로 대칭인 행렬이므로, 대각선을 기준으로 한 쪽만 표시
plt.figure(figsize=(15, 10))
sns.heatmap(corr_matrix, annot=True, cmap='crest', fmt='.2f', linewidth=.5, square = True)
plt.title('Correlation Matrix of Continuous Variables')
plt.show()
상관계수가 높은 변수가 다수 존재함을 알 수 있고,
PCA로 컬럼을 줄이는 방식을 진행해야 하며 우리 팀 프로젝트에서는 이미 선택한 방식이다!
728x90
반응형
'통계학' 카테고리의 다른 글
5.3 상호정보 상관계수 (0) | 2024.08.05 |
---|---|
5.2 비모수 상관계수 (0) | 2024.08.05 |
4.4 다항회귀, 스플라인 회귀 (0) | 2024.08.05 |
4.3 범주형 변수 (0) | 2024.08.05 |
4.2 다중선형회귀 (0) | 2024.08.05 |