Posso usar o CLR (transformação de razão de log centralizada) para preparar dados para o PCA?

13

Eu estou usando um script. É para registros principais. Eu tenho um quadro de dados que mostra as diferentes composições elementares nas colunas em uma determinada profundidade (na primeira coluna). Quero executar um PCA com ele e estou confuso sobre o método de padronização que tenho que escolher.

Alguém de vocês usou o clr()para preparar seus dados para o prcomp()? Ou adulteram minhas soluções. Eu tentei usar os clr()dados antes de usar a prcomp()função, além de usar a escala de atributo em 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

é descrita para dimensionar os dados, para que eles tenham variação de unidade. Como meus dados têm uma escala muito diferente do que eu queria, eu acho. O problema é que eu recebo uma solução diferente quando uso o código acima ou quando pulo o clr()(que faz o resultado mais desejado). Mas quero saber por que isso é clr()perturbador nesse caso?

T.rex
fonte
2
Para usuários não-R como eu, que poderia ser útil para esclarecer o que clrfaz ....
Dougal
3
É claro que o CLR altera as soluções - por que mais você usaria esse procedimento? Talvez você deva perguntar como determinar qual abordagem é melhor. Há posts úteis a serem encontrados pesquisando em nosso site por CLR . Em resposta a uma pergunta relacionada , forneci algumas ilustrações que podem ajudá-lo.
whuber
1
A resposta rápida é que você pode fazer o que quiser com os dados antes do PCA. Não há decretos, leis ou receitas governando isso. Alguns afirmam que o PCA (sem rotação) é invariável em escala, enquanto outros afirmam que os resultados de um PCA são altamente sensíveis à escala. Porém, se você alternar os resultados do PCA, as regras básicas exigirão a normalização pré-PCA, como CLR ou padronização, para significar = 0 e SD = 1. Uma ótima discussão sobre CLR está no livro de Market Share Analysis de Lee Cooper ( anderson.ucla.edu/faculty/lee.cooper/MCI_Book/BOOKI2010.pdf ) vinculando-o à análise de componentes.
Mike Hunter
2
@DJohnson Procurei no pdf vinculado por várias palavras no CLR e na transformação de razão de log centralizada, mas não consegui encontrar nada. O que eu fiz errado? Não há índice nessa versão, mas os títulos das seções não parecem promissores e as referências não incluem John Aitchison, que propôs essa transformação para dados composicionais. As referências de página a discussões com esse ou qualquer outro nome são apreciadas.
Nick Cox
1
Como já mencionado, não há nenhum índice na versão à qual você vinculou, então me desculpe por não ter consultado. Obrigado pela palavra-chave "centralização de log", da qual encontro discussões sobre um animal diferente, não a transformação de proporção de log centralizada , sobre a qual esse tópico trata. O @whuber já deu um link para uma discussão neste site. A chave é que, para dados composicionais com proporções adicionando a 1, há necessidade e espaço para transformação coletiva em um espaço diferente. Você perdeu a palavra "proporção" ao apontar para uma ideia diferente daquela que você conhece.
Nick Cox

Respostas:

5

Sim, você pode, e de fato deveria, quando seus dados são composicionais.

Uma revisão do campo da microbiologia pode ser encontrada aqui, o que motiva o uso da transformação CLR seguida pela PCA para analisar conjuntos de dados de microbiomas (que são por composição composicional): https://www.frontiersin.org/articles/10.3389/fmicb .2017.02224 / full .

Archie
fonte
Infelizmente, esse artigo está terrivelmente errado em muitos casos, o que é uma pena, considerando que dois co-autores são campeões da análise de dados composicionais.
Eli Korvigo 18/06/19
@EliKorvigo Esse comentário pode ser bem fundamentado, mas por si só não é útil. Se você pudesse apontar para uma crítica publicada ou pelo menos pública, essa crítica mudaria o cenário.
Nick Cox
@ NickCox, claro, há um artigo de Filzmoser e Hron . Não é uma crítica direta ao artigo acima mencionado, mas argumenta contra o uso do CLR para análise de correlação, enquanto o artigo acima recomenda ferramentas baseadas no CLR.
Eli Korvigo 19/06/19
@NickCox Gostaria de enfatizar meu profundo respeito pelo Dr. Pawlowsky-Glahn e pelo Dr. Egozcue, que são os dois últimos autores do artigo mencionado por Archie. De fato, eles introduziram o ILR para abordar as deficiências do CLR (Egozcue e Pawlowsky-Glahn, 2003) . Referindo-se ao CLR, eles escrevem: "No entanto, as referências ortogonais nesse subespaço não são obtidas de maneira direta" .
Eli Korvigo 19/06/19
Pawlowsky-Glahn e Egozcue afirmam em "Dados composicionais e suas análises: uma introdução" (2006) que os coeficientes clr "têm certas vantagens: a expressão é simétrica nas partes e essas coordenadas reduzem o cálculo das distâncias de Aitchison para distâncias comuns. útil no cálculo de bi-parcelas (...) "
jO.
5

Você pode ter alguns problemas com o baunilha PCA nas coordenadas CLR. Existem dois grandes problemas com dados de composição:

  • eles são estritamente não negativos
  • eles têm uma restrição de soma

Várias transformações composicionais abordam um ou ambos esses problemas. Em particular, o CLR transforma seus dados registrando a razão entre as frequências observadas x e sua média geométrica G(x) , ou seja,

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

Agora, considere isso

registro(G(x))=registro(exp[1nEu=1nregistro(xEu)])=E[registro(x)]

x^=[registro(x)-E[registro(x)]]=0 0

Em outras palavras, o CLR remove a restrição do intervalo de valores (o que é bom para algumas aplicações), mas não remove a restrição de soma, resultando em uma matriz de covariância singular, que efetivamente quebra (M) ANOVA / regressão linear / ... e faz PCA sensível a valores discrepantes (porque a estimativa robusta de covariância requer uma matriz de classificação completa). Até onde eu sei, em todas as transformações composicionais, apenas o ILR aborda os dois problemas sem nenhuma suposição subjacente importante. A situação é um pouco mais complicada, no entanto. O SVD das coordenadas CLR fornece uma base ortogonal no espaço ILR (as coordenadas ILR abrangem um hiperplano no CLR); portanto, suas estimativas de variância não diferem entre ILR e CLR (isso é obviamente óbvio, porque ILR e CLR são isometrias no simplex). No entanto, existem métodos para estimativa robusta de covariância nas coordenadas de ILR [2].

Atualização I

Apenas para ilustrar que o CLR não é válido para métodos dependentes de correlação e localização. Vamos supor que amostramos uma comunidade de três componentes normalmente distribuídos linearmente independentes 100 vezes. Por uma questão de simplicidade, permita que todos os componentes tenham expectativas iguais (100) e variações (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
   ...: )

Atualização II

Considerando as respostas que recebi, acho necessário salientar que em nenhum momento da minha resposta eu disse que o PCA não funciona em dados transformados em CLR. Afirmei que o CLR pode quebrar o PCA de maneiras sutis , o que pode não ser importante para a redução da dimensionalidade, mas é importante para a análise exploratória de dados. O artigo citado por @Archie cobre a ecologia microbiana. Nesse campo da biologia computacional, PCA ou PCoA em várias matrizes de distância são usados ​​para explorar fontes de variação nos dados. Minha resposta deve ser considerada apenas neste contexto. Além disso, isso é destacado no próprio artigo:

... O biplot composicional [nota: referente ao PCA] possui várias vantagens sobre os gráficos de coordenadas principais (PCoA) para análise de diversidade β. Os resultados obtidos são muito estáveis ​​quando os dados são subconjuntos (Bian et al., 2017), o que significa que a análise exploratória não é conduzida simplesmente pelas relações de ausência de presença nos dados nem pela escarsidade excessiva (Wong et al., 2016; Morton et al. , 2017).

Gloor et al., 2017

Atualização III

Referências adicionais à pesquisa publicada (agradeço a @Nick Cox pela recomendação de adicionar mais referências):

  1. Argumentos contra o uso do CLR para PCA
  2. Argumentos contra o uso de CLR para métodos baseados em correlação
  3. Introdução ao ILR
Eli Korvigo
fonte
2
Uma matriz de covariância singular não é um problema para o pca!
b Kjetil Halvorsen
@kjetilbhalvorsen, de fato, o PCA em si não exige que a matriz seja de classificação completa. Tecnicamente falando, uma matriz de covariância singular resultará apenas em um ou mais autovalores zero. No entanto, as pessoas geralmente aplicam o PCA para explorar fontes de variação, e é aí que a composicionalidade entra em ação. É por isso que tenho sido bastante cuidadoso com minha redação: "... efetivamente quebra o PCA / ... de muitas maneiras sutis "
Eli Korvigo
Então você quer dizer que, devido à singularidade, não é possível calcular a quantidade de variação explicada por componente? Fora isso, ainda é possível executar o PCA para realizar a redução da dimensionalidade. Como isso afeta ANOVA / regressão linear?
Archie
1
+1 porque a resposta é muito interessante. Mas isso não deixa de ser crítica. Você aparentemente (para mim, estúpido) não explicou exatamente por que fazer PCA em dados composicionais ou transformados em clr é impróprio "de maneiras sutis" (quais? Como?). Além disso, você está fornecendo um código python, mas não seus resultados. Você pode exibir e comentar seus resultados? Finalmente, você poderia deixar um link para o transfotm de ILR para ler sobre?
ttnphns
1
@ttnphns 1) como escrevi nos comentários, o CLR não remove a distorção das fontes de variação introduzidas pelo fechamento composicional, afetando a análise exploratória dos dados: a estimativa robusta da covariância requer uma matriz de classificação completa; 2) Não sei se sigo, por que você diz que não há resultados: essa é uma sessão interativa em Python com entradas e saídas (ou seja, resultados); 3) Adicionei uma referência para ILR.
Eli Korvigo