我在底部对马氏距离的描述到对马氏距离的顶部解释?包含两个关键结果:
根据定义,当回归变量均匀移动时,它不会改变。
向量x和y之间的平方Mahalanobis距离由 D2(x,y)=(x−y)′Σ−1(x−y)
,其中Σ是数据的协方差。
(1)允许我们假设回归器的均值为零。仍然需要计算hi。但是,为使该说法成立,我们需要再增加一个假设:
模型必须包含一个截距。
允许这一点,让有k≥0回归量和n数据,写入回归的值j观察i作为xij。让这些列向量n为回归值j写入x,j和这些的行向量k为观测值i被写入xi。那么模型矩阵是
X=⎛⎝⎜⎜⎜⎜11⋮1x11x21⋮xn1⋯⋯⋮⋯x1kx2k⋮xnk⎞⎠⎟⎟⎟⎟
根据定义,帽子矩阵为
H=X(X′X)−1X′,
从那里进入i沿着对角线是
hi=hii=(1;xi)(X′X)−1(1;xi)′.(1)
除了求出中央矩阵逆之外,它什么都没有,但是借助第一个关键结果,它很容易,尤其是当我们以块矩阵形式编写它时:
X′X=n(100′C)
0=(0,0,…,0)′
Cjk=1n∑i=1nxijxik=n−1nCov(xj,xk)=n−1nΣjk.
Σ
(X′X)−1=1n(100′C−1)=(1n00′1n−1Σ−1).
(1)
hi=(1;xi)(1n00′1n−1Σ−1)(1;xi)′=1n+1n−1xiΣ−1x′i=1n+1n−1D2(xi,0).
D2i=D2(xi,0)
D2i=(n−1)(hi−1n),
QED。
1/nXn−1n−1n
i
R代码表明该关系确实成立:
x <- mtcars
# Compute Mahalanobis distances
h <- hat(x, intercept = TRUE); names(h) <- rownames(mtcars)
M <- mahalanobis(x, colMeans(x), cov(x))
# Compute D^2 of the question
n <- nrow(x); D2 <- (n-1)*(h - 1/n)
# Compare.
all.equal(M, D2) # TRUE
print(signif(cbind(M, D2), 3))