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