Mô tả của tôi về khoảng cách Mahalanobis ở dưới cùng để giải thích về khoảng cách Mahalanobis? bao gồm hai kết quả chính:
Theo định nghĩa, nó không thay đổi khi các biến hồi quy được thay đổi đồng đều.
Các phương khoảng cách mahalanobis giữa vectơ x và y được cho bởi D2(x,y)=(x−y)′Σ−1(x−y)
nơi Σ là hiệp phương sai của dữ liệu.
(1) cho phép chúng ta giả sử phương tiện của các biến hồi quy đều bằng không. Nó vẫn còn để tính hi . Tuy nhiên, để tuyên bố là đúng, chúng ta cần thêm một giả định:
Mô hình phải bao gồm một đánh chặn.
Cho phép điều này, hãy có k≥0 hồi quy và dữ liệu n , viết giá trị của hồi quy j để quan sát i là xij . Đặt vectơ cột của n giá trị này cho biến hồi quy j được viết x,j và vectơ hàng của các giá trị k này để quan sát i được viếtxi . Thìma trận mô hìnhlà
X=⎛⎝⎜⎜⎜⎜11⋮1x11x21⋮xn1⋯⋯⋮⋯x1kx2k⋮xnk⎞⎠⎟⎟⎟⎟
và theo định nghĩa, ma trận mũ là
H=X(X′X)−1X′,
mục nhập của i dọc theo đường chéo là
hi=hii=(1;xi)(X′X)−1(1;xi)′.(1)
Không có gì cho nó ngoài việc tìm ra ma trận trung tâm nghịch đảo - nhưng nhờ kết quả chính đầu tiên, thật dễ dàng, đặc biệt là khi chúng ta viết nó dưới dạng ma trận khối:
X′X=n(100′C)
nơi 0=(0,0,…,0)′ và
Cjk=1n∑i=1nxijxik=n−1nCov(xj,xk)=n−1nΣjk.
(Tôi đã viết Σ chomẫuma trận hiệp phương sai của hồi quy.) Bởi vì đây là khối chéo, nghịch đảo của nó có thể được tìm thấy bằng cách đảo ngược các khối:
(X′X)−1=1n(100′C−1)=(1n00′1n−1Σ−1).
Từ định nghĩa (1) chúng ta có được
hi=(1;xi)(1n00′1n−1Σ−1)(1;xi)′=1n+1n−1xiΣ−1x′i=1n+1n−1D2(xi,0).
Giải phương trình bình phương Mahalanobis D2i=D2(xi,0)
D2i=(n−1)(hi−1n),
QED .
1/nXn−1n−1n).
Giá trị chính của phân tích này là truyền đạt một giải thích hình học cho đòn bẩy, đo lường mức độ thay đổi của một đơn vị trong phản ứng khi quan sát Tôi sẽ thay đổi giá trị phù hợp tại quan sát đó: các quan sát đòn bẩy cao nằm ở khoảng cách Mahalanobis lớn từ tâm của các biến hồi quy, chính xác như một đòn bẩy hiệu quả cơ học hoạt động ở khoảng cách lớn từ điểm tựa của nó.
Mã R để chỉ ra rằng mối quan hệ thực sự giữ:
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))