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)
Untuk kasus penggunaan Anda, mungkin ok untuk hanya skala semuanya menjadi satu. Fakta bahwa angka-angka itu tidak bertambah tepat hingga 24 akan menambah sedikit noise tambahan pada data, tetapi itu tidak seharusnya mengacaukan banyak hal.
Selain semua rincian teknis, penting untuk mengetahui cara menafsirkan data yang ditransformasikan dengan benar secara benar. Pada akhirnya, transformasi ilr hanya mengacu pada rasio log kelompok. Tapi itu mendefinisikannya sehubungan dengan beberapa hierarki yang telah ditentukan. Jika Anda mendefinisikan hierarki seperti berikut ini
setiap variabel yang diubah dapat dihitung sebagai
Jadi pertanyaan selanjutnya adalah, bagaimana Anda mendefinisikan hierarki variabel Anda? Ini benar-benar terserah Anda, tetapi jika Anda memiliki tiga variabel, tidak ada terlalu banyak kombinasi untuk dipusingkan. Misalnya, Anda bisa mendefinisikan hierarki menjadi
A
B
C
(A|B)
Tetapi kembali ke pertanyaan awal Anda, bagaimana Anda bisa menggunakan informasi ini untuk benar-benar melakukan transformasi ilr?
Jika Anda menggunakan R, saya akan checkout paket komposisi
Untuk menggunakan paket itu, Anda harus memahami cara membuat partisi biner sekuensial (SBP), yang merupakan cara Anda mendefinisikan hierarki. Untuk hierarki yang ditentukan di atas, Anda dapat mewakili SBP dengan matriks berikut.
di mana nilai-nilai positif mewakili variabel-variabel dalam pembilang, nilai-nilai negatif mewakili variabel-variabel dalam penyebut, dan nol mewakili tidak adanya variabel itu dalam neraca. Anda dapat membangun basis ortonormal menggunakan
balanceBase
dari SBP yang Anda tetapkan.Setelah Anda memiliki ini, Anda harus dapat lulus dalam tabel proporsi Anda bersama dengan dasar yang Anda hitung di atas.
Saya akan memeriksa referensi ini untuk definisi saldo asli
sumber
Posting di atas menjawab pertanyaan tentang bagaimana membangun sebuah basis ILR dan saldo ILR Anda. Untuk menambah ini, pilihan yang secara dapat meringankan interpretasi hasil Anda.
Anda mungkin tertarik dengan partisi sebagai berikut:
(1) (tidur, tak bergerak | fisik_kegiatan) (2) (tidur | tak bergerak).
Karena Anda memiliki tiga bagian dalam komposisi Anda, Anda akan mendapatkan dua saldo ILR untuk dianalisis. Dengan mengatur partisi seperti di atas, Anda dapat memperoleh saldo yang sesuai dengan "aktif atau tidak" (1) dan "bentuk ketidakaktifan" (2).
Jika Anda menganalisis setiap saldo ILR secara terpisah, misalnya melakukan regresi terhadap waktu-of-hari atau waktu-tahun untuk melihat apakah ada perubahan, Anda dapat menginterpretasikan hasil dalam hal perubahan dalam "aktif atau tidak" dan perubahan dalam "Yang merupakan bentuk tidak aktif".
Jika, di sisi lain, Anda akan melakukan teknik seperti PCA yang memperoleh basis baru dalam ruang ILR, hasil Anda tidak akan tergantung pada pilihan partisi Anda. Ini karena data Anda ada dalam ruang CLR, bidang D-1 ortogonal ke satu vektor, dan keseimbangan ILR adalah pilihan yang berbeda dari sumbu unit-norm untuk menggambarkan posisi data pada bidang CLR.
sumber