본문 바로가기
[업무 지식]/Statistics

[선형관계확인] 다양한 방법

by 에디터 윤슬 2024. 11. 12.

1. 산점도(Scatter Plot)

import matplotlib.pyplot as plt
import seaborn as sns

# 산점도 그리기
sns.scatterplot(x=df['Study Hours'], y=df['Exam Scores'], data=df)
plt.title('Scatter Plot of Study Hours vs Exam Scores')
plt.show()

산점도를 통해 두 변수 간의 관계가 직선에 가까운지 확인합니다. 만약 점들이 대체로 직선에 가까운 형태로 분포한다면, 이는 선형 관계를 의미

2. 회귀선 추가

# 산점도와 회귀선 그리기
sns.regplot(x=df['Study Hours'], y=df['Exam Scores'], data=df, ci=None, line_kws={"color": "red"})
plt.title('Regression Plot of Study Hours vs Exam Scores')
plt.show()

회귀선을 추가하면 데이터가 얼마나 잘 직선에 맞는지 시각적으로 확인할 수 있습니다. 데이터가 회귀선에 가까이 있을수록 선형성이 높다고 볼 수 있습니다

3. 잔차 분석(Residual Plot)

  • 잔차(residual)는 실제 값과 예측 값의 차이를 의미합니다. 잔차 플롯은 회귀 모델이 데이터를 얼마나 잘 설명하는지 확인하는 데 유용합니다. 잔차 플롯에서 잔차가 무작위로 분포되어 있다면 선형 모델이 적절하다고 볼 수 있습니다.
from sklearn.linear_model import LinearRegression

# 선형 회귀 모델 학습
model = LinearRegression()
model.fit(df[['Study Hours']], df['Exam Scores'])

# 예측값과 잔차 계산
y_pred = model.predict(df[['Study Hours']])
residuals = df['Exam Scores'] - y_pred

# 잔차 플롯 그리기
sns.residplot(x=y_pred, y=residuals, lowess=True, color="g")
plt.title('Residual Plot')
plt.xlabel('Fitted values')
plt.ylabel('Residuals')
plt.show()

잔차 플롯에서 잔차들이 무작위로 분포되어 있으면 선형 모델이 적합하다는 것을 의미합니다. 만약 패턴이 보인다면, 이는 비선형 관계일 가능성이 높습니다

4. 피어슨 상관계수

from scipy.stats import pearsonr

# 피어슨 상관계수 계산
pearson_corr, _ = pearsonr(df['Study Hours'], df['Exam Scores'])
print(f"피어슨 상관계수: {pearson_corr}")

피어슨 상관계수가 1에 가까울수록 두 변수 간의 양의 선형 관계가 강하다는 것을 의미합니다. 
반대로 -1에 가까울수록 음의 선형 관계가 강하다는 것을 의미합니다. 
상관계수가 0에 가까울수록 선형 관계가 없음을 나타냅니다.

 

5. Q-Q 플롯(Q-Q Plot)

from sklearn.linear_model import LinearRegression

# 선형 회귀 모델 학습
model = LinearRegression()
model.fit(df[['Study Hours']], df['Exam Scores'])

# 예측값과 잔차 계산
y_pred = model.predict(df[['Study Hours']])
residuals = df['Exam Scores'] - y_pred
import scipy.stats as stats
import matplotlib.pyplot as plt

# Q-Q 플롯 그리기(잔차의 정규성 확인)
stats.probplot(residuals, dist="norm", plot=plt)
plt.title('Q-Q Plot')
plt.show()

Q-Q 플롯에서 점들이 대각선에 가깝게 분포하면 데이터는 정규성을 따르며, 이는 선형 회귀 모델이 적합함을 시사합니다. 
점들이 대각선을 벗어나면 비정규성을 나타내며, 이는 비선형 모델을 고려해야 할 수 있음을 의미합니다.