Deskripsi saya tentang jarak Mahalanobis di Bawah ke atas penjelasan tentang jarak Mahalanobis? termasuk dua hasil utama:
Menurut definisi, itu tidak berubah ketika para regresi secara seragam bergeser.
Jarak Mahalanobis kuadrat antara vektor x dan y diberikan oleh D2(x,y)=(x−y)′Σ−1(x−y)
mana Σ adalah kovarian data.
(1) memungkinkan kita untuk mengasumsikan bahwa sarana dari para regressor semuanya nol. Masih menghitung hi . Namun, agar klaim itu benar, kita perlu menambahkan satu asumsi lagi:
Model harus menyertakan intersep.
Mengizinkan ini, biarkan ada k≥0 regressor dan n data, tulis nilai regressor j untuk observasi i sebagai xij . Biarkan vektor kolom dari nilai-nilai n ini untuk regressor j ditulis x,j dan vektor baris dari nilai-nilai k ini untuk observasi i ditulis xi . Maka model matriksnya adalah
X=⎛⎝⎜⎜⎜⎜11⋮1x11x21⋮xn1⋯⋯⋮⋯x1kx2k⋮xnk⎞⎠⎟⎟⎟⎟
dan, menurut definisi, matriks topi adalah
H=X(X′X)−1X′,
dari mana entri i sepanjang diagonal adalah
hi=hii=(1;xi)(X′X)−1(1;xi)′.(1)
Tidak ada yang bisa dilakukan selain mengerjakan invers matriks pusat - tetapi berdasarkan hasil utama pertama, mudah, terutama ketika kita menulisnya dalam bentuk blok-matriks:
X′X=n(100′C)
di mana 0=(0,0,…,0)′ dan
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
Kode R untuk menunjukkan bahwa relasi memang berlaku:
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))