库克距离是拟合值的缩放变化,这对于识别模型中的异常值很有用X值(预测变量的观察结果)。库克距离表示每个观测值对拟合响应值的影响。如果库克距离大于平均库克距离的三倍,则可能是一个异常值。
每个元素都在库克的距离内D是由于删除观测值而使拟合响应值发生的归一化变化。库克的观察距离我是
在哪里
是j拟合响应值。
是j拟合的响应值,其中拟合不包括观测值我。
均方误差是均方误差。
p是回归模型中的系数数。
库克距离在代数上等价于以下表达式:
在哪里r我是我残差,和h2是我杠杆价值。
拟合模型后mdl
,例如,你可以用fitlm
或stepwiselm
:
通过使用点表示法在属性中建立索引来显示库克距离值。
mdl.Diagnostics.CooksDistance
CooksDistance
是一个n的-by-1列向量诊断
表格LinearModel
对象。绘制库克距离值。
plotDiagnostics (mdl cookd)
plotDiagnostics
的功能LinearModel
对象。这个例子展示了如何使用库克距离来确定数据中的异常值。
加载示例数据并定义独立变量和响应变量。
负载医院X = double(医院(:,2:5));y = hospital.血压(:,1);
拟合线性回归模型。
mdl = fitlm(X,y);
绘制库克距离值。
plotDiagnostics (mdl“cookd”)
图中的虚线对应的是建议的阈值,3 *意味着(mdl.Diagnostics.CooksDistance)
。图中有一些Cook距离值大于阈值的观测值,本例中的阈值为3*(0.0108)= 0.0324。特别是,有两个库克距离值相对高于其他值,超过了阈值。您可能希望从数据中找到并删除这些内容,然后重新构建模型。
找出Cook距离值超过阈值的观测值。
找到((mdl.Diagnostics.CooksDistance) > 3 *意味着(mdl.Diagnostics.CooksDistance))
ans =10×12 13 28 44 58 70 71 84 93 95
找出Cook距离值相对大于其他Cook距离超过阈值的观测值的观测值。
找到((mdl.Diagnostics.CooksDistance) > 5 *意味着(mdl.Diagnostics.CooksDistance))
ans =2×12 84年
[1]内特,J., M. H.库特纳,C. J.纳赫茨海姆和W.沃瑟曼。应用线性统计模型。第四版,芝加哥:欧文出版社,1996年版。
LinearModel
|fitlm
|stepwiselm
|plotDiagnostics