Transformasi ILR (Isometrik Log-Rasio) digunakan dalam analisis data komposisi. Setiap pengamatan yang diberikan adalah serangkaian nilai-nilai positif yang menjumlahkan kesatuan, seperti proporsi bahan kimia dalam campuran atau proporsi total waktu yang dihabiskan dalam berbagai kegiatan. Jumlah-ke-kesatuan invarian menyiratkan bahwa meskipun mungkin ada k≥2 komponen untuk setiap pengamatan, hanya ada k−1 nilai fungsional independen. (Secara geometris, pengamatan terletak pada simpleks k−1 dimensi dalam k dimensi Euclidean ruang Rk. Sifat simplisial ini dimanifestasikan dalam bentuk segitiga dari sebar data simulasi yang ditunjukkan di bawah ini.)
Biasanya, distribusi komponen menjadi "lebih baik" ketika log diubah. Transformasi ini dapat diskalakan dengan membagi semua nilai dalam pengamatan dengan rata-rata geometrik mereka sebelum mengambil log. (Secara ekuivalen, log data dalam observasi apa pun dipusatkan dengan mengurangkan rata-ratanya). Ini dikenal sebagai transformasi "Centered Log-Ratio", atau CLR. Nilai-nilai yang dihasilkan masih terletak dalam hyperplane di Rk , karena skala menyebabkan jumlah dari log menjadi nol. ILR terdiri dari memilih basis ortonormal untuk hyperplane ini: koordinat k−1 dari setiap pengamatan yang diubah menjadi data baru. Setara dengan itu, hyperplane diputar (atau dipantulkan) untuk bertepatan dengan pesawat dengan lenyapnya kthKoordinat th dan satu menggunakankoordinatk−1 pertama. (Karena rotasi dan refleksi menjaga jarak, ituisometri, dari mana nama prosedur ini.)
Tsagris, Preston, dan Wood menyatakan bahwa "pilihan standar [matriks rotasi] H adalah sub-matriks Helmert yang diperoleh dengan menghapus baris pertama dari matriks Helmert."
Matriks Helmert dari order k dibangun dengan cara sederhana (lihat Harville hal. 86 misalnya). Baris pertama adalah semua 1 s. Baris berikutnya adalah salah satu yang paling sederhana yang dapat dibuat ortogonal ke baris pertama, yaitu (1,−1,0,…,0) . Baris j adalah salah satu yang paling sederhana yaitu ortogonal untuk semua baris sebelumnya: entri j−1 pertamanya adalah 1 s, yang menjamin itu ortogonal untuk baris 2,3,…,j−1, Dan yang jth masuk diatur ke 1−j untuk membuatnya ortogonal ke baris pertama (yaitu, entri yang harus berjumlah nol). Semua baris kemudian diubah kembali menjadi satuan panjang.
Di sini, untuk menggambarkan pola, adalah 4×4 Helmert matriks sebelum baris yang telah rescaled:
⎛⎝⎜⎜⎜11111−11110−21100−3⎞⎠⎟⎟⎟.
(Sunting ditambahkan Agustus 2017) Satu aspek yang sangat bagus dari "kontras" ini (yang dibaca baris demi baris) adalah interpretabilitasnya. Baris pertama dijatuhkan, meninggalkan k−1 baris tersisa untuk mewakili data. Baris kedua sebanding dengan perbedaan antara variabel kedua dan yang pertama. Baris ketiga sebanding dengan perbedaan antara variabel ketiga dan dua yang pertama. Secara umum, baris j ( 2≤j≤k ) mencerminkan perbedaan antara variabel j dan semua yang mendahuluinya, variabel 1,2,…,j−1. Ini meninggalkan variabel pertama j=1 sebagai "basis" untuk semua kontras. Saya telah menemukan interpretasi ini bermanfaat ketika mengikuti ILR oleh Principal Components Analysis (PCA): memungkinkan pemuatan untuk ditafsirkan, setidaknya secara kasar, dalam hal perbandingan antara variabel asli. Saya telah memasukkan garis ke dalam R
implementasi di ilr
bawah ini yang memberikan variabel output nama yang sesuai untuk membantu dengan interpretasi ini. (Akhir edit.)
Karena R
menyediakan fungsi contr.helmert
untuk membuat matriks seperti itu (walaupun tanpa penskalaan, dan dengan baris dan kolom dinegasikan dan diubah), Anda bahkan tidak perlu menulis kode (sederhana) untuk melakukannya. Dengan menggunakan ini, saya menerapkan ILR (lihat di bawah). Untuk melatih dan mengujinya, saya menghasilkan 1000 undian independen dari distribusi Dirichlet (dengan parameter 1,2,3,4 ) dan menyusun matriks sebar mereka. Di sini, k=4 .
Semua titik berumpun di dekat sudut kiri bawah dan mengisi bidang segitiga pada bidang plotnya, sebagaimana karakteristik data komposisi.
ILR mereka hanya memiliki tiga variabel, sekali lagi diplot sebagai sebar scatterplot:
Ini memang terlihat lebih baik: scatterplots telah memperoleh lebih banyak bentuk "awan elips" yang lebih khas, lebih baik menerima analisis orde kedua seperti regresi linier dan PCA.
01/2
1/2
Generalisasi ini diimplementasikan dalam ilr
fungsi di bawah ini. Perintah untuk menghasilkan variabel "Z" ini sederhana
z <- ilr(x, 1/2)
Salah satu keuntungan dari transformasi Box-Cox adalah penerapannya pada pengamatan yang menyertakan nol nyata: masih ditentukan asalkan parameternya positif.
Referensi
Michail T. Tsagris, Simon Preston dan Andrew TA Wood, Suatu transformasi kekuatan berbasis data untuk data komposisi . arXiv: 1106.1451v2 [stat.ME] 16 Jun 2011
David A. Harville, Matriks Aljabar Dari Perspektif Ahli Statistik . Springer Science & Business Media, 27 Jun 2008.
Ini R
kodenya.
#
# 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)