Python에서 잔차 플롯을 만드는 방법


잔차 도표는 회귀 모델 의 잔차에 대한 적합치를 표시하는 도표 유형입니다.

이러한 유형의 플롯은 선형 회귀 모델이 주어진 데이터 세트에 적합한지 여부를 평가하고 잔차의 이분산성 을 확인하는 데 자주 사용됩니다.

이 튜토리얼에서는 Python에서 선형 회귀 모델에 대한 잔차 플롯을 만드는 방법을 설명합니다.

예: Python의 잔차 플롯

이 예에서는 농구 선수 10명의 속성을 설명하는 데이터 세트를 사용합니다.

 import numpy as np
import pandas as pd

#create dataset
df = pd.DataFrame({'rating': [90, 85, 82, 88, 94, 90, 76, 75, 87, 86],
                   'points': [25, 20, 14, 16, 27, 20, 12, 15, 14, 19],
                   'assists': [5, 7, 7, 8, 5, 7, 6, 9, 9, 5],
                   'rebounds': [11, 8, 10, 6, 6, 9, 6, 10, 10, 7]})

#view dataset
df

	rating points assists rebounds
0 90 25 5 11
1 85 20 7 8
2 82 14 7 10
3 88 16 8 6
4 94 27 5 6
5 90 20 7 9
6 76 12 6 6
7 75 15 9 10
8 87 14 9 10
9 86 19 5 7

단순 선형 회귀를 위한 잔차 도표

점을 예측 변수로 사용하고 등급을 응답 변수로 사용하여 간단한 선형 회귀 모델을 적합하다고 가정합니다.

 #import necessary libraries
import matplotlib.pyplot as plt
import statsmodels.api as sm
from statsmodels.formula.api import ols

#fit simple linear regression model
model = ols('rating ~ points', data=df). fit ()

#view model summary
print(model.summary())

statsmodels 라이브러리의 plot_regress_exog() 함수를 사용하여 잔차 또는 적합 플롯을 생성할 수 있습니다.

 #define figure size
fig = plt.figure(figsize=(12,8))

#produce regression plots
fig = sm.graphics.plot_regress_exog(model, ' points ', fig=fig)

Python의 잔차 플롯

4개의 플롯이 생성됩니다. 오른쪽 상단 모서리에 있는 것은 잔차 그림과 조정된 그림입니다. 이 도표의 x축은 예측 변수 포인트 의 실제 값을 표시하고 y축은 해당 값의 잔차를 표시합니다.

잔차가 0 주위에 무작위로 흩어져 있는 것처럼 보이므로 이는 이분산성이 예측 변수에 문제가 되지 않음을 나타냅니다.

다중 선형 회귀에 대한 잔차 도표

대신 어시스트리바운드를 예측 변수로 사용하고 등급을 응답 변수로 사용하여 다중 선형 회귀 모델을 적합하다고 가정합니다.

 #fit multiple linear regression model
model = ols('rating ~ assists + rebounds', data=df). fit ()

#view model summary
print(model.summary())

다시 한 번, statsmodels 라이브러리의 plot_regress_exog() 함수를 사용하여 각 개별 예측 변수에 대한 잔차 대 예측 변수 플롯을 만들 수 있습니다.

예를 들어 예측 변수 지원 에 대한 잔차/예측 변수 도표는 다음과 같습니다.

 #create residual vs. predictor plot for 'assists'
fig = plt.figure(figsize=(12,8))
fig = sm.graphics.plot_regress_exog(model, ' assists ', fig=fig)

잔여 또는 조정된 토지

그리고 예측 변수 바운스 에 대한 잔차/예측 변수 도표는 다음과 같습니다.

 #create residual vs. predictor plot for 'assists'
fig = plt.figure(figsize=(12,8))
fig = sm.graphics.plot_regress_exog(model, ' rebounds ', fig=fig)

Python의 잔차 또는 조정 플롯

두 도표 모두에서 잔차가 0 주위에 무작위로 분산되어 있는 것으로 나타납니다. 이는 이분산성이 모델의 예측 변수에 문제가 되지 않음을 나타냅니다.

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다