이상점
- 이상점(outlier): 종속변수가 데이터의 일반적 경향을 따르지 않는 점
- 레버리지(leverage): 한 점이 회귀분석 결과에 미치는 영향
- 영향점(influential point): 레버리지가 큰 이상점
- 이상점이라도 레버리지가 작으면 회귀선 전체에는 큰 영향을 주지 않고 잔차만 커질 수 있음
레버리지의 성질
- 레버리지의 합은 모형의 계수 개수 p와 같음
- 독립변수가 1개인 단순 회귀분석에서는 계수가 절편과 기울기 2개이므로 레버리지의 합은 2
- 데이터가 n개이면 레버리지의 평균은 다음과 같음
np
Python 레버리지
df = pd.read_excel("influence1.xlsx")
m = ols("y ~ x", df).fit()
i = m.get_influence()
h = i.hat_matrix_diag
레버리지가 큰 점 시각화
import seaborn as sns
sns.regplot(x="x", y="y", data=df)
th = 2 / len(df)
sns.scatterplot(x="x", y="y", data=df[h > th], color="red")
스튜던트화 잔차
- 내적 스튜던트화 잔차(internally studentized residual)
- 각각의 잔차를 잔차 표준편차의 추정치로 나눈 값
- 보통 ±3 이상이면 이상점으로 봄
- 삭제 잔차(deleted residual)
- 특정값을 제거하고 회귀분석을 했을 때, 제거한 값과 그 예측치의 차이
- 삭제 잔차가 크다면 영향이 크다고 할 수 있음
- 외적 스튜던트화 잔차(externally studentized residual)
- 삭제 잔차를 스튜던트화한 것
- 보통 ±3 이상이면 이상점으로 봄
- 내적 스튜던트화 잔차보다 이상점 진단에 더 유리
i.resid_studentized_external
Difference in Fits
- Difference in Fits(DFFITS): 특정값을 분석에 포함했을 때와 포함하지 않았을 때 예측치 차이를 스튜던트화한 지표
2n−p−1p+1
Cook's Distance
- Cook's distance: 잔차의 크기와 레버리지의 크기를 복합적으로 반영한 지수
- Fox's Outlier Recommendation
- Cook's Distance가 다음 기준값보다 클 때 아웃라이어로 판단
Di>n−p−14
이상점 시각화
import statsmodels.api as sm
sm.graphics.plot_leverage_resid2(m)
- Cook's distance에 따라 점의 크기를 다르게 표시
sm.graphics.influence_plot(m)
이상점 다루기
- 수정해야 할 경우
- 데이터 포인트의 원본과 대조했을 때 입력이 잘못된 경우
- 삭제해야 할 경우
- 데이터 포인트가 연구의 모집단에 속하지 않을 경우
- 실험 절차나 측정이 잘못되었을 경우
- 진단 지표를 기계적으로 적용해 데이터를 삭제하면 안 됨
- 데이터 삭제에는 객관적 이유가 필요
- 데이터를 삭제한 경우 결과 보고에 포함해야 함
- 삭제 여부를 결정하기 어려운 경우
- 삭제한 데이터셋과 삭제하지 않은 데이터셋을 따로 분석하고 결과를 비교
- 모형을 수정해야 할 경우