Bisakah saya menggunakan CLR (transformasi log-rasio terpusat) untuk menyiapkan data untuk PCA?

13

Saya menggunakan skrip. Ini untuk catatan inti. Saya memiliki kerangka data yang menunjukkan komposisi unsur yang berbeda di dalam kolom di atas kedalaman tertentu (di kolom pertama). Saya ingin melakukan PCA dengannya dan saya bingung tentang metode standardisasi yang harus saya pilih.

Apakah ada di antara Anda yang menggunakan clr()untuk menyiapkan data Anda prcomp()? Atau apakah itu memalsukan solusi saya. Saya telah mencoba menggunakan clr()pada data sebelum menggunakan prcomp()fungsi selain menggunakan skala atribut dalam 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

skala dideskripsikan untuk menskala data, sehingga mereka memiliki varian unit. Karena data saya memiliki skala yang sangat berbeda, itulah yang saya inginkan, saya pikir. Masalahnya adalah, saya menerima solusi yang berbeda, ketika saya menggunakan kode di atas atau ketika saya melewatkan clr()(yang membuat hasil yang lebih diinginkan). Tapi saya ingin tahu mengapa hal itu clr()mengganggu?

T.rex
sumber
2
Untuk pengguna non-R seperti saya, mungkin akan membantu untuk mengklarifikasi apa clr....
Dougal
3
Tentu saja CLR mengubah solusi - mengapa Anda menggunakan prosedur ini? Mungkin Anda harus bertanya bagaimana menentukan pendekatan mana yang lebih baik. Ada posting berguna yang dapat ditemukan dengan mencari CLR di situs kami . Dalam menjawab pertanyaan terkait, saya memberikan beberapa ilustrasi yang dapat membantu Anda.
whuber
1
Jawaban cepatnya adalah Anda dapat melakukan apa pun yang Anda inginkan dengan data sebelum PCA. Tidak ada fatwa, hukum atau resep yang mengatur hal ini. Beberapa berpendapat bahwa PCA (tanpa rotasi) adalah skala invarian, sementara yang lain berpendapat bahwa hasil PCA sangat sensitif terhadap skala. Tetapi jika Anda memutar hasil PCA maka aturan mandat sebelum pra-PCA normalisasi seperti CLR atau standardisasi berarti = 0 dan SD = 1. Diskusi hebat CLR ada dalam buku Lee Cooper's Market Share Analysis ( anderson.ucla.edu/faculty/lee.cooper/MCI_Book/BOOKI2010.pdf ) mengaitkannya dengan analisis komponen.
Mike Hunter
2
@ Johnson Saya mencari pdf yang terhubung dengan berbagai kata dalam CLR dan transformasi log-rasio terpusat tetapi tidak dapat menemukan apa pun. Apa kesalahan yang telah aku perbuat? Tidak ada indeks dalam versi itu, tetapi judul bagian tidak terlihat menjanjikan dan referensi tidak termasuk John Aitchison yang mengusulkan transformasi ini untuk data komposisi. Referensi halaman untuk diskusi dengan nama itu atau nama lain apa pun dihargai.
Nick Cox
1
Seperti yang telah disebutkan, tidak ada indeks dalam versi yang Anda tautkan, jadi maafkan saya karena tidak berkonsultasi dengannya. Terima kasih untuk kata kunci "log-centering" dari mana saya menemukan diskusi tentang binatang buas yang berbeda, bukan transformasi log-rasio terpusat , yang menjadi topik utas ini. @whuber sudah memberikan tautan ke diskusi di situs ini. Kuncinya adalah bahwa untuk data komposisi dengan proporsi ditambahkan ke 1, ada kebutuhan dan ruang lingkup untuk transformasi kolektif ke ruang yang berbeda. Anda melewatkan kata "rasio" sebagai menunjuk ke ide yang berbeda dari yang Anda tahu.
Nick Cox

Jawaban:

5

Ya Anda bisa, dan sebenarnya Anda harus, ketika data Anda bersifat komposisi.

Ulasan dari bidang mikrobiologi dapat ditemukan di sini, yang memotivasi untuk menggunakan CLR-transformasi diikuti oleh PCA untuk menganalisis set data microbiome (yang sesuai definisi komposisi): https://www.frontiersin.org/articles/10.3389/fmicb .2017.02224 / penuh .

Archie
sumber
Sayangnya, makalah itu sangat salah dalam banyak kasus, yang sangat disayangkan, mengingat bahwa dua penulis bersama adalah juara analisis data komposisi.
Eli Korvigo
@EliKorvigo Komentar itu mungkin beralasan tetapi dengan sendirinya tidak membantu. Jika Anda dapat menunjuk pada kritik yang dipublikasikan atau setidaknya publik, kritik semacam itu akan mengubah gambarannya.
Nick Cox
@NickCox yakin, ada makalah dari Filzmoser dan Hron . Ini bukan kritik langsung dari makalah yang disebutkan di atas, tetapi ia menentang penggunaan CLR untuk analisis korelasi, sedangkan makalah yang disebutkan di atas merekomendasikan alat yang didasarkan pada CLR.
Eli Korvigo
@NickCox Saya ingin menekankan rasa hormat saya yang dalam kepada Dr. Pawlowsky-Glahn dan Dr. Egozcue, yang merupakan dua penulis terakhir dari makalah yang disebutkan oleh Archie. Bahkan, mereka telah memperkenalkan ILR untuk mengatasi kekurangan CLR (Egozcue dan Pawlowsky-Glahn, 2003) . Mengacu pada CLR mereka menulis: "Namun demikian, referensi ortogonal dalam subruang itu tidak diperoleh secara langsung" .
Eli Korvigo
Pawlowsky-Glahn dan Egozcue menyatakan dalam "Data komposisi dan analisisnya: pengantar" (2006) bahwa koefisien clr "memiliki kelebihan tertentu: ekspresi simetris di bagian-bagian dan koordinat ini mengurangi perhitungan jarak Aitchison ke jarak biasa. berguna dalam perhitungan bi-plot (...) "
jO.
5

Anda mungkin mengalami beberapa masalah dengan vanilla PCA pada koordinat CLR. Ada dua masalah utama dengan data komposisi:

  • mereka sepenuhnya non-negatif
  • mereka memiliki batasan jumlah

xG(x)

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

Sekarang, pertimbangkan itu

catatan(G(x))=catatan(exp[1nsaya=1ncatatan(xsaya)])=E[catatan(x)]

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

Dengan kata lain CLR menghapus batasan rentang nilai (yang baik untuk beberapa aplikasi), tetapi tidak menghilangkan batasan jumlah, menghasilkan matriks kovarians tunggal, yang secara efektif memecah (M) ANOVA / regresi linier / ... dan membuat PCA peka terhadap outlier (karena estimasi kovarian yang kuat membutuhkan matriks peringkat penuh). Sejauh yang saya tahu, dari semua transformasi komposisi hanya ILR mengatasi kedua masalah tanpa asumsi mendasar yang mendasarinya. Tapi situasinya sedikit lebih rumit. SVD dari koordinat CLR memberi Anda dasar ortogonal dalam ruang ILR (koordinat ILR menjangkau hyperplane dalam CLR), sehingga estimasi varians Anda tidak akan berbeda antara ILR dan CLR (yang tentu saja jelas, karena baik ILR dan CLR adalah isometri pada simpleks). Namun, ada metode untuk estimasi kovarian yang kuat pada koordinat ILR [2].

Perbarui I

Hanya untuk menggambarkan bahwa CLR tidak valid untuk metode korelasi dan tergantung lokasi. Mari kita asumsikan kita mencicipi sebuah komunitas yang terdiri dari tiga komponen yang berdistribusi normal linier independen 100 kali. Demi kesederhanaan, biarkan semua komponen memiliki harapan yang sama (100) dan varian (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
   ...: )

Pembaruan II

Mempertimbangkan tanggapan yang saya terima, saya merasa perlu untuk menunjukkan bahwa tidak ada jawaban dalam jawaban saya, saya telah mengatakan bahwa PCA tidak bekerja pada data yang diubah oleh CLR. Saya telah menyatakan bahwa CLR dapat memecahkan PCA dengan cara yang halus , yang mungkin tidak penting untuk pengurangan dimensi, tetapi penting untuk analisis data eksplorasi. Makalah yang dikutip oleh @Archie ini membahas ekologi mikroba. Dalam bidang itu biologi PCA komputasi atau PCoA pada berbagai matriks jarak digunakan untuk mengeksplorasi sumber variasi dalam data. Jawaban saya hanya harus dipertimbangkan dalam konteks ini. Selain itu, ini disorot dalam makalah itu sendiri:

... biplot komposisi [catatan: mengacu pada PCA] memiliki beberapa keunggulan dibandingkan plot koordinat utama (PCoA) untuk analisis β-diversity. Hasil yang diperoleh sangat stabil ketika data adalah subset (Bian et al., 2017), yang berarti bahwa analisis eksplorasi tidak didorong hanya oleh adanya tidak adanya hubungan dalam data atau dengan sparsity yang berlebihan (Wong et al., 2016; Morton et al., 2017).

Gloor et al., 2017

Pembaruan III

Referensi tambahan untuk penelitian yang diterbitkan (Saya berterima kasih kepada @Nick Cox atas rekomendasi untuk menambahkan lebih banyak referensi):

  1. Argumen yang menentang penggunaan CLR untuk PCA
  2. Argumen yang menentang penggunaan CLR untuk metode berbasis korelasi
  3. Pengantar ILR
Eli Korvigo
sumber
2
Matriks kovarians tunggal bukan masalah bagi pca!
kjetil b halvorsen
@kjetilbhalvorsen memang, PCA per se tidak memerlukan matriks untuk peringkat penuh. Secara teknis, matriks kovarians tunggal hanya akan menghasilkan satu atau lebih nilai eigen nol. Namun, orang-orang biasanya menerapkan PCA untuk mengeksplorasi sumber-sumber varians, yang merupakan asal dari komposisionalitas. Itulah sebabnya saya agak berhati-hati dengan kata-kata saya: "... secara efektif memecah PCA / ... dalam banyak cara yang halus "
Eli Korvigo
Jadi maksud Anda karena singularitas seseorang tidak dapat menghitung jumlah varians yang dijelaskan per komponen? Selain itu, kita masih bisa melakukan PCA untuk melakukan pengurangan dimensionalitas. Bagaimana hal ini kemudian mempengaruhi ANOVA / regresi linier?
Archie
1
+1 karena jawabannya sangat menarik. Itu tidak berjalan tanpa kritik. Anda tampaknya (bagi saya bodoh) tidak menjelaskan dengan tepat mengapa melakukan PCA pada data komposisi atau perubahan-clr tidak tepat "dengan cara yang halus" (yang mana? Bagaimana?). Juga, Anda memberikan kode python tetapi tidak hasilnya. Bisakah Anda menampilkan dan berkomentar hasilnya? Akhirnya, bisakah Anda meninggalkan tautan tentang ILR transfotm, untuk dibaca?
ttnphns
1
@ttnphns 1) seperti yang telah saya tulis di komentar, CLR tidak tidak menghilangkan distorsi sumber varians yang diperkenalkan oleh penutupan komposisi, yang mempengaruhi analisis data eksplorasi: estimasi kovarian yang kuat memerlukan matriks peringkat penuh; 2) Saya tidak yakin saya mengikuti, mengapa Anda mengatakan tidak ada hasil: itu adalah sesi Python interaktif dengan input dan output (yaitu hasil); 3) Saya telah menambahkan referensi untuk ILR.
Eli Korvigo