Posso usare il CLR (trasformazione centrata del rapporto log) per preparare i dati per PCA?


13

Sto usando una sceneggiatura. È per i record di base. Ho un dataframe che mostra le diverse composizioni elementali nelle colonne su una data profondità (nella prima colonna). Voglio eseguire un PCA con esso e sono confuso riguardo al metodo di standardizzazione che devo scegliere.

Qualcuno di voi ha usato il clr()per preparare i dati per il prcomp()? O adultera le mie soluzioni. Ho provato a utilizzare i clr()dati prima di utilizzare la prcomp()funzione oltre a utilizzare la scala degli attributi in 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

la scala è descritta per ridimensionare i dati, quindi hanno una varianza unitaria. Dal momento che i miei dati hanno una scala molto diversa che è quello che volevo, penso. Il problema è che ricevo una soluzione diversa, quando uso il codice sopra o quando salto il clr()(che rende il risultato più desiderato). Ma voglio sapere perché è clr()inquietante in quel caso?


2
Per gli utenti non R come me, potrebbe essere utile chiarire cosa clrfa ....
Dougal,

3
Naturalmente il CLR cambia le soluzioni - perché altrimenti dovresti usare questa procedura? Forse dovresti chiedere come determinare quale approccio è migliore. Ci sono post utili che puoi trovare cercando CLR sul nostro sito . In una risposta a una domanda correlata ho fornito alcune illustrazioni che potrebbero aiutarti.
whuber

1
La risposta rapida è che puoi fare tutto quello che vuoi con i dati prima del PCA. Non ci sono editti, leggi o ricette che regolano questo. Alcuni sostengono che il PCA (senza rotazione) è invariante per la scala, mentre altri sostengono che i risultati di un PCA sono altamente sensibili alla scala. Ma se si ruotano i risultati di PCA, le regole del mandato preliminare pre-PCA si normalizzano come CLR o standardizzano in media = 0 e SD = 1. Una grande discussione sul CLR è nel libro Market Cooper Analysis di Lee Cooper ( anderson.ucla.edu/faculty/lee.cooper/MCI_Book/BOOKI2010.pdf ) che lo collega all'analisi dei componenti.
Mike Hunter,

2
@DJohnson Ho cercato nel pdf collegato varie parole in CLR e trasformato il rapporto log-center ma non ho trovato nulla. Che cosa ho fatto di sbagliato? Non esiste un indice in quella versione, ma i titoli delle sezioni non sembrano promettenti e i riferimenti non includono John Aitchison che ha proposto questa trasformazione per i dati compositivi. Pagina fa riferimento a discussioni con questo o qualsiasi altro nome apprezzato.
Nick Cox,

1
Come già accennato, non esiste un indice nella versione a cui sei collegato, quindi perdonami per non essere stato a consultarlo. Grazie per la parola chiave "log-centering" da cui trovo le discussioni su una bestia diversa, non la trasformazione centrata del rapporto log , di cui tratta questa discussione. @whuber ha già fornito un collegamento a una discussione su questo sito. La chiave è che per i dati di composizione con proporzioni che si aggiungono a 1, c'è bisogno e possibilità di trasformazione collettiva in uno spazio diverso. Ti sei perso la parola "rapporto" come indicando un'idea diversa da quella che conosci.
Nick Cox,

Risposte:


5

Sì, puoi, e infatti dovresti, quando i tuoi dati sono composizionali.

Una recensione dal campo della microbiologia può essere trovata qui, che motiva a usare la trasformazione CLR seguita da PCA per analizzare i set di dati del microbioma (che sono per definizione compositivi): https://www.frontiersin.org/articles/10.3389/fmicb .2017.02224 / completo .


Sfortunatamente, quel documento è terribilmente sbagliato in molti casi, il che è un peccato, considerando che due coautori sono campioni dell'analisi dei dati compositivi.
Eli Korvigo,

@EliKorvigo Quel commento può essere fondato ma da solo non è utile. Se potessi indicare una critica pubblicata o almeno pubblica, tale critica cambierebbe il quadro.
Nick Cox,

@NickCox certo, c'è un articolo di Filzmoser e Hron . Non è una critica diretta del documento sopra citato, ma si oppone all'utilizzo del CLR per l'analisi di correlazione, mentre il documento summenzionato raccomanda strumenti basati sul CLR.
Eli Korvigo,

@NickCox Vorrei sottolineare il mio profondo rispetto per il Dr. Pawlowsky-Glahn e il Dr. Egozcue, che sono gli ultimi due autori dell'articolo menzionato da Archie. In effetti, hanno introdotto ILR per affrontare le carenze di CLR (Egozcue e Pawlowsky-Glahn, 2003) . Riferendosi al CLR scrivono: "Tuttavia, i riferimenti ortogonali in quel sottospazio non sono ottenuti in modo semplice" .
Eli Korvigo,

Pawlowsky-Glahn ed Egozcue dichiarano in "Dati composizionali e loro analisi: un'introduzione" (2006) che i coefficienti di clr "presentano alcuni vantaggi: l'espressione è simmetrica nelle parti e queste coordinate riducono il calcolo delle distanze di Aitchison a distanze ordinarie. utile nel calcolo di bi-grafici (...) "
jO.

5

Potrebbero verificarsi alcuni problemi con PCA vaniglia sulle coordinate CLR. Esistono due problemi principali con i dati di composizione:

  • sono rigorosamente non negativi
  • hanno un vincolo di somma

Varie trasformazioni compositive affrontano uno o entrambi questi problemi. In particolare, CLR trasforma i tuoi dati prendendo il registro del rapporto tra le frequenze osservate x e la loro media geometrica G(x) , cioè

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

Ora, consideralo

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

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

In altre parole, CLR rimuove la restrizione dell'intervallo di valori (che è buono per alcune applicazioni), ma non rimuove il vincolo di somma, risultando in una matrice di covarianza singolare, che rompe effettivamente (M) ANOVA / regressione lineare / ... e rende PCA sensibile ai valori anomali (poiché una solida stima della covarianza richiede una matrice full-rank). Per quanto ne so, di tutte le trasformazioni compositive solo l'ILR affronta entrambe le questioni senza ipotesi di fondo. La situazione è un po 'più complicata, però. SVD delle coordinate CLR ti fornisce una base ortogonale nello spazio ILR (le coordinate ILR coprono un iperpiano in CLR), quindi le tue stime di varianza non differiranno tra ILR e CLR (questo è ovviamente ovvio, perché sia ​​ILR che CLR sono isometrie sulla simplex). Esistono, tuttavia, metodi per la stima robusta della covarianza sulle coordinate ILR [2].

Aggiornamento I.

Giusto per illustrare che CLR non è valido per i metodi di correlazione e dipendenti dalla posizione. Supponiamo di campionare 100 volte una comunità di tre componenti distribuiti normalmente linearmente indipendenti. Per semplicità, lascia che tutti i componenti abbiano pari aspettative (100) e varianze (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
   ...: )

Aggiornamento II

Considerando le risposte che ho ricevuto, trovo necessario sottolineare che in nessun momento della mia risposta ho detto che PCA non funziona su dati trasformati con CLR. Ho affermato che CLR può interrompere la PCA in modi sottili , il che potrebbe non essere importante per la riduzione della dimensionalità, ma è importante per l'analisi dei dati esplorativi. L'articolo citato da @Archie tratta l'ecologia microbica. In quel campo della biologia computazionale, PCA o PCoA su varie matrici a distanza vengono utilizzati per esplorare le fonti di variazione dei dati. La mia risposta dovrebbe essere considerata solo in questo contesto. Inoltre, questo è evidenziato nel documento stesso:

... Il biplot compositivo [nota: riferendosi alla PCA] presenta numerosi vantaggi rispetto ai principali grafici coordinati (PCoA) per l'analisi della β-diversità. I risultati ottenuti sono molto stabili quando i dati sono un sottoinsieme (Bian et al., 2017), il che significa che l' analisi esplorativa non è guidata semplicemente dalle relazioni di assenza di presenza nei dati né da eccessiva scarsità (Wong et al., 2016; Morton et al., 2017).

Gloor et al., 2017

Aggiornamento III

Ulteriori riferimenti alla ricerca pubblicata (ringrazio @ Nick Cox per la raccomandazione di aggiungere altri riferimenti):

  1. Argomenti contro l'utilizzo di CLR per PCA
  2. Argomenti contro l'utilizzo di CLR per metodi basati sulla correlazione
  3. Introduzione a ILR

2
Una matrice di covarianza singolare non è un problema per PCA!
kjetil b halvorsen,

@kjetilbhalvorsen in effetti, PCA di per sé non richiede che la matrice sia al livello massimo. Tecnicamente parlando, una singola matrice di covarianza si tradurrà in uno o più zero autovalori. Tuttavia, le persone di solito applicano il PCA per esplorare le fonti di varianza, che è dove entra in gioco la composizionalità. Ecco perché sono stato piuttosto attento con la mia formulazione: "... rompe efficacemente il PCA / ... in molti modi sottili "
Eli Korvigo

Quindi vuoi dire che a causa della singolarità non è possibile calcolare la quantità di varianza spiegata per componente? Oltre a ciò, è ancora possibile eseguire PCA per eseguire la riduzione della dimensionalità. In che modo ciò influisce quindi sulla regressione lineare / ANOVA?
Archie,

1
+1 perché la risposta è molto interessante. Non passa senza critiche, però. Apparentemente (per me stupido) non hai spiegato con precisione perché fare PCA su dati di composizione o trasformati da clr sia improprio "in modi sottili" (quale? Come?). Inoltre, stai fornendo un codice Python ma non i suoi risultati. Puoi visualizzare e commentare i suoi risultati? Infine, potresti lasciare un link su ILR transfotm, di cui leggere?
ttnphns,

1
@ttnphns 1) come ho scritto nei commenti, CLR non rimuove la distorsione delle fonti di varianza introdotte dalla chiusura compositiva, influenzando l'analisi dei dati esplorativi: una solida stima della covarianza richiede una matrice di rango pieno; 2) Non sono sicuro di seguire, perché dici che non ci sono risultati: quella è una sessione interattiva di Python con input e output (cioè risultati); 3) Ho aggiunto un riferimento per ILR.
Eli Korvigo,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.