¿Puedo usar el CLR (transformación centrada de la relación logarítmica) para preparar datos para PCA?

13

Estoy usando un script Es para registros centrales. Tengo un marco de datos que muestra las diferentes composiciones elementales en las columnas en una profundidad determinada (en la primera columna). Quiero realizar un PCA con él y estoy confundido sobre el método de estandarización que tengo que elegir.

¿Alguno de ustedes ha usado el clr()para preparar sus datos para el prcomp()? ¿O adultera mis soluciones? Intenté usar los clr()datos antes de usar la prcomp()función además de usar la escala de atributos en prcomp().

data_f_clr<- clr(data_f)
data_pca <- prcomp(data_f, center = TRUE, scale. = TRUE)

https://stat.ethz.ch/R-manual/R-devel/library/stats/html/prcomp.html

scale se describe para escalar los datos, por lo que tienen una varianza unitaria. Dado que mis datos tienen una escala muy diferente que es lo que quería, creo. El problema es que recibo una solución diferente, cuando uso el código anterior o cuando omito el clr()(lo que produce el resultado más deseado). Pero quiero saber por qué es clr()inquietante en ese caso.

Tirano saurio Rex
fuente
2
Para usuarios que no son R como yo, podría ser útil aclarar qué clrhace ...
Dougal
3
Por supuesto, el CLR cambia las soluciones. ¿Por qué otra razón usaría este procedimiento? Quizás debería preguntar cómo determinar qué enfoque es mejor. Puede encontrar publicaciones útiles buscando en nuestro sitio CLR . En una respuesta a una pregunta relacionada , proporcioné algunas ilustraciones que podrían ayudarlo.
whuber
1
La respuesta rápida es que puede hacer lo que quiera con los datos antes de PCA. No hay edictos, leyes o recetas que gobiernen esto. Algunos sostienen que PCA (sin rotación) es invariante de escala, mientras que otros sostienen que los resultados de un PCA son muy sensibles a la escala. Pero si rota los resultados de la PCA, entonces las reglas generales obligan a la normalización previa a la PCA, como CLR o la estandarización para significar = 0 y SD = 1. Una gran discusión sobre CLR se encuentra en el libro Market Lee Analysis de Lee Cooper ( anderson.ucla.edu/faculty/lee.cooper/MCI_Book/BOOKI2010.pdf ) que lo vincula al análisis de componentes.
Mike Hunter
2
@DJohnson Busqué en el pdf vinculado varias palabras en CLR y la transformación centrada de la relación logarítmica, pero no pude encontrar nada. ¿Qué hice mal? No hay índice en esa versión, pero los títulos de las secciones no parecen prometedores y las referencias no incluyen a John Aitchison, quien propuso esta transformación para los datos de composición. Se agradecen las referencias de página a las discusiones bajo ese o cualquier otro nombre.
Nick Cox
1
Como ya se mencionó, no hay un índice en la versión a la que se ha vinculado, así que perdóneme por no consultarlo. Gracias por la palabra clave "log-centing" de la que encuentro discusiones sobre una bestia diferente, no la transformación centrada de la relación logarítmica , de la que trata este hilo. @whuber ya dio un enlace a una discusión en este sitio. La clave es que para los datos de composición con proporciones que se suman a 1, existe la necesidad y el alcance de la transformación colectiva a un espacio diferente. Te perdiste la palabra "ratio" porque señalaba una idea diferente de la que conoces.
Nick Cox

Respuestas:

5

Sí, puede, y de hecho debería, cuando sus datos son de composición.

Aquí se puede encontrar una revisión del campo de la microbiología, que motiva a utilizar la transformación CLR seguida de PCA para analizar conjuntos de datos de microbioma (que son por definición composicionales): https://www.frontiersin.org/articles/10.3389/fmicb .2017.02224 / completo .

Archie
fuente
Desafortunadamente, ese documento es terriblemente incorrecto en muchos casos, lo cual es una pena, teniendo en cuenta que dos coautores son campeones del análisis de datos de composición.
Eli Korvigo
@EliKorvigo Ese comentario puede estar bien fundado, pero por sí solo no es útil. Si pudieras señalar una crítica publicada o al menos pública, esa crítica cambiaría la imagen.
Nick Cox
@ NickCox seguro, hay un artículo de Filzmoser y Hron . No es una crítica directa al documento mencionado anteriormente, pero argumenta en contra del uso de CLR para el análisis de correlación, mientras que el artículo mencionado recomienda herramientas basadas en CLR.
Eli Korvigo
@ NickCox Me gustaría enfatizar mi profundo respeto por el Dr. Pawlowsky-Glahn y el Dr. Egozcue, quienes son los últimos dos autores del artículo mencionado por Archie. De hecho, han introducido ILR para abordar las deficiencias de CLR (Egozcue y Pawlowsky-Glahn, 2003) . Refiriéndose a CLR escriben: "Sin embargo, las referencias ortogonales en ese subespacio no se obtienen de manera directa" .
Eli Korvigo
Pawlowsky-Glahn y Egozcue afirman en "Datos de composición y su análisis: una introducción" (2006) que los coeficientes clr "tienen ciertas ventajas: la expresión es simétrica en las partes y estas coordenadas reducen el cálculo de las distancias de Aitchison a distancias ordinarias. útil en el cálculo de bi-
plot
5

Puede experimentar algunos problemas con PCA de vainilla en las coordenadas CLR. Hay dos problemas principales con los datos de composición:

  • son estrictamente no negativos
  • tienen una restricción de suma

Diversas transformaciones compositivas abordan uno o ambos de estos problemas. En particular, CLR transforma sus datos tomando el registro de la relación entre las frecuencias observadas x su media geométrica G(x) , es decir

x^={log(x1G(x)),,log(xnG(x))}={log(x1)log(G(x)),,log(xn)log(G(x))}

Ahora, considera eso

log(G(x))=log(exp[1ni=1nlog(xi)])=E[log(x)]

x^=[log(x)E[log(x)]]=0

En otras palabras, CLR elimina la restricción del rango de valores (que es buena para algunas aplicaciones), pero no elimina la restricción de suma, lo que resulta en una matriz de covarianza singular, que efectivamente rompe (M) ANOVA / regresión lineal / ... y hace PCA sensible a los valores atípicos (porque la estimación de covarianza robusta requiere una matriz de rango completo). Hasta donde sé, de todas las transformaciones compositivas, solo ILR aborda ambos problemas sin ningún supuesto subyacente importante. Sin embargo, la situación es un poco más complicada. Las coordenadas SVD de CLR le brindan una base ortogonal en el espacio ILR (las coordenadas ILR abarcan un hiperplano en CLR), por lo que sus estimaciones de varianza no diferirán entre ILR y CLR (eso es obviamente obvio, porque ILR y CLR son isometrías en el simplex). Sin embargo, existen métodos para la estimación robusta de covarianza en las coordenadas ILR [2].

Actualización I

Solo para ilustrar que CLR no es válido para la correlación y los métodos dependientes de la ubicación. Supongamos que muestreamos una comunidad de tres componentes linealmente independientes distribuidos normalmente 100 veces. En aras de la simplicidad, deje que todos los componentes tengan las mismas expectativas (100) y variaciones (100):

In [1]: import numpy as np

In [2]: from scipy.stats import linregress

In [3]: from scipy.stats.mstats import gmean

In [4]: def clr(x):
   ...:     return np.log(x) - np.log(gmean(x))
   ...: 

In [5]: nsamples = 100

In [6]: samples = np.random.multivariate_normal(
   ...:     mean=[100]*3, cov=np.eye(3)*100, size=nsamples
   ...: ).T

In [7]: transformed = clr(samples)

In [8]: np.corrcoef(transformed)
Out[8]: 
array([[ 1.        , -0.59365113, -0.49087714],
       [-0.59365113,  1.        , -0.40968767],
       [-0.49087714, -0.40968767,  1.        ]])

In [9]: linregress(transformed[0], transformed[1])
Out[9]: LinregressResult(
   ...:     slope=-0.5670, intercept=-0.0027, rvalue=-0.5936, 
   ...:     pvalue=7.5398e-11, stderr=0.0776
   ...: )

Actualización II

Teniendo en cuenta las respuestas que recibí, considero necesario señalar que en ningún momento de mi respuesta he dicho que PCA no funciona en datos transformados por CLR. He declarado que CLR puede romper PCA de maneras sutiles , lo que podría no ser importante para la reducción de la dimensionalidad, pero es importante para el análisis exploratorio de datos. El artículo citado por @Archie cubre la ecología microbiana. En ese campo de la biología computacional, PCA o PCoA en varias matrices de distancia se utilizan para explorar fuentes de variación en los datos. Mi respuesta solo debe considerarse en este contexto. Además, esto se destaca en el propio documento:

... El biplot composicional [nota: refiriéndose a PCA] tiene varias ventajas sobre los gráficos de coordenadas principales (PCoA) para el análisis de diversidad β. Los resultados obtenidos son muy estables cuando los datos están subconjuntos (Bian et al., 2017), lo que significa que el análisis exploratorio no se debe simplemente a las relaciones de ausencia de presencia en los datos ni a la escasez excesiva (Wong et al., 2016; Morton et al., 2017).

Gloor et al., 2017

Actualización III

Referencias adicionales a investigaciones publicadas (agradezco a @Nick Cox por la recomendación de agregar más referencias):

  1. Argumentos en contra del uso de CLR para PCA
  2. Argumentos en contra del uso de CLR para métodos basados ​​en correlación
  3. Introducción a ILR
Eli Korvigo
fuente
2
¡Una matriz de covarianza singular no es un problema para pca!
kjetil b halvorsen 18/0618
@kjetilbhalvorsen, de hecho, PCA per se no requiere que la matriz sea de rango completo. Técnicamente hablando, una matriz de covarianza singular solo dará como resultado uno o más valores propios cero. Sin embargo, las personas suelen aplicar PCA para explorar las fuentes de variación, que es donde entra en juego la composición. Por eso he sido bastante cuidadoso con mi redacción: "... efectivamente rompe PCA / ... de muchas maneras sutiles "
Eli Korvigo
Entonces, ¿quiere decir que debido a la singularidad no se puede calcular la cantidad de varianza que se explica por componente? Aparte de eso, todavía se puede realizar PCA para realizar la reducción de dimensionalidad. ¿Cómo afecta esto a ANOVA / regresión lineal?
Archie
1
+1 porque la respuesta es muy interesante. Sin embargo, no va sin críticas. Aparentemente (para mí, estúpido) no explicaste precisamente por qué hacer PCA en datos compositivos o transformados por clr es incorrecto "de manera sutil" (¿qué? ¿Cómo?). Además, está dando un código de Python pero no sus resultados. ¿Puedes mostrar y comentar sus resultados? Finalmente, ¿podría dejar un enlace sobre ILR transfotm para leer?
ttnphns
1
@ttnphns 1) como he escrito en los comentarios, CLR no elimina la distorsión de las fuentes de varianza introducidas por el cierre de la composición, lo que afecta el análisis de datos exploratorios: la estimación de covarianza robusta requiere una matriz de rango completo; 2) No estoy seguro de seguir, por qué dice que no hay resultados: esa es una sesión interactiva de Python con entradas y salidas (es decir, resultados); 3) He agregado una referencia para ILR.
Eli Korvigo