クックの距離
目的
クックの距離は近似値におけるスケーリングされた変化であり、X の値 (予測子変数に対する観測値) から外れ値を特定する場合に便利です。クックの距離は、近似応答値に対する各観測値の影響を示します。平均のクックの距離の 3 倍を超える観測は外れ値の可能性があります。
定義
クックの距離 D の各要素は、観測値の削除による近似応答値の変化を正規化した値です。観測値 i のクックの距離は次のようになります。
ここで
は、j 番目の近似応答値です。
は、i 番目の観測値を除いて近似した j 番目の応答値です。
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