A transformação ILR (Isometric Log-Ratio) é usada na análise de dados composicionais. Qualquer observação é um conjunto de valores positivos somados à unidade, como as proporções de produtos químicos em uma mistura ou proporções do tempo total gasto em várias atividades. A invariante de soma para unidade implica que, embora possa haver k ≥ 2 componentes para cada observação, existem apenas k - 1 valores funcionalmente independentes. (Geometricamente, as observações estão em um simplex k - 1 dimensional no espaço euclidiano k dimensional Rk. Essa natureza simples se manifesta nas formas triangulares dos gráficos de dispersão dos dados simulados mostrados abaixo.)
Normalmente, as distribuições dos componentes se tornam "mais agradáveis" quando o log é transformado. Essa transformação pode ser dimensionada dividindo todos os valores em uma observação por sua média geométrica antes de fazer os logs. (Equivalentemente, os logs dos dados em qualquer observação são centralizados subtraindo sua média.) Isso é conhecido como transformação "Razão do Log Centrado" ou CLR. Os valores resultantes ainda estão dentro de um hiperplano em Rk , porque o dimensionamento faz com que a soma dos logs seja zero. O ILR consiste em escolher qualquer base ortonormal para esse hiperplano: as coordenadas k - 1 de cada observação transformada se tornam seus novos dados. Equivalentemente, o hiperplano é girado (ou refletido) para coincidir com o plano com k desaparecendokº coordenada e uma usa as primeirascoordenadask - 1 . (Como rotações e reflexões preservam a distância, sãoisometrias, daí o nome desse procedimento.)
Tsagris, Preston e Wood afirmam que "uma escolha padrão da [matriz de rotação] H é a sub-matriz de Helmert obtida pela remoção da primeira linha da matriz de Helmert".
A matriz Helmert de ordem k é construída de maneira simples (veja Harville, p. 86, por exemplo). Sua primeira linha é composta por 1 s. A próxima linha é uma das mais simples que podem ser ortogonais à primeira linha, a saber ( 1 , - 1 , 0 , … , 0 ) . A linha j está entre as mais simples ortogonais a todas as linhas anteriores: suas primeiras entradas j - 1 são 1 s, o que garante que é ortogonal às linhas 2 , 3 , … , j - 1, E sua jº entrada é definida para 1 - j para torná-lo ortogonal à primeira linha (isto é, suas entradas devem somar zero). Todas as linhas são então redimensionadas para o tamanho da unidade.
Aqui, para ilustrar o padrão, é o 4 × 4 matriz Helmert antes de suas linhas foram redimensionadas:
⎛⎝⎜⎜⎜11111- 11110 0- 2110 00 0- 3⎞⎠⎟⎟⎟.
(Edição adicionada em agosto de 2017) Um aspecto particularmente interessante desses "contrastes" (que são lidos linha por linha) é sua interpretabilidade. A primeira linha é descartada, deixando k - 1 linhas restantes para representar os dados. A segunda linha é proporcional à diferença entre a segunda variável e a primeira. A terceira linha é proporcional à diferença entre a terceira variável e as duas primeiras. Geralmente, a linha j ( 2 ≤ j ≤ k ) reflete a diferença entre a variável j e todas as que a precedem, variáveis 1 , 2 , … , j - 1. Isso deixa a primeira variável j = 1 como uma "base" para todos os contrastes. Achei essas interpretações úteis ao seguir o ILR da Análise de Componentes Principais (PCA): permite que as cargas sejam interpretadas, pelo menos aproximadamente, em termos de comparações entre as variáveis originais. Inseri uma linha na R
implementação ilr
abaixo que fornece às variáveis de saída nomes adequados para ajudar nessa interpretação. (Fim da edição.)
Como R
fornece uma função contr.helmert
para criar essas matrizes (embora sem o dimensionamento e com linhas e colunas negadas e transpostas), você nem precisa escrever o código (simples) para fazê-lo. Usando isso, implementei o ILR (veja abaixo). Para exercitá-lo e testá-lo, geramos 1000 desenhos independentes a partir de uma distribuição de Dirichlet (com os parâmetros 1 , 2 , 3 , 4 ) e plotamos sua matriz de gráficos de dispersão. Aqui, k = 4 .
Todos os pontos se agrupam perto dos cantos inferiores esquerdos e preenchem manchas triangulares de suas áreas de plotagem, como é característico dos dados de composição.
O ILR deles possui apenas três variáveis, novamente plotadas como uma matriz de gráfico de dispersão:
Isso realmente parece mais agradável: os gráficos de dispersão adquiriram formas mais características de "nuvem elíptica", mais passíveis de análises de segunda ordem, como regressão linear e PCA.
0 01 / 2
1 / 2
Essa generalização é implementada na ilr
função abaixo. O comando para produzir essas variáveis "Z" era simplesmente
z <- ilr(x, 1/2)
Uma vantagem da transformação Box-Cox é sua aplicabilidade a observações que incluem zeros verdadeiros: ela ainda é definida desde que o parâmetro seja positivo.
Referências
Michail T. Tsagris, Simon Preston e Andrew TA Wood, uma transformação de poder baseada em dados para dados composicionais . arXiv: 1106.1451v2 [stat.ME] 16 de junho de 2011.
David A. Harville, álgebra matricial da perspectiva de um estatístico . Springer Science & Business Media, 27 de junho de 2008.
Aqui está o R
código.
#
# 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)
Para o seu caso de uso, provavelmente não há problema em apenas reduzir tudo para um. O fato de os números não somarem exatamente 24 adicionará um pouco de ruído extra aos dados, mas não deve atrapalhar tanto as coisas.
Com todos os detalhes técnicos à parte, é importante saber como interpretar corretamente os dados transformados do ilr. No final, a transformação ilr refere-se apenas às relações de log dos grupos. Mas o define com relação a alguma hierarquia predefinida. Se você definir uma hierarquia da seguinte maneira
cada variável transformada pode ser calculada como
Portanto, a próxima pergunta é: como você define sua hierarquia de variáveis? Isso depende de você, mas se você tiver três variáveis, não haverá muitas combinações para mexer. Por exemplo, você pode apenas definir a hierarquia a ser
A
B
C
(A|B)
Mas voltando à sua pergunta original, como você pode usar essas informações para realmente executar a transformação ilr?
Se você estiver usando R, eu faria o checkout do pacote de composições
Para usar esse pacote, você precisará entender como criar uma partição binária seqüencial (SBP), que é como você define a hierarquia. Para a hierarquia definida acima, você pode representar o SBP com a seguinte matriz.
onde os valores positivos representam as variáveis no numerador, os valores negativos representam as variáveis no denominador e os zeros representam a ausência dessa variável na balança. Você pode construir a base ortonormal usando
balanceBase
o SBP que você definiu.Depois de conseguir isso, você poderá passar sua tabela de proporções junto com a base que você calculou acima.
Eu verificaria esta referência para a definição original de saldos
fonte
As postagens acima respondem à pergunta sobre como construir uma base de ILR e obter seus saldos de ILR. Para adicionar a isso, a escolha de qual base pode facilitar a interpretação dos seus resultados.
Você pode estar interessado em uma partição, a seguinte partição:
(1) (adormecido, sedentário | atividade física) (2) (adormecido | sedentário).
Como você tem três partes em sua composição, você obterá dois saldos de ILR para analisar. Ao configurar a partição como acima, você pode obter saldos correspondentes a "ativo ou não" (1) e "qual forma de inatividade" (2).
Se você analisar cada saldo de ILR separadamente, por exemplo, executando uma regressão em relação à hora do dia ou época do ano para verificar se há alguma alteração, você poderá interpretar os resultados em termos de alterações em "ativo ou não" e alterações em "qual forma de inatividade".
Se, por outro lado, você executar técnicas como PCA que obtêm uma nova base no espaço ILR, seus resultados não dependerão da sua escolha de partição. Isso ocorre porque seus dados existem no espaço CLR, o plano D-1 ortogonal ao vetor único e os saldos ILR são opções diferentes de eixos de norma de unidade para descrever a posição dos dados no plano CLR.
fonte