모형 적합 시각화

Python에서 statsmodels로 살펴보는 회귀 소개

Maarten Van den Broeck

Content Developer at DataCamp

좋은 적합의 잔차 특성

  • 잔차는 정규분포를 따름
  • 잔차의 평균은 0임
Python에서 statsmodels로 살펴보는 회귀 소개

다시 보는 빙어와 농어

빙어: "좋은" 모형

mdl_bream = ols("mass_g ~ length_cm", data=bream).fit()

이전에 본 빙어 질량 대 길이 산점도와 추세선.

농어: "나쁜" 모형

mdl_perch = ols("mass_g ~ length_cm", data=perch).fit()

이전에 본 농어 질량 대 길이 산점도와 추세선.

Python에서 statsmodels로 살펴보는 회귀 소개

잔차 vs. 적합값

빙어

LOWESS 추세선을 포함한 빙어 모형의 잔차 대 적합값 산점도. 추세선은 x축 근처에 머뭅니다.

농어

LOWESS 추세선을 포함한 농어 모형의 잔차 대 적합값 산점도. 추세선이 V자 모양을 이룸.

Python에서 statsmodels로 살펴보는 회귀 소개

Q-Q 플롯

빙어

빙어 모형의 표준화 잔차 대 이론적 분위수 Q-Q 플롯. 두 개의 이상치를 제외하면 점들이 등치선 근처를 잘 따름.

농어

농어 모형의 표준화 잔차 대 이론적 분위수 Q-Q 플롯. 특히 우측에서 점들이 등치선을 잘 따르지 않음.

Python에서 statsmodels로 살펴보는 회귀 소개

스케일-로케이션 플롯

빙어

LOWESS 추세선을 포함한 빙어 모형의 제곱근 표준화 잔차 대 적합값 산점도. 적합값이 커질수록 추세선이 약간 상승함.

농어

LOWESS 추세선을 포함한 농어 모형의 제곱근 표준화 잔차 대 적합값 산점도. 적합값이 증가함에 따라 추세선이 여러 번 위아래로 변동함.

Python에서 statsmodels로 살펴보는 회귀 소개

residplot()

sns.residplot(x="length_cm", y="mass_g", data=bream, lowess=True)
plt.xlabel("Fitted values")
plt.ylabel("Residuals")

LOWESS 추세선을 포함한 빙어 모형의 잔차 대 적합값 산점도. 추세선은 x축 근처에 머뭅니다.

Python에서 statsmodels로 살펴보는 회귀 소개

qqplot()

from statsmodels.api import qqplot
qqplot(data=mdl_bream.resid, fit=True, line="45")

앞서 본 빙어 QQ 플롯

Python에서 statsmodels로 살펴보는 회귀 소개

스케일-로케이션 플롯

model_norm_residuals_bream = mdl_bream.get_influence().resid_studentized_internal

model_norm_residuals_abs_sqrt_bream = np.sqrt(np.abs(model_norm_residuals_bream))
sns.regplot(x=mdl_bream.fittedvalues, y=model_norm_residuals_abs_sqrt_bream, ci=None, lowess=True)
plt.xlabel("Fitted values") plt.ylabel("Sqrt of abs val of stdized residuals")

앞서 본 빙어 스케일-로케이션 플롯

Python에서 statsmodels로 살펴보는 회귀 소개

연습해 봅시다!

Python에서 statsmodels로 살펴보는 회귀 소개

Preparing Video For Download...