Transformacja ILR (Isometric Log-Ratio) służy do analizy danych dotyczących składu. Każda obserwacja jest zbiorem wartości dodatnich sumujących się do jedności, takich jak proporcje chemikaliów w mieszaninie lub proporcje całkowitego czasu spędzonego na różnych czynnościach. Niezmiennik suma do jedności oznacza, że chociaż w każdej obserwacji może być k≥2 składowych, istnieją tylko k−1 funkcjonalnie niezależne wartości. (Geometrycznie obserwacje leżą na k−1 wymiarowym simpleksie w k wymiarowej przestrzeni Euklidesowej Rk. Ta prosta natura przejawia się w trójkątnych kształtach wykresów rozrzutu symulowanych danych pokazanych poniżej.)
Zazwyczaj rozkłady komponentów stają się „ładniejsze” po przekształceniu dziennika. Ta transformacja może być skalowana poprzez podzielenie wszystkich wartości w obserwacji przez ich średnią geometryczną przed pobraniem logów. (Odpowiednio dzienniki danych w dowolnej obserwacji są wyśrodkowane przez odjęcie ich średniej.) Jest to znane jako transformacja „wyśrodkowanego współczynnika log” lub CLR. Wynikowe wartości nadal leżą w hiperpłaszczyźnie w Rk , ponieważ skalowanie powoduje, że suma dzienników jest równa zero. ILR polega na wybraniu dowolnej ortonormalnej podstawy dla tej hiperpłaszczyzny: współrzędne k−1 każdej transformowanej obserwacji stają się jej nowymi danymi. Równolegle hiperpłaszczyzna jest obracana (lub odbijana), aby pokrywała się z płaszczyzną znikającego kth koordynować i używa pierwszak−1 współrzędnych. (Ponieważ obroty i odbicia zachowują odległość, są toizometria, stąd nazwa tej procedury).
Tsagris, Preston i Wood twierdzą, że „standardowym wyborem [macierzy rotacji] H jest podmacierz Helmerta uzyskana przez usunięcie pierwszego rzędu z macierzy Helmerta”.
Macierz Helmerta rzędu k jest konstruowana w prosty sposób (patrz na przykład Harville, s. 86). Pierwszy rząd ma wszystkie 1 s. Następny rząd jest jednym z najprostszych, które można ustawić prostopadle do pierwszego rzędu, a mianowicie (1,−1,0,…,0) . Rząd j jest jednym z najprostszych, który jest prostopadły do wszystkich poprzednich wierszy: jego pierwsze wpisy j−1 to 1 s, co gwarantuje, że jest prostopadły do rzędów 2 , 3 , … , j - 1, a jej jotth wpis jest ustawiony na 1 - j aby był prostopadły do pierwszego wiersza (to znaczy, że jego wpisy muszą sumować się do zera). Wszystkie wiersze są następnie przeskalowywane do długości jednostki.
Tutaj, aby zilustrować wzór, jest macierz Helmert 4 × 4 przed przeskalowaniem jej wierszy:
⎛⎝⎜⎜⎜11111- 11110- 21100- 3⎞⎠⎟⎟⎟.
(Edycja dodana w sierpniu 2017 r.) Szczególnie interesującym aspektem tych „kontrastów” (które są odczytywane wiersz po rzędzie) jest ich interpretowalność. Pierwszy wiersz jest usuwany, pozostawiając k - 1 pozostałych wierszy do przedstawienia danych. Drugi rząd jest proporcjonalny do różnicy między drugą zmienną a pierwszą. Trzeci rząd jest proporcjonalny do różnicy między trzecią zmienną a pierwszymi dwiema. Zasadniczo wiersz jot ( 2 ≤ j ≤ k ) odzwierciedla różnicę między zmienną jot a wszystkimi poprzednimi , zmiennymi 1 , 2 , … , j - 1. Pozostawia to pierwszą zmienną j = 1 jako „bazę” dla wszystkich kontrastów. Uważam, że te interpretacje są pomocne przy śledzeniu ILR metodą analizy głównych składników (PCA): umożliwia interpretację obciążeń, przynajmniej w przybliżeniu, w kategoriach porównań między pierwotnymi zmiennymi. Do R
implementacji ilr
poniżej wstawiłem wiersz, który nadaje zmiennym wyjściowym odpowiednie nazwy, które pomogą w tej interpretacji. (Koniec edycji.)
Ponieważ R
zapewnia funkcję contr.helmert
do tworzenia takich macierzy (aczkolwiek bez skalowania, z wierszami i kolumnami zanegowanymi i transponowanymi), nie musisz nawet pisać (prostego) kodu, aby to zrobić. Korzystając z tego, wdrożyłem ILR (patrz poniżej). Aby to ćwiczyć i przetestować, wygenerowałem 1000 niezależnych losowań z rozkładu Dirichleta (z parametrami 1 , 2 , 3 , 4 ) i wykreśliłem ich macierz rozrzutu. Tutaj k = 4 .
Wszystkie punkty zbrylają się w pobliżu dolnych lewych narożników i wypełniają trójkątne plamki swoich obszarów kreślenia, co jest charakterystyczne dla danych kompozycyjnych.
Ich ILR ma tylko trzy zmienne, ponownie wykreślone jako macierz wykresu rozrzutu:
To rzeczywiście wygląda ładniej: wykresy rozproszone zyskały bardziej charakterystyczne kształty „eliptycznej chmury”, lepiej dostosowane do analiz drugiego rzędu, takich jak regresja liniowa i PCA.
01 / 2
1 / 2
To uogólnienie jest realizowane w ilr
funkcji poniżej. Polecenie wygenerowania tych zmiennych „Z” było po prostu
z <- ilr(x, 1/2)
Jedną z zalet transformacji Boxa-Coxa jest możliwość jej zastosowania do obserwacji zawierających prawdziwe zera: jest ona nadal zdefiniowana, pod warunkiem, że parametr jest dodatni.
Bibliografia
Michail T. Tsagris, Simon Preston i Andrew TA Wood, Oparta na danych transformacja mocy dla danych kompozycyjnych . arXiv: 1106.1451v2 [stat.ME] 16 czerwca 2011 r.
David A. Harville, Matrix Algebra From a Statistician's Perspective . Springer Science & Business Media, 27 czerwca 2008.
Oto R
kod.
#
# 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)
W twoim przypadku prawdopodobnie dobrze jest skalować wszystko do jednego. Fakt, że liczby nie sumują się dokładnie do 24, doda trochę dodatkowego szumu do danych, ale nie powinno to tak bardzo popsuć.
Pomijając wszystkie szczegóły techniczne, ważne jest, aby wiedzieć, jak poprawnie interpretować dane przekształcone ilr. Na koniec transformacja ilr odnosi się tylko do logarytmicznych proporcji grup. Ale definiuje to w odniesieniu do jakiejś predefiniowanej hierarchii. Jeśli zdefiniujesz hierarchię w następujący sposób
każdą transformowaną zmienną można obliczyć jako
Kolejne pytanie brzmi: jak zdefiniować swoją hierarchię zmiennych? To naprawdę zależy od ciebie, ale jeśli masz trzy zmienne, nie ma zbyt wielu kombinacji, z którymi można zadzierać. Na przykład możesz po prostu zdefiniować hierarchię
A
B
C
(A|B)
Ale wracając do pierwotnego pytania, w jaki sposób można wykorzystać te informacje, aby faktycznie przeprowadzić transformację ILR?
Jeśli używasz R, kupiłbym pakiet kompozycji
Aby korzystać z tego pakietu, musisz zrozumieć, jak utworzyć sekwencyjną partycję binarną (SBP), czyli jak zdefiniować hierarchię. Dla hierarchii zdefiniowanej powyżej możesz reprezentować SBP za pomocą następującej macierzy.
gdzie wartości dodatnie reprezentują zmienne w liczniku, wartości ujemne reprezentują zmienne w mianowniku, a zera oznaczają brak tej zmiennej w bilansie. Możesz zbudować podstawę ortonormalną za pomocą
balanceBase
zdefiniowanego przez siebie SBP.Gdy już to zrobisz, powinieneś być w stanie przekazać tabelę proporcji wraz z podstawą, którą obliczyłeś powyżej.
Sprawdziłbym to odniesienie dla oryginalnej definicji sald
źródło
Powyższe posty odpowiedzieć na pytanie, w jaki sposób skonstruować takie podstawy ILR i dostać salda ILR. Aby dodać do tego, wybór którego podstawą może ułatwić interpretację wyników.
Możesz być zainteresowany partycją następującą partycję:
(1) (spanie, siedzący tryb życia | aktywność fizyczna) (2) (spanie | siedzący tryb życia).
Ponieważ masz trzy części w swoim składzie, otrzymasz dwa salda ILR do analizy. Konfigurując partycję jak wyżej, można uzyskać salda odpowiadające „aktywnej czy nie” (1) i „która forma nieaktywności” (2).
Jeśli analizujesz oddzielnie każdy bilans ILR, na przykład przeprowadzając regresję w stosunku do pory dnia lub pory roku, aby sprawdzić, czy są jakieś zmiany, możesz zinterpretować wyniki w kategoriach zmian w „aktywnym lub nie” i zmianach w „która forma nieaktywności”.
Jeśli natomiast wykonasz techniki takie jak PCA, które uzyskają nową podstawę w przestrzeni ILR, Twoje wyniki nie będą zależeć od wyboru partycji. Wynika to z faktu, że dane istnieją w przestrzeni CLR, płaszczyźnie D-1 prostopadłej do jednego wektora, a równowagi ILR to różne wybory osi jednostka-norma do opisania pozycji danych na płaszczyźnie CLR.
źródło