क्या पीसीए या एफए में स्कोर या लोडिंग का संकेत एक अर्थ है? क्या मैं संकेत को उल्टा कर सकता हूं?


37

मैंने दो अलग-अलग फ़ंक्शन ( prcompऔर princomp) का उपयोग करते हुए आर के साथ मुख्य घटक विश्लेषण (पीसीए) किया और देखा कि पीसीए स्कोर साइन में भिन्न थे। यह कैसे हो सकता है?

इस पर विचार करो:

set.seed(999)
prcomp(data.frame(1:10,rnorm(10)))$x

            PC1        PC2
 [1,] -4.508620 -0.2567655
 [2,] -3.373772 -1.1369417
 [3,] -2.679669  1.0903445
 [4,] -1.615837  0.7108631
 [5,] -0.548879  0.3093389
 [6,]  0.481756  0.1639112
 [7,]  1.656178 -0.9952875
 [8,]  2.560345 -0.2490548
 [9,]  3.508442  0.1874520
[10,]  4.520055  0.1761397

set.seed(999)
princomp(data.frame(1:10,rnorm(10)))$scores
         Comp.1     Comp.2
 [1,]  4.508620  0.2567655
 [2,]  3.373772  1.1369417
 [3,]  2.679669 -1.0903445
 [4,]  1.615837 -0.7108631
 [5,]  0.548879 -0.3093389
 [6,] -0.481756 -0.1639112
 [7,] -1.656178  0.9952875
 [8,] -2.560345  0.2490548
 [9,] -3.508442 -0.1874520
[10,] -4.520055 -0.1761397

+/-दो विश्लेषणों के लिए संकेत ( ) अलग क्यों हैं ? अगर मैं एक घटक में प्रिंसिपल घटकों PC1और PC2भविष्यवाणियों के रूप में उपयोग कर रहा था, तो lm(y ~ PC1 + PC2), यह पूरी तरह से दो चर के प्रभाव के बारे में मेरी समझ को बदल देगा, yजो कि मैंने किस पद्धति पर उपयोग किया था! फिर मैं कैसे कह सकता हूं कि PC1उदाहरण के लिए सकारात्मक प्रभाव पड़ता है yऔर PC2उदाहरण के लिए नकारात्मक प्रभाव पड़ता है y?


इसके अलावा: यदि पीसीए घटकों का संकेत अर्थहीन है, तो क्या यह कारक विश्लेषण (एफए) के लिए भी सही है? क्या यह अलग-अलग पीसीए / एफए घटक स्कोर (या लोडिंग मैट्रिक्स के एक स्तंभ के रूप में) के संकेत को फ्लिप (रिवर्स) करने के लिए स्वीकार्य है?


10
+1। यह सवाल इस फ़ोरम पर बहुत भिन्न भिन्न भिन्नताओं (कभी-कभी पीसीए के बारे में, कभी-कभी कारक विश्लेषण के बारे में) में पूछा जाता है । यह समस्या को कवर करने वाला सबसे लोकप्रिय धागा है (@ जनवरी के उत्कृष्ट उत्तर के लिए धन्यवाद), इसलिए इस एक के डुप्लिकेट के रूप में अन्य मौजूदा और भविष्य के प्रश्नों को चिह्नित करना सुविधाजनक होगा। मैंने शीर्षक बदलकर और अंत में कारक विश्लेषण का उल्लेख करके आपके प्रश्न को थोड़ा और सामान्य बनाने की स्वतंत्रता ली। आप बुरा तो नही मानोगी। मैंने एक अतिरिक्त उत्तर भी दिया है।
अमीबा का कहना है कि

1
साइन मनमाना है; मूल अर्थ तार्किक रूप से संकेत पर निर्भर करता है। आप हमेशा "X" लेबल वाले किसी भी कारक के चिन्ह को विपरीत चिन्ह में बदल सकते हैं, और फिर "विपरीत X" पर लेबल लगा सकते हैं। यह लोडिंग के लिए, स्कोर के लिए सही है। कुछ कार्यान्वयन - सुविधा के लिए - एक कारक के संकेत को बदलते हैं ताकि इसमें सकारात्मक मूल्य (स्कोर या लोडिंग में) हावी हों। अन्य कार्यान्वयन कुछ नहीं करते हैं और निर्णय को छोड़ देते हैं कि क्या आप पर संकेत को उल्टा करना है - यदि आप परवाह करते हैं। सांख्यिकीय अर्थ (जैसे प्रभाव शक्ति) इसके "दिशा" से अलग नहीं होता है, उलट हो जाता है।
ttnphns

जवाबों:


38

पीसीए एक सरल गणितीय परिवर्तन है। यदि आप घटक (एस) के संकेत बदलते हैं, तो आप पहले घटक में निहित विचरण को नहीं बदलते हैं। इसके अलावा, जब आप संकेतों को बदलते हैं, तो वज़न ( prcomp( ... )$rotation) भी संकेत बदलते हैं, इसलिए व्याख्या बिल्कुल वैसी ही रहती है:

set.seed( 999 )
a <- data.frame(1:10,rnorm(10))
pca1 <- prcomp( a )
pca2 <- princomp( a )
pca1$rotation

दिखाता है

                 PC1       PC2
X1.10      0.9900908 0.1404287
rnorm.10. -0.1404287 0.9900908

और pca2$loadingsदिखाओ

Loadings:
          Comp.1 Comp.2
X1.10     -0.99  -0.14 
rnorm.10.  0.14  -0.99 

               Comp.1 Comp.2
SS loadings       1.0    1.0
Proportion Var    0.5    0.5
Cumulative Var    0.5    1.0

तो, व्याख्या एक ही क्यों रहती है?

आप yघटक 1 पर पीसीए प्रतिगमन करते हैं। पहले संस्करण ( prcomp) में, गुणांक सकारात्मक है: घटक 1 जितना बड़ा होगा, उतना बड़ा वाई। मूल चर की बात आती है तो इसका क्या मतलब है? चूँकि चर 1 ( 1:10a) का भार धनात्मक है, यह दर्शाता है कि चर 1 जितना बड़ा होगा, उतना बड़ा y होगा।

अब दूसरे संस्करण ( princomp) का उपयोग करें । चूंकि घटक में संकेत बदल गया है, बड़ा y, छोटा घटक 1 - पीसी 1 पर y <का गुणांक अब नकारात्मक है। लेकिन इसलिए चर 1 का लोड हो रहा है; इसका मतलब है, बड़ा चर 1, छोटा घटक 1, बड़ा y - व्याख्या समान है।

संभवतः, यह देखने का सबसे आसान तरीका है कि एक द्विध्रुवीय का उपयोग किया जाए।

library( pca3d )
pca2d( pca1, biplot= TRUE, shape= 19, col= "black"  )

दिखाता है

यहाँ छवि विवरण दर्ज करें

दूसरे वैरिएंट शो के लिए भी ऐसा ही है

pca2d( pca2$scores, biplot= pca2$loadings[,], shape= 19, col= "black" )

जैसा कि आप देखते हैं, चित्र 180 ° से घुमाए जाते हैं। हालाँकि, वज़न / लोडिंग (लाल तीर) और डेटा पॉइंट (ब्लैक डॉट्स) के बीच का संबंध बिल्कुल एक जैसा है; इस प्रकार, घटकों की व्याख्या अपरिवर्तित है।

यहाँ छवि विवरण दर्ज करें


मैं भी अब चित्रों जोड़ा :-)
जनवरी

1
यह सच है, लेकिन पीसीए में अनुमानों के बारे में क्या? मैं खुद पीसीए को कोड कर रहा हूं, और मेरे कुछ ईजनवेक्टर MATLAB बिल्ट-इन की तुलना में फ़्लिप हैं princomp। इसलिए प्रक्षेपण के दौरान, मेरा अनुमानित डेटा भी कुछ आयामों में हस्ताक्षर में फ़्लिप किया गया है। मेरा लक्ष्य गुणांक पर वर्गीकरण करना है। साइन अभी भी यहाँ कोई फर्क नहीं पड़ता?
सिब्ब्स जुआ

इसलिए, यदि मेरे पीसी को आसानी से समझने के कारण, मैं स्कोर के संकेत स्वैप करना चाहूंगा, तो क्या यह वैध है?

13

यह सवाल इस मंच पर बहुत कुछ पूछा जाता है , इसलिए मैं थोड़ा और सामान्य विचारों के साथ @ जनवरी के उत्कृष्ट उत्तर को पूरक करना चाहूंगा।

दोनों प्रमुख घटक विश्लेषण (पीसीए) और कारक विश्लेषण (एफए) में, हम मूल चर का उपयोग कई अव्यक्त घटकों (या अव्यक्त चर) । ये अव्यक्त घटक पीसीए या एफए घटक स्कोर द्वारा दिए गए हैं। प्रत्येक मूल चर कुछ वज़न के साथ इन घटकों का एक रैखिक संयोजन है: उदाहरण के लिए पहला मूल चर दो बार साथ तीन बार अच्छी तरह से अनुमानित किया जा सकता है , ताकि । यदि स्कोर को मानकीकृत किया जाता है, तो इन भार ( और ) को लोडिंग के रूप में जाना जाता है। इसलिए, अनौपचारिक रूप से, कोई भी ऐसा कह सकता हैx1,x2,...xdz1,z2,...zkx1z1z2x12z1+3z223

OriginalvariablesScoresLoadings.

यहाँ से हम देख सकते हैं कि यदि हम एक अव्यक्त घटक, जैसे कि , और उसके अंकों और उसके लोडिंग के चिन्ह को , तो इसका परिणाम (या व्याख्या) पर कोई प्रभाव नहीं पड़ेगा, क्योंकि - 1 - 1 = 1।z1

11=1.

निष्कर्ष यह है कि प्रत्येक पीसीए या एफए घटक के लिए, इसके स्कोर और इसके लोडिंग का संकेत मनमाना और अर्थहीन है। यह फ़्लिप किया जा सकता है, लेकिन केवल तभी जब स्कोर और लोडिंग दोनों का संकेत एक ही समय में उलट हो।


यह सच है, लेकिन पीसीए में अनुमानों के बारे में क्या? मैं खुद पीसीए को कोड कर रहा हूं, और मेरे कुछ ईजनवेक्टर MATLAB बिल्ट-इन की तुलना में फ़्लिप हैं princomp। इसलिए प्रक्षेपण के दौरान, मेरा अनुमानित डेटा भी कुछ आयामों में हस्ताक्षर में फ़्लिप किया गया है। मेरा लक्ष्य गुणांक पर वर्गीकरण करना है। साइन अभी भी यहाँ कोई फर्क नहीं पड़ता?
Sibbs जुआ

1
फिर भी कोई फर्क नहीं पड़ता। क्यों होगा? फ़्लिप किया गया डेटा वर्गीकरण सहित सभी उद्देश्यों के लिए गैर-फ़्लिप किए गए डेटा के बराबर है।
अमीबा का कहना है कि मोनिका

खैर, सभी उद्देश्यों के लिए नहीं। एल्गोरिथ्म के बीच स्थिरता के लिए, मैं वास्तव में संकेतों से मेल खाना चाहता हूं। हालांकि, यह सभी घटकों को देखते हुए फ़्लिप नहीं है। R कैसे चिन्ह का चयन कर रहा है इसलिए मैं भी ऐसा कर सकता हूँ?
मायोच

1
@ मायच मैं अपने स्वयं के सम्मेलन का आविष्कार करने और इसे हर जगह लागू करने की सिफारिश करूंगा, जैसा कि आर क्या कर रहा है, यह जानने की कोशिश करना। आप इस तरह के संकेत का चयन कर सकते हैं कि पहला मूल्य सकारात्मक है, या यह कि आधे से अधिक मूल्य सकारात्मक हैं, आदि
अमीबा कहते हैं, बहाल मोनिका

1
@user_anon कोई उलटा नहीं है।
अमीबा का कहना है कि

7

यह ऊपर उत्तर दिया गया था। बस कुछ और गणितीय प्रासंगिकता प्रदान करने के लिए, प्रमुख घटक जो निर्देश कार्य करते हैं, वे सिस्टम के आइजनवेक्टर के अनुरूप हैं। यदि आप एक सकारात्मक या नकारात्मक पीसी प्राप्त कर रहे हैं, तो इसका मतलब है कि आप एक eigenvector पर पेश कर रहे हैं जो एक दिशा में इशारा कर रहा है या दिशा में दूसरी दिशा में दूर है। बावजूद, व्याख्या वही रहती है! यह भी जोड़ा जाना चाहिए कि आपके प्रमुख घटकों की लंबाई केवल आइजेनवेल्स हैं।180

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.