Meine Beschreibung der Mahalanobis-Distanz von unten nach oben Erklärung der Mahalanobis-Distanz? beinhaltet zwei wichtige Ergebnisse:
Per Definition ändert es sich nicht, wenn die Regressoren gleichmäßig verschoben werden.
Der quadratische Mahalanobis-Abstand zwischen den Vektoren und ist gegeben durch wobei die Kovarianz der Daten ist.xyD2(x,y)=(x−y)′Σ−1(x−y)
Σ
(1) erlaubt uns anzunehmen, dass die Mittel der Regressoren alle Null sind. Es bleibt zu berechnen . Damit die Behauptung jedoch wahr ist, müssen wir eine weitere Annahme hinzufügen:hi
Das Modell muss einen Achsenabschnitt enthalten.
Lassen Sie dies zu, und geben Sie k≥0 Regressoren und n Daten an, und schreiben Sie den Wert des Regressors j für die Beobachtung i als xij . Der Spaltenvektor dieser n Werte für den Regressor j sei x,j und der Zeilenvektor dieser k Werte für die Beobachtung i sei xi . Dann wird die Modellmatrix ist ,
X=⎛⎝⎜⎜⎜⎜11⋮1x11x21⋮xn1⋯⋯⋮⋯x1kx2k⋮xnk⎞⎠⎟⎟⎟⎟
und per definitionem ist die Hutmatrix
H=X(X′X)−1X′,
woher Eintrag i entlang der Diagonale ist
hi=hii=(1;xi)(X′X)−1(1;xi)′.(1)
Es bleibt nichts anderes übrig, als diese zentrale Matrixinverse zu berechnen - aber aufgrund des ersten Schlüsselergebnisses ist es einfach, insbesondere wenn wir es in Blockmatrixform schreiben:
X′X=n(100′C)
wobei 0=(0,0,…,0)′ und
Cjk=1n∑i=1nxijxik=n−1nCov(xj,xk)=n−1nΣjk.
(Ich habe Σ für die Sample- Kovarianzmatrix der Regressoren geschrieben.) Da dies eine Blockdiagonale ist, kann ihre Inverse einfach durch Invertieren der Blöcke ermittelt werden:
(X′X)−1=1n(100′C−1)=(1n00′1n−1Σ−1).
Aus der Definition (1) wir
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-Code, um zu zeigen, dass die Beziehung tatsächlich gilt:
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))