Seperti @amoeba disebutkan dalam komentar, PCA hanya akan melihat satu set data dan itu akan menunjukkan kepada Anda pola (linear) utama variasi dalam variabel-variabel tersebut, korelasi atau kovarian antara variabel-variabel tersebut, dan hubungan antara sampel (baris) ) di kumpulan data Anda.
Apa yang biasanya dilakukan seseorang dengan kumpulan data spesies dan serangkaian variabel penjelas yang potensial adalah agar sesuai dengan penahbisan yang dibatasi. Dalam PCA, komponen utama, sumbu pada biplot PCA, diturunkan sebagai kombinasi linear optimal dari semua variabel. Jika Anda menjalankan ini pada kumpulan data kimia tanah dengan variabel pH, , TotalCarbon, Anda mungkin menemukan bahwa komponen pertama adalahC a2 +
0,5 × p H + 1,4 × C a2 ++ 0,1 × T o t a l C a r b o n
dan komponen kedua
2,7 × p H + 0,3 × C a2 +- 5.6 × T a t a l C a r b o n
Komponen-komponen ini dapat dipilih secara bebas dari variabel yang diukur, dan yang dipilih adalah mereka yang menjelaskan secara berurutan jumlah variasi terbesar dalam dataset, dan bahwa setiap kombinasi linier adalah ortogonal (tidak berkorelasi dengan) yang lain.
Dalam pentahbisan terbatas, kita memiliki dua kumpulan data, tetapi kita tidak bebas memilih kombinasi linear apa pun dari kumpulan data pertama (data kimia tanah di atas) yang kita inginkan. Alih-alih, kita harus memilih kombinasi linear dari variabel dalam kumpulan data kedua yang paling menjelaskan variasi di variabel pertama. Juga, dalam kasus PCA, satu set data adalah matriks respons dan tidak ada prediktor (Anda bisa menganggap respons sebagai memprediksi sendiri). Dalam kasus terbatas, kami memiliki set data respons yang ingin kami jelaskan dengan satu set variabel penjelas.
Meskipun Anda belum menjelaskan variabel mana yang menjadi respons, biasanya orang ingin menjelaskan variasi dalam kelimpahan atau komposisi spesies tersebut (yaitu respons) menggunakan variabel penjelas lingkungan.
Versi PCA yang terbatas adalah sesuatu yang disebut Redundancy Analysis (RDA) dalam lingkaran ekologis. Ini mengasumsikan model respons linier yang mendasari untuk spesies, yang entah tidak tepat atau hanya sesuai jika Anda memiliki gradien pendek di mana spesies merespons.
Alternatif untuk PCA adalah hal yang disebut analisis korespondensi (CA). Ini tidak dibatasi tetapi memiliki model respon unimodal yang mendasarinya, yang agak lebih realistis dalam hal bagaimana spesies merespon sepanjang gradien yang lebih panjang. Perhatikan juga bahwa model CA kelimpahan atau komposisi relatif , PCA memodelkan kelimpahan mentah.
Ada versi CA terbatas, yang dikenal sebagai analisis korespondensi terbatas atau kanonik (CCA) - jangan dikacaukan dengan model statistik yang lebih formal yang dikenal sebagai analisis korelasi kanonik.
Baik dalam RDA dan CCA tujuannya adalah untuk memodelkan variasi kelimpahan atau komposisi spesies sebagai serangkaian kombinasi linear dari variabel penjelas.
Dari uraian itu, sepertinya istri Anda ingin menjelaskan variasi dalam komposisi spesies kaki seribu (atau kelimpahan) dalam hal variabel-variabel lain yang diukur.
Beberapa kata peringatan; RDA dan CCA hanyalah regresi multivarian; CCA hanyalah regresi multivariat tertimbang. Apa pun yang Anda pelajari tentang regresi berlaku, dan ada beberapa gotcha lainnya juga:
- saat Anda menambah jumlah variabel penjelas, kendala sebenarnya menjadi semakin sedikit dan Anda tidak benar-benar mengekstraksi komponen / kapak yang menjelaskan komposisi spesies secara optimal, dan
- dengan CCA, saat Anda meningkatkan jumlah faktor penjelas, Anda berisiko mendorong artefak kurva ke dalam konfigurasi titik-titik dalam plot CCA.
- teori yang mendasari RDA dan CCA kurang berkembang dengan baik daripada metode statistik yang lebih formal. Kita hanya dapat secara wajar memilih variabel penjelas mana untuk tetap menggunakan seleksi langkah-bijaksana (yang tidak ideal untuk semua alasan kita tidak menyukainya sebagai metode seleksi dalam regresi) dan kita harus menggunakan tes permutasi untuk melakukannya.
jadi saran saya sama dengan regresi; pikirkan terlebih dahulu apa hipotesis Anda dan sertakan variabel yang mencerminkan hipotesis tersebut. Jangan hanya membuang semua variabel penjelas ke dalam campuran.
Contoh
Penahbisan yang tidak dibatasi
PCA
Saya akan menunjukkan contoh membandingkan PCA, CA dan CCA menggunakan paket vegan untuk R yang saya bantu pertahankan dan yang dirancang agar sesuai dengan jenis metode penahbisan ini:
library("vegan") # load the package
data(varespec) # load example data
## PCA
pcfit <- rda(varespec)
## could add `scale = TRUE` if variables in different units
pcfit
> pcfit
Call: rda(X = varespec)
Inertia Rank
Total 1826
Unconstrained 1826 23
Inertia is variance
Eigenvalues for unconstrained axes:
PC1 PC2 PC3 PC4 PC5 PC6 PC7 PC8
983.0 464.3 132.3 73.9 48.4 37.0 25.7 19.7
(Showed only 8 of all 23 unconstrained eigenvalues)
vegan tidak membakukan Inertia, tidak seperti Canoco, jadi total variansnya adalah 1826 dan nilai Eigen ada di unit yang sama dan berjumlah 1826
> cumsum(eigenvals(pcfit))
PC1 PC2 PC3 PC4 PC5 PC6 PC7 PC8
982.9788 1447.2829 1579.5334 1653.4670 1701.8853 1738.8947 1764.6209 1784.3265
PC9 PC10 PC11 PC12 PC13 PC14 PC15 PC16
1796.6007 1807.0361 1816.3869 1819.1853 1821.5128 1822.9045 1824.1103 1824.9250
PC17 PC18 PC19 PC20 PC21 PC22 PC23
1825.2563 1825.4429 1825.5495 1825.6131 1825.6383 1825.6548 1825.6594
Kami juga melihat bahwa nilai Eigen pertama adalah sekitar setengah varians dan dengan dua sumbu pertama kami telah menjelaskan ~ 80% dari total varians
> head(cumsum(eigenvals(pcfit)) / pcfit$tot.chi)
PC1 PC2 PC3 PC4 PC5 PC6
0.5384240 0.7927453 0.8651851 0.9056821 0.9322031 0.9524749
Biplot dapat diambil dari skor sampel dan spesies pada dua komponen utama pertama
> plot(pcfit)
ada dua masalah di sini
- Penahbisan pada dasarnya didominasi oleh tiga spesies - spesies ini terletak paling jauh dari asalnya - karena ini adalah taksa yang paling melimpah dalam kumpulan data
- Ada lengkungan lengkung yang kuat dalam pentahbisan, menunjukkan gradien tunggal yang panjang atau dominan yang telah dipecah menjadi dua komponen utama utama untuk mempertahankan sifat metrik penahbisan.
CA
CA dapat membantu dengan kedua titik ini karena menangani gradien panjang yang lebih baik karena model respons unimodal, dan model komposisi relatif spesies tidak kelimpahan mentah.
Kode vegan / R untuk melakukan ini mirip dengan kode PCA yang digunakan di atas
cafit <- cca(varespec)
cafit
> cafit <- cca(varespec)
> cafit
Call: cca(X = varespec)
Inertia Rank
Total 2.083
Unconstrained 2.083 23
Inertia is mean squared contingency coefficient
Eigenvalues for unconstrained axes:
CA1 CA2 CA3 CA4 CA5 CA6 CA7 CA8
0.5249 0.3568 0.2344 0.1955 0.1776 0.1216 0.1155 0.0889
(Showed only 8 of all 23 unconstrained eigenvalues)
Di sini kami menjelaskan sekitar 40% variasi antar situs dalam komposisi relatifnya
> head(cumsum(eigenvals(cafit)) / cafit$tot.chi)
CA1 CA2 CA3 CA4 CA5 CA6
0.2519837 0.4232578 0.5357951 0.6296236 0.7148866 0.7732393
Plot gabungan spesies dan skor lokasi sekarang kurang didominasi oleh beberapa spesies
> plot(cafit)
PCA atau CA mana yang Anda pilih harus ditentukan oleh pertanyaan yang ingin Anda tanyakan dari data. Biasanya dengan data spesies, kita lebih sering tertarik pada perbedaan dalam rangkaian spesies sehingga CA adalah pilihan yang populer. Jika kita memiliki satu set data variabel lingkungan, mengatakan air atau kimia tanah, kita tidak akan mengharapkan mereka untuk merespon dengan cara yang unimodal sepanjang gradien sehingga CA akan pantas dan PCA (dari matriks korelasi, menggunakan scale = TRUE
dalam rda()
panggilan) akan lebih tepat.
Pentahbisan terbatas; CCA
Sekarang jika kita memiliki set data kedua yang ingin kita gunakan untuk menjelaskan pola dalam set data spesies pertama, kita harus menggunakan penahbisan terbatas. Seringkali pilihan di sini adalah CCA, tetapi RDA adalah alternatif, seperti RDA setelah transformasi data untuk memungkinkannya menangani data spesies dengan lebih baik.
data(varechem) # load explanatory example data
Kami menggunakan kembali cca()
fungsi tersebut tetapi kami menyediakan dua kerangka data ( X
untuk spesies, dan Y
untuk variabel penjelas / prediktor) atau formula model yang mencantumkan bentuk model yang ingin kami paskan.
Untuk memasukkan semua variabel yang dapat kita gunakan varechem ~ ., data = varechem
sebagai rumus untuk memasukkan semua variabel - tetapi seperti yang saya katakan di atas, ini bukan ide yang baik secara umum
ccafit <- cca(varespec ~ ., data = varechem)
> ccafit
Call: cca(formula = varespec ~ N + P + K + Ca + Mg + S + Al + Fe + Mn +
Zn + Mo + Baresoil + Humdepth + pH, data = varechem)
Inertia Proportion Rank
Total 2.0832 1.0000
Constrained 1.4415 0.6920 14
Unconstrained 0.6417 0.3080 9
Inertia is mean squared contingency coefficient
Eigenvalues for constrained axes:
CCA1 CCA2 CCA3 CCA4 CCA5 CCA6 CCA7 CCA8 CCA9 CCA10 CCA11
0.4389 0.2918 0.1628 0.1421 0.1180 0.0890 0.0703 0.0584 0.0311 0.0133 0.0084
CCA12 CCA13 CCA14
0.0065 0.0062 0.0047
Eigenvalues for unconstrained axes:
CA1 CA2 CA3 CA4 CA5 CA6 CA7 CA8 CA9
0.19776 0.14193 0.10117 0.07079 0.05330 0.03330 0.01887 0.01510 0.00949
Triplot dari pentahbisan di atas diproduksi menggunakan plot()
metode ini
> plot(ccafit)
Tentu saja, sekarang tugasnya adalah menentukan variabel mana yang benar-benar penting. Juga perhatikan bahwa kami telah menjelaskan sekitar 2/3 dari varian spesies hanya menggunakan 13 variabel. salah satu masalah dalam menggunakan semua variabel dalam penahbisan ini adalah bahwa kita telah membuat konfigurasi melengkung dalam skor sampel dan spesies, yang murni artefak menggunakan terlalu banyak variabel berkorelasi.
Jika Anda ingin tahu lebih banyak tentang ini, lihat dokumentasi vegan atau buku bagus tentang analisis data ekologi multivarian.
Hubungan dengan regresi
Paling sederhana untuk menggambarkan tautan dengan RDA, tetapi CCA sama saja kecuali semuanya melibatkan jumlah marginal baris dan tabel dua arah sebagai bobot.
Pada intinya, RDA setara dengan penerapan PCA ke matriks nilai pas dari regresi linier berganda yang dipasang untuk masing-masing spesies (respons) nilai (kelimpahan, katakanlah) dengan prediktor yang diberikan oleh matriks variabel penjelas.
Dalam R kita bisa melakukan ini sebagai
## centre the responses
spp <- scale(data.matrix(varespec), center = TRUE, scale = FALSE)
## ...and the predictors
env <- as.data.frame(scale(varechem, center = TRUE, scale = FALSE))
## fit a linear model to each column (species) in spp.
## Suppress intercept as we've centred everything
fit <- lm(spp ~ . - 1, data = env)
## Collect fitted values for each species and do a PCA of that
## matrix
pclmfit <- prcomp(fitted(fit))
Nilai Eigen untuk kedua pendekatan ini sama:
> (eig1 <- unclass(unname(eigenvals(pclmfit)[1:14])))
[1] 820.1042107 399.2847431 102.5616781 47.6316940 26.8382218 24.0480875
[7] 19.0643756 10.1669954 4.4287860 2.2720357 1.5353257 0.9255277
[13] 0.7155102 0.3118612
> (eig2 <- unclass(unname(eigenvals(rdafit, constrained = TRUE))))
[1] 820.1042107 399.2847431 102.5616781 47.6316940 26.8382218 24.0480875
[7] 19.0643756 10.1669954 4.4287860 2.2720357 1.5353257 0.9255277
[13] 0.7155102 0.3118612
> all.equal(eig1, eig2)
[1] TRUE
Untuk beberapa alasan saya tidak bisa mendapatkan skor sumbu (memuat) yang cocok, tetapi selalu ini diskalakan (atau tidak) jadi saya perlu melihat dengan tepat bagaimana hal itu dilakukan di sini.
Kami tidak melakukan RDA melalui rda()
seperti yang saya tunjukkan dengan lm()
dll, tetapi kami menggunakan dekomposisi QR untuk bagian model linier dan kemudian SVD untuk bagian PCA. Tetapi langkah-langkah penting adalah sama.