जैसा कि @amoeba ने टिप्पणियों में उल्लेख किया है, PCA केवल डेटा के एक सेट को देखेगा और यह आपको उन वेरिएबल्स में भिन्नता के प्रमुख (रैखिक) पैटर्न दिखाएगा, जो उन वेरिएबल्स के बीच सहसंबंध या सहसंबंध, और नमूनों के बीच संबंधों (पंक्तियों) ) आपके डेटा सेट में।
आमतौर पर प्रजाति डेटा सेट और संभावित व्याख्यात्मक चर के एक सूट के साथ एक विवश समन्वय के लिए क्या करना है। पीसीए में, मुख्य घटक, पीसीए बाइपोलॉट पर कुल्हाड़ियों को सभी चर के इष्टतम रैखिक संयोजनों के रूप में लिया जाता है। यदि आप इसे चर पीएच, , कुल कार्बन के साथ मिट्टी के रसायन विज्ञान के डेटा सेट पर चलाते हैं , तो आप पा सकते हैं कि पहला घटक थासीए2 +
0.5 × पी एच + 1.4 × सीए2 ++ 0.1 × T o t a l C a r b o n
और दूसरा घटक
2.7 × p H + 0.3 × Cए2 +- 5.6 × T o t a l C C a r b o n
इन घटकों को मापा गया चर से स्वतंत्र रूप से चयन किया जाता है, और जो चुने जाते हैं, वे हैं जो क्रमिक रूप से डेटासेट में भिन्नता की सबसे बड़ी मात्रा को समझाते हैं, और यह कि प्रत्येक रैखिक संयोजन अन्य लोगों के साथ रूढ़िवादी (साथ असंबंधित) है।
एक विवश अध्यादेश में, हमारे पास दो डेटासेट हैं, लेकिन हम जो भी डेटा सेट चाहते हैं, उसके ऊपर (मिट्टी रसायन डेटा) जो भी चाहते हैं, उसके रैखिक संयोजनों का चयन करने के लिए स्वतंत्र नहीं हैं। इसके बजाय हमें दूसरे डेटा सेट में वैरिएबल के रैखिक संयोजनों का चयन करना होगा जो पहले में सबसे अच्छा विवरण भिन्नता है। इसके अलावा, पीसीए के मामले में, एक डेटा सेट प्रतिक्रिया मैट्रिक्स है और कोई भविष्यवक्ता नहीं हैं (आप स्वयं की भविष्यवाणी के रूप में प्रतिक्रिया के बारे में सोच सकते हैं)। विवश मामले में, हमारे पास एक प्रतिक्रिया डेटा सेट है जिसे हम व्याख्यात्मक चर के एक सेट के साथ समझाना चाहते हैं।
यद्यपि आपने यह नहीं बताया है कि कौन-से चर प्रतिक्रियाएँ हैं, आम तौर पर पर्यावरणीय व्याख्यात्मक चर का उपयोग करके उन प्रजातियों की बहुतायत या रचना (यानी प्रतिक्रियाएँ) में भिन्नता की व्याख्या करना चाहते हैं।
पीसीए का विवश संस्करण पारिस्थितिक हलकों में अतिरेक विश्लेषण (आरडीए) नामक एक चीज है। यह प्रजातियों के लिए एक अंतर्निहित रैखिक प्रतिक्रिया मॉडल मानता है, जो या तो उचित नहीं है या केवल उपयुक्त है यदि आपके पास छोटे ग्रेडिएंट हैं जिनके साथ प्रजातियां प्रतिक्रिया देती हैं।
पीसीए का एक विकल्प पत्राचार विश्लेषण (सीए) नामक एक चीज है। यह असंबंधित है, लेकिन इसमें एक अंतर्निहित अनिमॉडल प्रतिक्रिया मॉडल है, जो कि प्रजातियों में लंबे समय तक ग्रेडिएंट के साथ कैसे प्रतिक्रिया करता है, इसके संदर्भ में कुछ अधिक यथार्थवादी है। यह भी ध्यान दें कि सीए मॉडल रिश्तेदार बहुतायत या रचना , पीसीए कच्चे बहुतायत मॉडल।
CA का एक विवश संस्करण है, जिसे विवश या विहित पत्राचार विश्लेषण (CCA) के रूप में जाना जाता है - विहित और अधिक औपचारिक सांख्यिकीय मॉडल के साथ भ्रमित नहीं होना चाहिए, जिसे विहित सहसंबंध विश्लेषण कहा जाता है।
आरडीए और सीसीए दोनों में उद्देश्य व्याख्यात्मक चर के रैखिक संयोजनों की एक श्रृंखला के रूप में प्रजातियों के बहुतायत या रचना में भिन्नता को मॉडल करना है।
विवरण से ऐसा लगता है कि आपकी पत्नी मिलीपेड प्रजाति की संरचना (या बहुतायत) में मापे गए अन्य चर के संदर्भ में भिन्नता समझाना चाहती है।
चेतावनी के कुछ शब्द; RDA और CCA केवल बहुभिन्नरूपी प्रतिगमन हैं; CCA केवल एक भारित बहुभिन्नरूपी प्रतिगमन है। प्रतिगमन के बारे में आपने जो कुछ भी सीखा है, वह लागू होता है, और कुछ अन्य गोत्र भी हैं:
- जैसा कि आप व्याख्यात्मक चर की संख्या में वृद्धि करते हैं, बाधाएं वास्तव में कम और कम हो जाती हैं और आप वास्तव में उन घटकों / कुल्हाड़ियों को नहीं निकाल रहे हैं जो प्रजातियों की संरचना को स्पष्ट रूप से समझाते हैं, और
- CCA के साथ, जैसे ही आप व्याख्यात्मक कारकों की संख्या बढ़ाते हैं, आप CCA प्लॉट में बिंदुओं के कॉन्फ़िगरेशन में एक वक्र के एक उत्प्रेरण को प्रेरित करने का जोखिम उठाते हैं।
- आरडीए और सीसीए अंतर्निहित सिद्धांत अधिक औपचारिक सांख्यिकीय विधियों की तुलना में कम अच्छी तरह से विकसित हैं। हम केवल समझदारी से चुन सकते हैं कि चरण-वार चयन का उपयोग करने के लिए कौन-से व्याख्यात्मक चर हैं (जो उन सभी कारणों के लिए आदर्श नहीं है जिन्हें हम प्रतिगमन में चयन विधि के रूप में पसंद नहीं करते हैं) और ऐसा करने के लिए हमें क्रमपरिवर्तन परीक्षणों का उपयोग करना होगा।
इसलिए मेरी सलाह प्रतिगमन के समान है; समय से पहले सोचें कि आपकी परिकल्पनाएं क्या हैं और इसमें वे चर शामिल हैं जो उन परिकल्पनाओं को दर्शाते हैं। मिश्रण में सिर्फ सभी व्याख्यात्मक चर मत फेंको।
उदाहरण
अनर्गल अध्यादेश
पीसीए
मैं RA के लिए शाकाहारी पैकेज का उपयोग करते हुए PCA, CA और CCA की तुलना करते हुए एक उदाहरण दिखाऊंगा, जिसे मैं बनाए रखने में मदद करता हूं और जिसे इस प्रकार के समन्वय विधियों को फिट करने के लिए डिज़ाइन किया गया है:
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)
शाकाहारी कैनोको के विपरीत जड़ता का मानकीकरण नहीं करता है, इसलिए कुल विचरण 1826 है और आइजनवेल्स उन्हीं इकाइयों में हैं और 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
हम यह भी देखते हैं कि पहला ईजेंवल्यू लगभग आधा विचरण है और पहले दो अक्षों के साथ हमने बताया ~ कुल विचरण का 80%
> 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
पहले दो प्रमुख घटकों पर नमूनों और प्रजातियों के स्कोर से एक द्विध्रुव खींचा जा सकता है
> plot(pcfit)
यहां दो समस्याएं हैं
- ऑर्डिनेशन अनिवार्य रूप से तीन प्रजातियों का वर्चस्व है - ये प्रजातियां मूल से दूर हैं - क्योंकि ये डेटा सेट में सबसे प्रचुर कर हैं
- समन्वय में वक्र का एक मजबूत आर्क है, एक लंबे या प्रमुख एकल ढाल का विचारोत्तेजक है जो समन्वय के मीट्रिक गुणों को बनाए रखने के लिए दो मुख्य प्रमुख घटकों में टूट गया है।
सीए
एक CA इन दोनों बिंदुओं के साथ सहायता कर सकता है क्योंकि यह अनिमॉडल रिस्पांस मॉडल के कारण लंबे ग्रेडिएंट को बेहतर तरीके से हैंडल करता है, और यह प्रजातियों की सापेक्ष रचना को कच्चा बहुतायत नहीं देता है।
ऐसा करने के लिए शाकाहारी / आर कोड ऊपर उपयोग किए गए पीसीए कोड के समान है
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)
यहाँ हम उनकी सापेक्ष संरचना में साइटों के बीच भिन्नता का लगभग 40% समझाते हैं
> 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(cafit)
आपके द्वारा चुने गए पीसीए या सीए में से कौन सा डेटा आपके द्वारा पूछे जाने वाले प्रश्नों से निर्धारित होना चाहिए। आमतौर पर प्रजातियों के डेटा के साथ हम अक्सर प्रजातियों के सूट में अंतर में रुचि रखते हैं इसलिए सीए एक लोकप्रिय विकल्प है। अगर हमारे पास पर्यावरणीय चर का एक डेटा सेट है, तो पानी या मिट्टी के रसायन विज्ञान का कहना है, हम उम्मीद नहीं करेंगे कि वे एक साथ एकात्मक तरीके से जवाब देंगे ताकि सीए अनुचित होगा और पीसीए (एक सहसंबंध मैट्रिक्स का उपयोग करें scale = TRUE
, rda()
कॉल में) होगा अधिक उपयुक्त।
विवश समन्वय; सीसीए
अब यदि हमारे पास डेटा का दूसरा सेट है जिसे हम पहले प्रजाति के डेटा सेट में पैटर्न को समझाने के लिए उपयोग करना चाहते हैं, तो हमें एक विवश समन्वय का उपयोग करना चाहिए। अक्सर यहाँ चुनाव CCA होता है, लेकिन RDA एक विकल्प है, क्योंकि RDA डेटा के परिवर्तन के बाद इसे प्रजाति डेटा को बेहतर तरीके से संभालने की अनुमति देता है।
data(varechem) # load explanatory example data
हम cca()
फ़ंक्शन का फिर से उपयोग करते हैं, लेकिन हम या तो दो डेटा फ्रेम ( X
प्रजातियों के लिए, और Y
व्याख्यात्मक / भविष्य कहनेवाला चर के लिए) या एक मॉडल सूत्र की आपूर्ति करते हैं, जिस मॉडल को हम फिट करना चाहते हैं।
सभी चर को शामिल करने के लिए हम सभी चर को शामिल करने varechem ~ ., data = varechem
के सूत्र के रूप में उपयोग कर सकते हैं - लेकिन जैसा कि मैंने ऊपर कहा, यह सामान्य रूप से अच्छा विचार नहीं है।
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
plot()
विधि के उपयोग से उपरोक्त समन्वय का त्रिकोट निर्मित होता है
> plot(ccafit)
बेशक, अब यह काम करना है कि उनमें से कौन सा चर वास्तव में महत्वपूर्ण है। यह भी ध्यान दें कि हमने केवल 13 चर का उपयोग करते हुए प्रजातियों के 2/3 के बारे में समझाया है। इस समन्वय में सभी चर का उपयोग करने की समस्याओं में से एक यह है कि हमने नमूना और प्रजाति स्कोर में एक धनुषाकार विन्यास बनाया है, जो विशुद्ध रूप से बहुत से सहसंबद्ध चर का उपयोग करने का एक गुण है।
यदि आप इसके बारे में अधिक जानना चाहते हैं, तो शाकाहारी दस्तावेज या बहुभिन्नरूपी पारिस्थितिक डेटा विश्लेषण पर एक अच्छी पुस्तक देखें।
रिग्रेशन वाला रिश्ता
आरडीए के साथ लिंक को चित्रित करना सबसे सरल है, लेकिन सीसीए केवल एक ही है सिवाय इसके कि हर चीज में पंक्ति और स्तंभ दो-तरफ़ा तालिका सीमांत वजन के रूप में शामिल हैं।
यह दिल में है, आरडीए पीसीए के अनुप्रयोग के बराबर है, जिसमें प्रत्येक प्रजाति (प्रतिक्रिया) मान (बहुतायत, मान) के लिए फिट किए गए कई रैखिक प्रतिगमन से फिट किए गए मूल्यों के मैट्रिक्स के साथ व्याख्यात्मक चर के मैट्रिक्स द्वारा दिए गए पूर्वानुमान हैं।
आर में हम यह कर सकते हैं
## 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))
इन दो दृष्टिकोणों के लिए आइजनवेल समान हैं:
> (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
किसी कारण से मैं मिलान करने के लिए अक्ष स्कोर (लोडिंग) प्राप्त नहीं कर सकता हूं, लेकिन हमेशा इनकी माप की जाती है (या नहीं) इसलिए मुझे यह देखने की आवश्यकता है कि यहां कैसे किया जा रहा है।
हम के rda()
रूप में मैं lm()
आदि के साथ दिखाया के माध्यम से RDA नहीं करते हैं , लेकिन हम रैखिक मॉडल भाग के लिए एक QR अपघटन और तब PCA भाग के लिए SVD का उपयोग करते हैं। लेकिन आवश्यक कदम समान हैं।