Cómo realizar la transformación isométrica de la relación logarítmica


17

Tengo datos sobre comportamientos de movimiento (tiempo de sueño, sedentario y actividad física) que suman aproximadamente 24 (como en horas por día). Quiero crear una variable que capture el tiempo relativo empleado en cada uno de estos comportamientos: me han dicho que una transformación de relación logarítmica isométrica lograría esto.

Parece que debería usar la función ilr en R, pero no puedo encontrar ningún ejemplo real con código. ¿Dónde empiezo?

Las variables que tengo son el tiempo que pasé durmiendo, el tiempo sedentario promedio, la actividad física ligera promedio promedio, la actividad física moderada promedio y la actividad física vigorosa promedio. El sueño fue autoinformado, mientras que los otros son promedios de días válidos de datos del acelerómetro. Entonces, para estas variables, los casos no suman exactamente 24.

Mi suposición: estoy trabajando en SAS, pero parece que R será mucho más fácil de usar para esta parte. Entonces, primero importe datos con solo las variables de interés. Luego use la función acomp (). Entonces no puedo entender la sintaxis de la función ilr (). Cualquier ayuda sería muy apreciada.

Respuestas:


21

La transformación ILR (Isometric Log-Ratio) se utiliza en el análisis de datos de composición. Cualquier observación dada es un conjunto de valores positivos que suman la unidad, como las proporciones de productos químicos en una mezcla o las proporciones del tiempo total dedicado a diversas actividades. La invariante de suma a la unidad implica que aunque puede haber k2 componentes en cada observación, solo hay k-1 valores funcionalmente independientes. (Geométricamente, las observaciones se encuentran en un k-1 -dimensional simplex en k -dimensional euclidean space Rk. Esta naturaleza simplicial se manifiesta en las formas triangulares de los diagramas de dispersión de los datos simulados que se muestran a continuación).

Típicamente, las distribuciones de los componentes se vuelven "más agradables" cuando se transforma el registro. Esta transformación se puede escalar dividiendo todos los valores en una observación por su media geométrica antes de tomar los registros. (De manera equivalente, los registros de los datos en cualquier observación se centran restando su media). Esto se conoce como la transformación "Relación de log centrada", o CLR. Los valores resultantes aún se encuentran dentro de un hiperplano en Rk , porque la escala causa que la suma de los registros sea cero. El ILR consiste en elegir cualquier base ortonormal para este hiperplano: las coordenadas k-1 de cada observación transformada se convierten en sus nuevos datos. De manera equivalente, el hiperplano se gira (o se refleja) para coincidir con el plano con k desapareciendokth coordenada y uno usa las primerask-1 coordenadas. (Debido a que las rotaciones y los reflejos preservan la distancia, sonisometrí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 Helmert obtenida al eliminar la primera fila de la matriz Helmert".

La matriz Helmert de orden k se construye de manera simple (ver Harville p. 86 por ejemplo). Su primera fila es todo 1 s. La siguiente fila es una de las más simples que se puede hacer ortogonal a la primera fila, a saber (1,-1,0 0,...,0 0) . La fila j es una de las más simples que es ortogonal a todas las filas anteriores: sus primeras entradas j-1 son 1 s, lo que garantiza que es ortogonal a las filas 2,3,...,j-1, y su entrada número jth se establece en 1-j para que sea ortogonal a la primera fila (es decir, sus entradas deben sumar cero). Todas las filas se reescalan a la longitud de la unidad.

Aquí, para ilustrar el patrón, está la matriz Helmert 4 4×4 4 antes de que sus filas hayan sido reescaladas:

(1111110011201113).

(Edición agregada en agosto de 2017) Un aspecto particularmente agradable de estos "contrastes" (que se leen fila por fila) es su interpretación. La primera fila se descarta, dejando k-1 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 ( 2jk ) refleja la diferencia entre la variable j y todas las que la preceden, las variables 1,2,...,j-1. Esto deja la primera variable j=1 como una "base" para todos los contrastes. He encontrado útiles estas interpretaciones cuando sigo el ILR por Análisis de Componentes Principales (PCA): permite que las cargas se interpreten, al menos aproximadamente, en términos de comparaciones entre las variables originales. He insertado una línea en la Rimplementación de ilrabajo que da a las variables de salida nombres adecuados para ayudar con esta interpretación. (Fin de la edición).

Dado que Rproporciona una función contr.helmertpara crear tales matrices (aunque sin la escala, y con filas y columnas negadas y transpuestas), ni siquiera tiene que escribir el código (simple) para hacerlo. Usando esto, implementé el ILR (ver más abajo). Para ejercitarlo y probarlo, generé 1000 sorteos independientes de una distribución de Dirichlet (con los parámetros 1,2,3,4 4 ) y tracé su matriz de diagrama de dispersión. Aquí, k=4 4 .

Figura 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 solo tres variables, nuevamente trazadas como una matriz de diagrama de dispersión:

Figura 2

De hecho, esto se ve mejor: los diagramas de dispersión han adquirido formas de "nube elíptica" más características, más adecuadas para análisis de segundo orden como la regresión lineal y PCA.

Tsagris y col. generalice el CLR utilizando una transformación Box-Cox, que generaliza el logaritmo. (El registro es una transformación de Box-Cox con el parámetro 0 0 ). Es útil porque, como argumentan los autores (correctamente en mi humilde opinión), en muchas aplicaciones los datos deberían determinar su transformación. Para estos datos Dirichlet un parámetro de 1/ /2 (que está a medio camino entre la ausencia de transformación y una transformación logarítmica) funciona de maravilla:

Figura 3

1/ /2


Esta generalización se implementa en la ilrfunción a continuación. El comando para producir estas variables "Z" era simplemente

z <- ilr(x, 1/2)

Una ventaja de la transformación Box-Cox es su aplicabilidad a las observaciones que incluyen ceros verdaderos: todavía se define siempre que el parámetro sea positivo.

Referencias

Michail T. Tsagris, Simon Preston y Andrew TA Wood, una transformación de potencia basada en datos para datos de composición . arXiv: 1106.1451v2 [stat.ME] 16 de junio de 2011.

David A. Harville, Álgebra matricial desde la perspectiva de un estadístico . Springer Science & Business Media, 27 de junio de 2008.


Aquí está el Rcó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)

1
@ Alex No entiendo lo que quieres decir con correlaciones "espurias". Sí, las variables deben ser dependientes, pero el trabajo de PCA es ayudarlo a caracterizar y cuantificar esas dependencias. Tenga en cuenta también que la suma de los CLR no es constante (a pesar de que los CLR se basan en valores que suman la unidad).
whuber

1
@Alex ¿Por qué no solo estudiar la salida de PCA? Si es complicado y desea enfocarse en solo dos variables, entonces haga PCA de esas dos variables. Un diagrama de dispersión de ellos revelará la naturaleza y el alcance de cualquier colinealidad.
whuber

1
@Alex Claro, ¡por eso uso diagramas de dispersión en esta respuesta para ilustrar el ILR!
whuber

2
@ Alex Esa es una cita interesante. Parece reflejar una filosofía que va en contra de EDA (entre otras cosas), lo que sugiere que cuando uno puede encontrar una reexpresión de variables que produce relaciones útiles o informativas, eso es algo bueno, no un problema. Los defensores de EDA (como John Tukey) argumentan que la forma en que los datos se expresan originalmente no es necesariamente la forma en que deben analizarse, mientras que esta cita supone implícitamente todo lo contrario. Te dejo decidir cuál es el enfoque más útil.
whuber

1
@Eli Ese comentario tenía la intención de referirse al CLR generalizado. Como escribí en el cuerpo de esta respuesta, "la escala causa que la suma de los registros sea cero".
whuber

5

Para su caso de uso, probablemente esté bien escalar todo a uno. El hecho de que los números no sumen exactamente a 24 agregará un poco de ruido extra a los datos, pero no debería estropear tanto las cosas.

Rre-1re

Dejando a un lado todos los detalles técnicos, es importante saber cómo interpretar adecuadamente los datos ilr transformados. Al final, la transformación ilr solo se refiere a las proporciones logarítmicas de los grupos. Pero lo define con respecto a alguna jerarquía predefinida. Si define una jerarquía como la siguiente

ingrese la descripción de la imagen aquí

cada variable transformada se puede calcular como

siyo=rsr+sEnsol(Ryo)sol(Syo)

yoRyoyoSyoyosol(...)

Entonces, la siguiente pregunta es, ¿cómo define su jerarquía de variables? Esto realmente depende de usted, pero si tiene tres variables, no hay demasiadas combinaciones con las que meterse. Por ejemplo, podría definir la jerarquía como

                        /-A
            /(A|B)-----|
-(AB|C)----|            \-B
           |
            \-C

ABC(A|B)UN si12EnUNsi(UNsiEl |C)UNsiC23EnUNsiC

Pero volviendo a su pregunta original, ¿cómo puede usar esta información para realizar realmente la transformación ilr?

Si está utilizando R, verificaría el paquete de composiciones

Para usar ese paquete, necesitará comprender cómo crear una partición binaria secuencial (SBP), que es cómo define la jerarquía. Para la jerarquía definida anteriormente, puede representar el SBP con la siguiente matriz.

        A  B  C
(A|B)   1 -1  0
(AB|C)  1  1 -1

donde los valores positivos representan las variables en el numerador, los valores negativos representan las variables en el denominador y los ceros representan la ausencia de esa variable en el balance. Puede construir la base ortonormal utilizando balanceBaseel SBP que definió.
Una vez que tenga esto, debería poder pasar su tabla de proporciones junto con la base que calculó anteriormente.

Verificaría esta referencia para la definición original de saldos


4

Las publicaciones anteriores responden a la pregunta sobre cómo construir una base de ILR y obtener sus saldos de ILR. Para agregar a esto, la elección de qué base puede facilitar la interpretación de sus resultados.

Puede interesarle en una partición la siguiente partición:

(1) (sueño, sedentario | actividad física) (2) (sueño | sedentario).

Como tiene tres partes en su composición, obtendrá dos saldos ILR para analizar. Al configurar la partición como arriba, puede obtener saldos correspondientes a "activo o no" (1) y "qué forma de inactividad" (2).

Si analiza cada saldo de ILR por separado, por ejemplo, realiza una regresión contra la hora del día o la época del año para ver si hay algún cambio, puede interpretar los resultados en términos de cambios en "activo o no" y cambios en "Qué forma de inactividad".

Si, por otro lado, realizará técnicas como PCA que obtienen una nueva base en el espacio ILR, sus resultados no dependerán de su elección de partición. Esto se debe a que sus datos existen en el espacio CLR, el plano D-1 ortogonal al vector único y los equilibrios ILR son diferentes opciones de ejes de unidad-norma para describir la posición de los datos en el plano CLR.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.