logo

이상점

이상점, 레버리지, 영향점

  • 이상점(outlier): 주어진 독립변수 값에서 관측된 종속변수가 모형의 예측에서 크게 벗어난 점
  • 레버리지(leverage): 독립변수 공간에서 다른 관측치와 멀리 떨어진 정도
    • 독립변수가 극단적일 때 커짐
    • 회귀선에 미칠 수 있는 잠재적 영향력을 나타냄
  • 영향점(influential point): 해당 관측치를 제외했을 때 회귀계수나 예측값이 크게 달라지는 점

높은 레버리지가 곧 이상점을 뜻하지는 않는다. 회귀선에서 멀리 떨어졌는지는 잔차로, 실제 분석 결과를 얼마나 바꾸는지는 DFFITS나 Cook 거리로 확인한다.

Python 분석 준비

네 파일을 현재 폴더에 둔 뒤 필요한 라이브러리를 불러온다.

import numpy as np
import pandas as pd
from IPython.display import display
from statsmodels.formula.api import ols

레버리지

df = pd.read_excel("influence1.xlsx")
m = ols("y ~ x", data=df).fit()
i = m.get_influence()
h = i.hat_matrix_diag

강의에서는 단순회귀모형 y ~ x의 레버리지 기준으로 다음 값을 사용한다.

th = 2 / len(df)

일반적으로 독립변수 수를 (p), 관측치 수를 (n)이라고 하면 절편을 포함한 모수는 (p+1)개이므로 기준은 ((p+1)/n)으로 나타낼 수 있다.

영향력 진단 기준

외적 스튜던트화 잔차

내적 스튜던트화 잔차(internally studentized residual)는 각 잔차를 잔차 표준편차의 추정치로 나눈 값이다.

i.resid_studentized

외적 스튜던트화 잔차(externally studentized residual)는 특정 관측치를 제외하고 계산한 삭제 잔차를 스튜던트화한 값이다. 내적 스튜던트화 잔차보다 이상점 진단에 유리하며, 보통 절댓값이 3 이상이면 이상점 후보로 점검한다.

i.resid_studentized_external

DFFITS

DFFITS는 특정 관측치를 분석에 포함했을 때와 포함하지 않았을 때의 예측값 차이를 스튜던트화한 지표다.

i.dffits

독립변수 수가 (p), 관측치 수가 (n)일 때 다음 기준을 사용한다.

DFFITSi>2np1p+1

Cook 거리

Cook 거리(Cook's distance)는 잔차와 레버리지를 함께 반영해 관측치가 전체 적합 결과에 미치는 영향을 나타낸다.

i.cooks_distance[0]
Di>np14

이는 영향점 후보를 찾는 경험적 기준이다. 기준을 넘었다고 관측치를 자동으로 삭제하지 않는다.

influence1: 기본 자료

df1 = pd.read_excel("influence1.xlsx")
m1 = ols("y ~ x", data=df1).fit()
i1 = m1.get_influence()

h1 = i1.hat_matrix_diag
student_resid1 = i1.resid_studentized_external
dffits1 = i1.dffits[0]
cooks_d1 = i1.cooks_distance[0]

n1 = int(m1.nobs)
p1 = int(m1.df_model)
leverage_cutoff1 = (p1 + 1) / n1
student_resid_cutoff = 3
dffits_cutoff1 = 2 * np.sqrt(
    (p1 + 1) / (n1 - p1 - 1)
)
cooks_cutoff1 = 4 / (n1 - p1 - 1)

d1 = pd.DataFrame({
    "Row": df1["Row"].astype(int),
    "x": df1["x"],
    "y": df1["y"],
    "leverage": h1,
    "student_resid": student_resid1,
    "dffits": dffits1,
    "cooks_d": cooks_d1,
})
d1["high_leverage"] = d1["leverage"] > leverage_cutoff1
d1["outlier"] = d1["student_resid"].abs() > student_resid_cutoff
d1["high_dffits"] = d1["dffits"].abs() > dffits_cutoff1
d1["high_cooks"] = d1["cooks_d"] > cooks_cutoff1

flag_columns = [
    "high_leverage",
    "outlier",
    "high_dffits",
    "high_cooks",
]
display(d1[d1[flag_columns].any(axis=1)])

max_index1 = d1["cooks_d"].idxmax()
m1_without = ols(
    "y ~ x",
    data=df1.drop(index=max_index1),
).fit()

pd.DataFrame({
    "model": ["전체 자료", "최대 Cook 관측치 제외"],
    "slope_x": [m1.params["x"], m1_without.params["x"]],
    "R_squared": [m1.rsquared, m1_without.rsquared],
})
  • 관측치 수: 20
  • 최대 Cook 거리 관측치: Row 4
  • Row 4의 외적 스튜던트화 잔차: 2.6299
  • DFFITS: 0.9872
  • Cook 거리: 0.3668
  • Row 4 제외 전후 기울기: 5.11695.2492
  • (R^2): 0.97320.9802

Row 4는 (|t_i|>3) 기준의 이상점은 아니지만 DFFITS와 Cook 거리 기준을 넘는다. 기본 자료 안에서도 개별 관측치가 회귀 결과에 비교적 큰 영향을 줄 수 있다.

influence2: 레버리지는 작지만 잔차가 큰 점

df2 = pd.read_excel("influence2.xlsx")

이후 회귀 모형 적합, 영향력 진단, 최대 Cook 거리 관측치 제외 비교는 influence1.xlsx와 동일한 절차로 수행한다.

추가된 Row 21은 x=4, y=40이다.

  • 레버리지: 0.0510
  • 외적 스튜던트화 잔차: 6.6901
  • DFFITS: 1.5505
  • Cook 거리: 0.3639
  • Row 21 제외 전후 기울기: 5.03735.1169
  • (R^2): 0.91010.9732

Row 21은 독립변수 공간의 중심에 가까워 레버리지가 작다. 그러나 회귀선에서 크게 벗어나 이상점, DFFITS, Cook 거리 기준을 모두 넘는다.

influence3: 레버리지는 크지만 잔차가 크지 않은 점

df3 = pd.read_excel("influence3.xlsx")

이후 회귀 모형 적합, 영향력 진단, 최대 Cook 거리 관측치 제외 비교는 influence1.xlsx와 동일한 절차로 수행한다.

추가된 Row 21은 x=14, y=68이다.

  • 레버리지: 0.3575
  • 외적 스튜던트화 잔차: -1.6601
  • DFFITS: -1.2384
  • Cook 거리: 0.7020
  • Row 21 제외 전후 기울기: 4.92725.1169
  • (R^2): 0.97740.9732

Row 21은 독립변수 범위에서 멀리 떨어져 레버리지가 크다. 기존 선형 추세에는 비교적 가까워 (|t_i|>3) 기준의 이상점은 아니지만 DFFITS와 Cook 거리 기준을 넘는다.

influence4: 레버리지와 잔차가 모두 큰 점

df4 = pd.read_excel("influence4.xlsx")

이후 회귀 모형 적합, 영향력 진단, 최대 Cook 거리 관측치 제외 비교는 influence1.xlsx와 동일한 절차로 수행한다.

추가된 Row 21은 x=13, y=15이다.

  • 레버리지: 0.3115
  • 외적 스튜던트화 잔차: -17.0467
  • DFFITS: -11.4670
  • Cook 거리: 4.0480
  • Row 21 제외 전후 기울기: 3.31985.1169
  • (R^2): 0.55190.9732

Row 21은 독립변수 공간에서도 멀고 회귀선에서도 크게 벗어난다. 네 진단 기준을 모두 넘으며, 제거 전후 기울기와 (R^2)가 크게 달라지는 강한 영향점이다.

네 자료 비교

파일 최대 Cook 거리 Row 레버리지 외적 스튜던트화 잔차 DFFITS Cook 거리 전체 기울기 제외 후 기울기
influence1.xlsx 4 0.1235 2.6299 0.9872 0.3668 5.1169 5.2492
influence2.xlsx 21 0.0510 6.6901 1.5505 0.3639 5.0373 5.1169
influence3.xlsx 21 0.3575 -1.6601 -1.2384 0.7020 4.9272 5.1169
influence4.xlsx 21 0.3115 -17.0467 -11.4670 4.0480 3.3198 5.1169

이상점, 높은 레버리지점, 영향점은 서로 다른 개념이다.

  • influence2: 낮은 레버리지와 큰 잔차
  • influence3: 높은 레버리지와 크지 않은 잔차
  • influence4: 높은 레버리지와 큰 잔차

이상점 다루기

  • 입력 오류는 원자료와 대조해 수정
  • 모집단 이탈이나 측정·실험 오류는 객관적 근거를 확인한 뒤 제외 여부 결정
  • 진단 지표만 기계적으로 적용해 삭제하지 않음
  • 판단이 어려우면 전체 자료와 제외 자료의 결과를 함께 비교
  • 중요한 변수 누락, 상호작용, 비선형성 때문에 잔차가 커졌는지 점검
  • 제외한 관측치, 제외 근거, 분석 결과의 변화를 보고서에 명시

퀴즈

문제 1 / 6맞음: 0힌트: 0틀림: 0채점중: 0남음: 6

레버리지와 영향점의 차이에 대한 설명으로 가장 적절한 것은?

  • 레버리지는 종속변수의 극단성을, 영향점은 독립변수의 극단성만 나타낸다
  • 레버리지가 크면 잔차의 크기와 관계없이 반드시 영향점이다
  • 레버리지는 잠재적 영향력을, 영향점은 관측치 제외에 따른 실제 결과 변화를 나타낸다
  • 레버리지와 영향점은 같은 통계량의 다른 이름이다

퀴즈를 풀려면 대화형 기능을 불러와야 합니다.