La mia descrizione della distanza di Mahalanobis da fondo a cima spiegazione della distanza di Mahalanobis? include due risultati chiave:
Per definizione, non cambia quando i regressori vengono spostati uniformemente.
Il quadrato Mahalanobis distanza fra vettori x ed y è dato da D2(x,y)=(x−y)′Σ−1(x−y)
dove Σ è la covarianza dei dati.
(1) ci consente di assumere che i mezzi dei regressori siano tutti zero. Resta da calcolare hi . Tuttavia, affinché l'affermazione sia vera, dobbiamo aggiungere un'altra ipotesi:
Il modello deve includere un'intercettazione.
Tenendo conto di ciò, lascia che ci siano k≥0 regressori e n dati, scrivendo il valore del regressore j per l'osservazione i come xij . Lascia che il vettore di colonna di questi n valori per il regressore j sia scritto x,j e il vettore di riga di questi valori k per l'osservazione i sia scritto xi . Quindi la matrice del modello è
X=⎛⎝⎜⎜⎜⎜11⋮1x11x21⋮xn1⋯⋯⋮⋯x1kx2k⋮xnk⎞⎠⎟⎟⎟⎟
e, per definizione, la matrice del cappello è
H=X(X′X)−1X′,
i
hi=hii=(1;xi)(X′X)−1(1;xi)′.(1)
Non c'è nient'altro che elaborare l'inverso della matrice centrale, ma in virtù del primo risultato chiave, è facile, specialmente quando lo scriviamo in forma di matrice a blocchi:
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
Codice R per mostrare che la relazione contiene effettivamente:
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))