"रोटेशन" कारक विश्लेषण में विकसित एक दृष्टिकोण है; वहाँ घुमाव (जैसे कि varimax) को लोडिंग पर लागू किया जाता है , न कि सहसंयोजक मैट्रिक्स के eigenvectors के लिए। लोडिंग eigenvectors संबंधित eigenvalues के वर्गमूल द्वारा स्केल किए गए हैं। वेरीमैक्स रोटेशन के बाद, लोडिंग वैक्टर ऑर्थोगोनल नहीं होते हैं (भले ही रोटेशन को "ऑर्थोगोनल" कहा जाता है), इसलिए कोई भी घुमाए गए लोडिंग दिशाओं पर डेटा के ऑर्थोगोनल अनुमानों की गणना नहीं कर सकता है।
@ FTusell का जवाब मानता है कि वेरिमैक्स रोटेशन को आइजनवेक्टर (लोडिंग के लिए नहीं) पर लागू किया जाता है। यह बहुत अपरंपरागत होगा। कृपया विवरण के लिए PCA + varimax का मेरा विस्तृत विवरण देखें: क्या PCA एक रोटेशन (जैसे varimax) के बाद भी PCA है? संक्षेप में, यदि हम डेटा मैट्रिक्स के SVD को देखते हैं , तो लोडिंग को घुमाने के लिए कुछ रोटेशन मैट्रिक्स R के लिए R R ⊤ सम्मिलित करने का मतलब है: X = ( U R ) ( R ⊤ S V ⊤ ) ।X=USV⊤RR⊤RX=(UR)(R⊤SV⊤).
यदि रोटेशन को लोडिंग पर लागू किया जाता है (जैसा कि आमतौर पर होता है), तो आर में वेरिमैक्स-रोटेटेड पीसी की गणना करने के लिए कम से कम तीन आसान तरीके हैं:
वे फ़ंक्शन के माध्यम से आसानी से उपलब्ध हैं psych::principal
(यह दर्शाता है कि यह वास्तव में मानक दृष्टिकोण है)। ध्यान दें कि यह मानकीकृत स्कोर लौटाता है , अर्थात सभी पीसी में इकाई भिन्नता होती है।
एक मैन्युअल varimax
लोडिंग को घुमाने के लिए फ़ंक्शन का उपयोग कर सकता है , और फिर स्कोर प्राप्त करने के लिए नए घुमाए गए लोडिंग का उपयोग कर सकता है; किसी को रोटेट किए गए लोडिंग के ट्रांसपोज़्ड छद्म-व्युत्क्रम के साथ कई डेटा की आवश्यकता होती है ( @ttnphns द्वारा इस उत्तर में सूत्र देखें )। इससे मानकीकृत अंक भी प्राप्त होंगे।
एक varimax
लोडिंग को घुमाने के लिए फ़ंक्शन का उपयोग कर सकता है , और उसके बाद $rotmat
प्राप्त मानकीकृत स्कोर को घुमाने के लिए रोटेशन मैट्रिक्स का उपयोग कर सकता है prcomp
।
सभी तीन तरीकों से एक ही परिणाम मिलता है:
irisX <- iris[,1:4] # Iris data
ncomp <- 2
pca_iris_rotated <- psych::principal(irisX, rotate="varimax", nfactors=ncomp, scores=TRUE)
print(pca_iris_rotated$scores[1:5,]) # Scores returned by principal()
pca_iris <- prcomp(irisX, center=T, scale=T)
rawLoadings <- pca_iris$rotation[,1:ncomp] %*% diag(pca_iris$sdev, ncomp, ncomp)
rotatedLoadings <- varimax(rawLoadings)$loadings
invLoadings <- t(pracma::pinv(rotatedLoadings))
scores <- scale(irisX) %*% invLoadings
print(scores[1:5,]) # Scores computed via rotated loadings
scores <- scale(pca_iris$x[,1:2]) %*% varimax(rawLoadings)$rotmat
print(scores[1:5,]) # Scores computed via rotating the scores
यह तीन समान आउटपुट देता है:
1 -1.083475 0.9067262
2 -1.377536 -0.2648876
3 -1.419832 0.1165198
4 -1.471607 -0.1474634
5 -1.095296 1.0949536
नोट:varimax
आर में फ़ंक्शन का उपयोग करता normalize = TRUE, eps = 1e-5
डिफ़ॉल्ट (द्वारा मानकों दस्तावेज़ देखें )। eps
SPSS जैसे अन्य सॉफ़्टवेयर के परिणामों की तुलना करते समय कोई भी इन मापदंडों को बदलना चाहता है ( सहिष्णुता को कम करना और कैसर सामान्यीकरण का ख्याल रखना)। मेरा ध्यान में लाने के लिए मैं @GottfriedHelms का धन्यवाद करता हूं। [नोट: ये पैरामीटर varimax
फंक्शन में पास होने पर काम करते हैं, लेकिन फंक्शन में पास होने पर काम नहीं करते psych::principal
। यह एक बग प्रतीत होता है जिसे ठीक किया जाएगा।]