La transformación ILR (Isometric Log-Ratio) se utiliza en el análisis de los datos de composición. Cualquier observación es un conjunto de valores positivos que suman la unidad, como las proporciones de sustancias químicas en una mezcla o las proporciones del tiempo total dedicado a diversas actividades. La invariante suma-unidad implica que, aunque puede haber k≥2 componentes a cada observación, sólo hay k−1 valores funcionalmente independientes. (Geométricamente, las observaciones se encuentran en un k−1 -simplex de dimensiones en k -espacio euclidiano de dimensiones Rk . Esta simplicidad se manifiesta en las formas triangulares de los gráficos de dispersión de los datos simulados que se muestran a continuación).
Normalmente, las distribuciones de los componentes se vuelven más "agradables" cuando se transforman en logaritmos. Esta transformación puede escalarse dividiendo todos los valores de una observación por su media geométrica antes de tomar los logaritmos. (Equivalentemente, los logaritmos de los datos de cualquier observación se centran restando su media). Esto se conoce como la transformación "Centered Log-Ratio", o CLR. Los valores resultantes siguen estando dentro de un hiperplano en Rk porque el escalado hace que la suma de los logaritmos sea cero. El ILR consiste en elegir cualquier base ortonormal para este hiperplano: el k−1 Las coordenadas de cada observación transformada se convierten en sus nuevos datos. De forma equivalente, el hiperplano se gira (o se refleja) para que coincida con el plano con fuga kth y se utiliza la primera k−1 coordenadas. (Como las rotaciones y las reflexiones conservan la distancia, son isometrías de ahí el nombre de este procedimiento).
Tsagris, Preston y Wood afirman que "una elección estándar de [la matriz de rotación] H es la submatriz de Helmert obtenida al eliminar la primera fila de la matriz de Helmert".
La matriz de Helmert de orden k se construye de manera sencilla (véase Harville p. 86, por ejemplo). Su primera fila es toda 1 s. La siguiente fila es una de las más sencillas que puede hacerse ortogonal a la primera fila, a saber (1,−1,0,…,0) . Fila j es uno de los más sencillos que es ortogonal a todas las filas precedentes: su primera j−1 las entradas son 1 s, lo que garantiza que es ortogonal a las filas 2,3,…,j−1 y su jth la entrada se establece en 1−j para que sea ortogonal a la primera fila (es decir, sus entradas deben sumar cero). A continuación, todas las filas se reescalan a la unidad de longitud.
Aquí, para ilustrar el patrón, está el 4×4 Matriz de Helmert antes de que sus filas hayan sido reescaladas:
(11111−10011−20111−3).
(Edición añadida en agosto de 2017) Un aspecto especialmente agradable de estos "contrastes" (que se leen fila a fila) es su interpretabilidad. La primera fila se elimina, dejando k−1 las filas restantes para representar los datos. La segunda fila es proporcional a la diferencia entre la segunda variable y la primera. La tercera fila es proporcional a la diferencia entre la tercera variable y las dos primeras. En general, la fila j ( 2≤j≤k ) refleja la diferencia entre la variable j y todas las que le preceden, las variables 1,2,…,j−1 . Esto deja la primera variable j=1 como "base" para todos los contrastes. Estas interpretaciones me han resultado útiles al seguir el ILR mediante el Análisis de Componentes Principales (ACP): permite interpretar las cargas, al menos de forma aproximada, en términos de comparaciones entre las variables originales. He insertado una línea en el R
aplicación de ilr
que da a las variables de salida nombres adecuados para ayudar a esta interpretación. (Fin de la edición.)
Desde R
proporciona una función contr.helmert
para crear tales matrices (aunque sin el escalado, y con filas y columnas negadas y transpuestas), ni siquiera tienes que escribir el (simple) código para hacerlo. Usando esto, implementé el ILR (ver abajo). Para ejercitarlo y probarlo, generé 1000 extracciones independientes de una distribución Dirichlet (con parámetros 1,2,3,4 ) y trazamos su matriz de dispersión. Aquí, k=4 .
![Figure_1]()
Todos los puntos se agrupan cerca de las esquinas inferiores izquierdas y llenan parches triangulares de sus áreas de trazado, como es característico de los datos de composición.
Su ILR tiene sólo tres variables, de nuevo trazadas como una matriz de dispersión:
![Figure_2]()
En efecto, el aspecto es más bonito: los gráficos de dispersión han adquirido formas más características de "nube elíptica", que se adaptan mejor a los análisis de segundo orden, como la regresión lineal y el ACP.
Tsagris y otros. generalizar el CLR utilizando una transformación Box-Cox, que generaliza el logaritmo. (El logaritmo es una transformación Box-Cox con parámetro 0 .) Es útil porque, como argumentan los autores (correctamente en mi opinión), en muchas aplicaciones los datos deberían determinar su transformación. Para estos datos de Dirichlet un parámetro de 1/2 (que está a medio camino entre la no transformación y la transformación logarítmica) funciona de maravilla:
![Figure_3]()
"Hermoso" se refiere a la simple descripción que permite esta imagen: en lugar de tener que especificar la ubicación, la forma, el tamaño y la orientación de cada nube de puntos, sólo tenemos que observar que (con una excelente aproximación) todas las nubes son circulares con radios similares. En efecto, el CLR ha simplificado una descripción inicial que requería al menos 16 números en una que sólo requiere 12 números y el ILR ha reducido eso a sólo cuatro números (tres ubicaciones univariantes y un radio), al precio de especificar el parámetro ILR de 1/2 --un quinto número. Cuando estas simplificaciones dramáticas ocurren con datos reales, normalmente pensamos que estamos en algo: hemos hecho un descubrimiento o ha conseguido un la perspicacia.
Esta generalización se aplica en el ilr
función de abajo. El comando para producir estas variables "Z" era simplemente
z <- ilr(x, 1/2)
Una ventaja de la transformación de Box-Cox es su aplicabilidad a las observaciones que incluyen verdaderos ceros: sigue estando definida siempre que el parámetro sea positivo.
Referencias
Michail T. Tsagris, Simon Preston y Andrew T.A. Wood, Una transformación de potencia basada en datos para los datos de composición . arXiv:1106.1451v2 [stat.ME] 16 de junio de 2011.
David A. Harville, Álgebra matricial desde la perspectiva del estadístico . Springer Science & Business Media, 27 de junio de 2008.
Aquí está el 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)