Расстояние Кука является масштабированным изменением подобранных значений, которое полезно для идентификации выбросов в X значениях (наблюдения для переменных предиктора). Расстояние Кука показывает влияние каждого наблюдения на установленные значения отклика. Наблюдение за расстоянием Кука, превышающим в три раза среднее расстояние Кука, может оказаться выбросами.
Каждый элемент D расстояния Кука является нормированным изменением установленных значений отклика из-за удаления наблюдения. Расстояние наблюдений Кука i
где
- j-е установленное значение отклика.
- j-е установленное значение отклика, где подгонка не включает i наблюдения.
MSE - средняя квадратичная невязка.
p - количество коэффициентов в регрессионной модели.
Расстояние Кука алгебраически эквивалентно следующему выражению:
где r i - i-й невязка, и h ii - i-е значение рычага.
После подбора кривой модели mdl
для примера можно использовать fitlm
или stepwiselm
кому:
Отобразите значения расстояния Кука путем индексации в свойство с помощью записи через точку.
mdl.Diagnostics.CooksDistance
CooksDistance
- вектор-столбец n -by-1 в Diagnostics
таблица LinearModel
объект.Постройте график значений расстояния Кука.
plotDiagnostics(mdl,'cookd')
plotDiagnostics
функция LinearModel
объект.
В этом примере показано, как использовать Расстояние Кука для определения выбросов в данных.
Загрузите выборочные данные и задайте независимые и ответные переменные.
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. В частности, существуют два значения расстояния Кука, которые относительно выше, чем другие, которые превышают пороговое значение. Можно хотеть найти и опустить их из данных и перестроить модель .
Найдите наблюдения со значениями расстояния Кука, которые превышают пороговое значение.
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] Нетер, Дж., М. Х. Кутнер, К. Дж. Нахтсхайм и У. Вассерман. Примененные линейные статистические модели. 4-й эд. Чикаго: Ирвин, 1996.
fitlm
| LinearModel
| plotDiagnostics
| stepwiselm