निरंतर और बाइनरी चर के मिश्रण पर आधारित पीसीए और घटक स्कोर


13

मैं एक डेटासेट पर एक पीसीए लागू करना चाहता हूं, जिसमें मिश्रित प्रकार के चर (निरंतर और बाइनरी) शामिल हैं। प्रक्रिया का वर्णन करने के लिए, मैं नीचे आर में एक न्यूनतम प्रतिलिपि प्रस्तुत करने योग्य उदाहरण पेस्ट करता हूं।

# Generate synthetic dataset
set.seed(12345)
n <- 100
x1 <- rnorm(n)
x2 <- runif(n, -2, 2)
x3 <- x1 + x2 + rnorm(n)
x4 <- rbinom(n, 1, 0.5)
x5 <- rbinom(n, 1, 0.6)
data <- data.frame(x1, x2, x3, x4, x5)

# Correlation matrix with appropriate coefficients
# Pearson product-moment: 2 continuous variables
# Point-biserial: 1 continuous and 1 binary variable
# Phi: 2 binary variables
# For testing purposes use hetcor function
library(polycor)
C <- as.matrix(hetcor(data=data))

# Run PCA
pca <- princomp(covmat=C)
L <- loadings(pca)

अब, मुझे आश्चर्य है कि घटक स्कोर (यानी, घटक लोडिंग द्वारा भारित कच्चे चर) की गणना कैसे की जाए। जब डेटासेट में निरंतर चर होते हैं, तो घटक स्कोर बस लोड किए गए मैट्रिक्स (एल ऊपर उदाहरण में एल) में संग्रहीत कच्चे डेटा और आइजनवेक्टर को गुणा (स्केल) करके प्राप्त किया जाता है। किसी भी प्वाइंटर की अत्यधिक सराहना की जाएगी।


1
मुझे यकीन नहीं है कि अगर मैं आपके सवाल को समझूं। यह बाइनरी वेरिएबल के लिए अलग क्यों होगा?

@Insanodag: तो आप सुझाव दें कि मैं लोड मैट्रिक्स के साथ डेटा मैट्रिक्स को गुणा कर सकता हूं?
Andrej

जवाबों:


9

मुझे लगता है कि इन्सानोदाग सही है। मैं जोलीफ़ के प्रधान घटक विश्लेषण का उद्धरण देता हूँ:

जब पीसीए का उपयोग एक वर्णनात्मक तकनीक के रूप में किया जाता है, तो विश्लेषण में चर के लिए किसी विशेष प्रकार का होने का कोई कारण नहीं है। [...] पीसीए का मूल उद्देश्य - वेरिएबल्स के मूल सेट में मौजूद अधिकांश 'वेरिएशन' को संक्षेप में प्रस्तुत करना है, जो व्युत्पन्न वैरिएबल्स की छोटी संख्या का उपयोग करते हुए - मूल वेरिएबल्स की प्रकृति की परवाह किए बिना प्राप्त किया जा सकता है।p

लोडिंग मैट्रिक्स के साथ डेटा मैट्रिक्स को गुणा करना वांछित परिणाम देगा। हालाँकि, मुझे princomp()फंक्शन में कुछ समस्याएँ थीं इसलिए मैंने prcomp()इसके बजाय इस्तेमाल किया।

फ़ंक्शन का एक रिटर्न मान prcomp()है x, जिसका उपयोग करके सक्रिय किया गया है retx=TRUE। यह एक्स लोडिंग मैट्रिक्स द्वारा डेटा मैट्रिक्स का गुणा है जैसा कि आर प्रलेखन में कहा गया है:

    rotation: the matrix of variable
              loadings (i.e., a matrix whose columns
              contain the eigenvectors).  The function princomp returns
              this in the element loadings’.

           x: if retx is true the value of the rotated data (the centred
              (and scaled if requested) data multiplied by the rotation
              matrix) is returned.  Hence, cov(x)’ is the diagonal matrix
              diag(sdev^2)’.  For the formula method, napredict()’ is
              applied to handle the treatment of values omitted by the
              na.action’.

मुझे बताएं कि क्या यह उपयोगी था, या अगर इसे और सुधार की आवश्यकता है।

-

आईटी जॉलीफ़। प्रमुख कंपोनेंट विश्लेषण। स्प्रिंगर। दूसरा प्रकाशन। 2002. पीपी 339-343।


@dees_stats: आपके उत्तर के लिए धन्यवाद। मैंने prcomp के साथ कोशिश की () और सभी वेरिएबल as.numeric () की आपूर्ति की; परिणाम प्रशंसनीय लगता है। क्या आप कृपया Jollife से पेज नंबर प्रदान कर सकते हैं?
Andrej

@Andrej I ने उत्तर संपादित किया। उद्धरण धारा 13.1, पृष्ठ
339 से है
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.