Phép biến đổi ILR (Isometric Log-Ratio) được sử dụng trong phân tích dữ liệu thành phần. Bất kỳ quan sát nào cũng là một tập hợp các giá trị dương tổng hợp thành sự thống nhất, chẳng hạn như tỷ lệ hóa chất trong hỗn hợp hoặc tỷ lệ của tổng thời gian dành cho các hoạt động khác nhau. Bất biến tổng hợp thống nhất ngụ ý rằng mặc dù có thể có các thành phần cho mỗi quan sát, nhưng chỉ có các giá trị độc lập về chức năng . (Về mặt hình học, các quan sát nằm trên một đơn giản hai chiều trong không gian Euclide -dimensional . Bản chất đơn giản này được biểu hiện trong các hình tam giác của các biểu đồ phân tán dữ liệu được mô phỏng bên dưới.)k ≥ 2k - 1k - 1kRk
Thông thường, các bản phân phối của các thành phần trở nên "đẹp hơn" khi chuyển đổi nhật ký. Phép biến đổi này có thể được thu nhỏ bằng cách chia tất cả các giá trị trong một quan sát cho giá trị trung bình hình học của chúng trước khi lấy các bản ghi. (Tương đương, nhật ký của dữ liệu trong bất kỳ quan sát nào đều được căn giữa bằng cách trừ đi giá trị trung bình của chúng.) Điều này được gọi là phép biến đổi "Tỷ lệ log trung tâm" hoặc CLR. Các giá trị kết quả vẫn nằm trong một siêu phẳng trong , vì tỷ lệ làm cho tổng số các bản ghi bằng không. ILR bao gồm việc chọn bất kỳ cơ sở trực giao nào cho siêu phẳng này: tọa độ của mỗi quan sát được chuyển đổi trở thành dữ liệu mới của nó. Tương đương, siêu phẳng được quay (hoặc phản xạ) trùng với mặt phẳng có biến mấtRkk - 1kthứ tự k-1tọa độ và người ta sử dụng tọa độ đầu tiên . (Vì các phép quay và phản xạ giữ khoảng cách chúng là các hình học , từ đó tên của thủ tục này.)k - 1
Tsagris, Preston và Wood nói rằng "một lựa chọn tiêu chuẩn của [ma trận xoay vòng] là ma trận con Helmert thu được bằng cách loại bỏ hàng đầu tiên khỏi ma trận Helmert."H
Ma trận Helmert của thứ tự được xây dựng một cách đơn giản (ví dụ, xem Harville trang 86). Hàng đầu tiên của nó là tất cả s. Hàng tiếp theo là một trong những hàng đơn giản nhất có thể được tạo trực giao cho hàng đầu tiên, cụ thể là . Hàng là một trong những hàng đơn giản nhất trực giao với tất cả các hàng trước: các mục đầu tiên của nó là s, đảm bảo nó trực giao với các hàng và mục nhập được đặt thành để làm cho nó trực giao với hàng đầu tiên (nghĩa là các mục nhập của nó phải bằng 0). Tất cả các hàng sau đó được định cỡ lại theo đơn vị chiều dài.k1( 1 , - 1 , 0 , Hoài , 0 )jj - 112 , 3 , ... , j - 1jthứ tự1 - j
Ở đây, để minh họa cho mẫu, là ma trận Helmert trước khi các hàng của nó được định cỡ lại:4 × 4
⎛⎝⎜⎜⎜11111- 11110- 21100- 3⎞⎠⎟⎟⎟.
(Chỉnh sửa thêm vào tháng 8 năm 2017) Một khía cạnh đặc biệt tốt đẹp của những "tương phản" này (được đọc theo từng hàng) là tính dễ hiểu của chúng. Hàng đầu tiên được loại bỏ, để lại các hàng còn lại để biểu thị dữ liệu. Hàng thứ hai tỷ lệ với sự khác biệt giữa biến thứ hai và biến thứ nhất. Hàng thứ ba tỷ lệ với sự khác biệt giữa biến thứ ba và hai biến đầu tiên. Nói chung, hàng ( ) phản ánh sự khác biệt giữa biến và tất cả các biến đứng trước nó, các biến . Điều này để lại biến đầu tiênk - 1j2 ≤ j ≤ kj1 , 2 , ... , k - 1j = 1như một "cơ sở" cho tất cả các tương phản. Tôi đã thấy những diễn giải này hữu ích khi tuân theo ILR theo Phân tích thành phần chính (PCA): nó cho phép các tải trọng được diễn giải, ít nhất là về mặt so sánh giữa các biến ban đầu. Tôi đã chèn một dòng vào việc R
thực hiện ilr
bên dưới để cung cấp cho các biến đầu ra tên phù hợp để giúp giải thích. (Kết thúc chỉnh sửa.)
Vì R
cung cấp một hàm contr.helmert
để tạo các ma trận như vậy (mặc dù không có tỷ lệ và với các hàng và cột bị phủ định và hoán vị), bạn thậm chí không phải viết mã (đơn giản) để làm điều đó. Sử dụng điều này, tôi đã triển khai ILR (xem bên dưới). Để thực hiện và kiểm tra nó, tôi đã tạo ra vẽ độc lập từ bản phân phối Dirichlet (với các tham số ) và vẽ sơ đồ ma trận phân tán của chúng. Ở đây, .10001 , 2 , 3 , 4k = 4
Tất cả các điểm đóng cục gần các góc dưới bên trái và điền vào các miếng vá hình tam giác của các khu vực âm mưu của chúng, như là đặc trưng của dữ liệu thành phần.
ILR của họ chỉ có ba biến, một lần nữa được vẽ như một ma trận phân tán:
Điều này thực sự trông đẹp hơn: các biểu đồ tán xạ đã thu được các hình dạng "đám mây hình elip" đặc trưng hơn, phù hợp hơn với các phân tích bậc hai như hồi quy tuyến tính và PCA.
Tsagris và cộng sự. khái quát hóa CLR bằng cách sử dụng phép biến đổi Box-Cox, tổng quát hóa logarit. (Nhật ký là một phép biến đổi Box-Cox với tham số ) Nó rất hữu ích bởi vì, như các tác giả (chính xác là IMHO) lập luận, trong nhiều ứng dụng, dữ liệu phải xác định phép biến đổi của chúng. Đối với những dữ liệu Dirichlet này, tham số (nằm giữa nửa không chuyển đổi và chuyển đổi nhật ký) hoạt động rất đẹp:01 / 2
"Đẹp" đề cập đến mô tả đơn giản mà hình ảnh này cho phép: thay vì phải chỉ định vị trí, hình dạng, kích thước và hướng của từng đám mây điểm, chúng ta chỉ cần quan sát rằng (với một xấp xỉ xuất sắc) tất cả các đám mây đều có hình tròn với bán kính tương tự . Trên thực tế, CLR đã đơn giản hóa một mô tả ban đầu yêu cầu ít nhất 16 số thành một số chỉ cần 12 số và ILR đã giảm xuống chỉ còn bốn số (ba vị trí đơn và một bán kính), với giá chỉ định tham số ILR là - một số thứ năm. Khi sự đơn giản hóa đáng kể như vậy xảy ra với dữ liệu thực, chúng ta thường hình dung chúng ta đang làm gì đó: chúng ta đã thực hiện một khám phá hoặc đạt được một cái nhìn sâu sắc.1 / 2
Tổng quát hóa này được thực hiện trong ilr
chức năng dưới đây. Lệnh tạo ra các biến "Z" này chỉ đơn giản là
z <- ilr(x, 1/2)
Một lợi thế của phép biến đổi Box-Cox là khả năng áp dụng các quan sát bao gồm các số 0 thực: nó vẫn được xác định với điều kiện tham số là dương.
Người giới thiệu
Michail T. Tsagris, Simon Preston và Andrew TA Wood, Một chuyển đổi sức mạnh dựa trên dữ liệu cho dữ liệu thành phần . arXiv: 1106.1451v2 [stat.ME] 16 tháng 6 năm 2011.
David A. Harville, Đại số ma trận từ quan điểm của một nhà thống kê . Springer Science & Business Media, ngày 27 tháng 6 năm 2008.
Đây là R
mã.
#
# ILR (Isometric log-ratio) transformation.
# `x` is an `n` by `k` matrix of positive observations with k >= 2.
#
ilr <- function(x, p=0) {
y <- log(x)
if (p != 0) y <- (exp(p * y) - 1) / p # Box-Cox transformation
y <- y - rowMeans(y, na.rm=TRUE) # Recentered values
k <- dim(y)[2]
H <- contr.helmert(k) # Dimensions k by k-1
H <- t(H) / sqrt((2:k)*(2:k-1)) # Dimensions k-1 by k
if(!is.null(colnames(x))) # (Helps with interpreting output)
colnames(z) <- paste0(colnames(x)[-1], ".ILR")
return(y %*% t(H)) # Rotated/reflected values
}
#
# Specify a Dirichlet(alpha) distribution for testing.
#
alpha <- c(1,2,3,4)
#
# Simulate and plot compositional data.
#
n <- 1000
k <- length(alpha)
x <- matrix(rgamma(n*k, alpha), nrow=n, byrow=TRUE)
x <- x / rowSums(x)
colnames(x) <- paste0("X.", 1:k)
pairs(x, pch=19, col="#00000040", cex=0.6)
#
# Obtain the ILR.
#
y <- ilr(x)
colnames(y) <- paste0("Y.", 1:(k-1))
#
# Plot the ILR.
#
pairs(y, pch=19, col="#00000040", cex=0.6)