쿡의 거리
용도
쿡의 거리는 피팅된 값의 스케일링된 변화량으로, X 값(예측 변수에 대한 관측값)에서 이상값을 식별하는 데 유용합니다. 쿡의 거리는 각 관측값이 피팅된 응답 변수 값에 미치는 영향을 보여줍니다. 쿡의 거리가 평균 쿡의 거리의 3배보다 큰 관측값은 이상값일 수 있습니다.
정의
쿡의 거리 D의 각 요소는 관측값의 결손으로 인한, 피팅된 응답 변수 값의 정규화된 변화량입니다. 관측값 i의 쿡의 거리는 다음과 같습니다.
여기서
는 피팅된 j번째 응답 변수 값입니다.
는 피팅된 j번째 응답 변수 값이며, 이때 피팅은 관측값 i를 포함하지 않습니다.
MSE는 평균제곱오차입니다.
p는 회귀 모델에서 계수의 개수입니다.
쿡의 거리는 대수적으로 다음 표현식과 동일합니다.
여기서 ri는 i번째 잔차이고 hii는 i번째 지렛대값입니다.
방법
모델 mdl을 피팅한 후, 예를 들어 fitlm 또는 stepwiselm을 사용하여 다음을 수행할 수 있습니다.
점 표기법을 사용해 속성의 요소를 참조하여 쿡의 거리 값을 표시합니다.
mdl.Diagnostics.CooksDistance
CooksDistance는LinearModel객체의Diagnostics테이블에서 n×1 열 벡터입니다.쿡의 거리 값을 플로팅합니다.
자세한 내용은plotDiagnostics(mdl,'cookd')
LinearModel객체의plotDiagnostics함수를 참조하십시오.
쿡의 거리를 사용하여 이상값 파악하기
이 예제에서는 쿡의 거리를 사용하여 데이터에서 이상값을 파악하는 방법을 보여줍니다.
표본 데이터를 불러오고 독립 변수와 응답 변수를 정의합니다.
load hospital
X = double(hospital(:,2:5));
y = hospital.BloodPressure(:,1);선형 회귀 모델을 피팅합니다.
mdl = fitlm(X,y);
쿡의 거리 값을 플로팅합니다.
plotDiagnostics(mdl,'cookd')
그림에서 파선은 권장되는 임계값 3*mean(mdl.Diagnostics.CooksDistance)에 해당합니다. 플롯에는 쿡의 거리 값이 임계값보다 큰 관측값이 몇 개 있습니다. 이 예제의 경우, 임계값은 3*(0.0108) = 0.0324입니다. 특히 다른 값들보다 상대적으로 높은 쿡의 거리 값이 2개 있으며 이들 값은 임계값을 초과합니다. 데이터에서 이들 값을 찾아 생략하고 모델을 재빌드할 수 있습니다.
쿡의 거리 값이 임계값을 초과하는 관측값을 찾습니다.
find((mdl.Diagnostics.CooksDistance)>3*mean(mdl.Diagnostics.CooksDistance))
ans = 10×1
2
13
28
44
58
70
71
84
93
95
쿡의 거리 값이 임계값을 초과하는 관측값 중에서 다른 관측값보다 쿡의 거리 값이 상대적으로 큰 관측값을 찾습니다.
find((mdl.Diagnostics.CooksDistance)>5*mean(mdl.Diagnostics.CooksDistance))
ans = 2×1
2
84
참고 문헌
[1] Neter, J., M. H. Kutner, C. J. Nachtsheim, and W. Wasserman. Applied Linear Statistical Models. 4th ed. Chicago: Irwin, 1996.
참고 항목
LinearModel | fitlm | stepwiselm | plotDiagnostics