R का उपयोग करके dichotomous डेटा (बाइनरी चर) पर एक कारक विश्लेषण के एक उदाहरण के माध्यम से एक कदम की तलाश में है


14

मेरे पास कुछ द्विध्रुवीय डेटा हैं, केवल द्विआधारी चर, और मेरे मालिक ने मुझे टेट्राकोरिक सहसंबंध मैट्रिक्स का उपयोग करके एक कारक विश्लेषण करने के लिए कहा। मैं पहले खुद को यहाँ और UCLA के स्टेट साइट पर और इसके जैसे अन्य साइटों के आधार पर अलग-अलग विश्लेषण चलाने के बारे में सिखा सकता हूँ , लेकिन मैं dichotomous पर एक कारक विश्लेषण के उदाहरण के माध्यम से एक कदम नहीं खोज सकता हूँ डेटा (बाइनरी चर) का उपयोग करके आर।

मैं देखा था CHL की प्रतिक्रिया कुछ हद तक एक simular सवाल का है और मैं यह भी देखा ttnphns 'जवाब है, लेकिन मैं और भी अधिक कुछ के लिए देख रहा हूँ से बताया , एक उदाहरण मैं के साथ काम कर सकते हैं के माध्यम से एक कदम है।

आर का उपयोग कर द्विआधारी चर पर एक कारक विश्लेषण के उदाहरण के माध्यम से यहां किसी को इस तरह के एक कदम के बारे में पता है ?

अपडेट 2012-07-11 22: 03: 35Z

मुझे यह भी जोड़ना चाहिए कि मैं एक स्थापित इंस्ट्रूमेंट के साथ काम कर रहा हूं, जिसमें तीन आयाम हैं, जिसमें हमने कुछ अतिरिक्त प्रश्न जोड़े हैं और अब हम चार अलग-अलग आयामों को खोजने की उम्मीद करते हैं। इसके अलावा, हमारे नमूने का आकार केवल , और वर्तमान में हमारे पास आइटम हैं। मैंने अपने नमूने के आकार और वस्तुओं की संख्या की तुलना कई मनोविज्ञान लेखों से की है और हम निश्चित रूप से निचले छोर पर हैं, लेकिन हम वैसे भी कोशिश करना चाहते थे। हालाँकि, यह महत्वपूर्ण नहीं है कि उदाहरण के माध्यम से कदम के लिए मैं देख रहा हूँ और नीचे caracal का उदाहरण वास्तव में आश्चर्यजनक है। मैं अपने तरीके से काम करूंगा और सुबह अपने डेटा का उपयोग करूंगा।n=15319


1
जैसा कि एफए जरूरी नहीं कि सबसे अच्छा विकल्प हो सकता है, इस सवाल पर निर्भर करता है कि आप किस विषय में रुचि रखते हैं, क्या आप अपने अध्ययन के संदर्भ में अधिक कह सकते हैं?
CHL

@chl, मेरे प्रश्न का उत्तर देने के लिए धन्यवाद, हम PTSD के संबंध में कुछ प्रश्नों की अंतर्निहित कारक संरचना की जांच कर रहे हैं । हम 1 में रुचि रखते हैं) कुछ डोमेन (क्लस्टर) और 2 की पहचान करते हुए जांचते हैं कि प्रत्येक डोमेन पर अलग-अलग प्रश्न कितना लोड करते हैं ।
एरिक फेल

1
बस यह सुनिश्चित करने के लिए, (ए) आपका नमूना आकार क्या है, (बी) यह एक मौजूदा (पहले से मान्य) साधन या स्व-निर्मित प्रश्नावली है?
CHL

@chl, मैं वास्तव में आपके सवालों की सराहना करता हूं। (ए) हमारे नमूने का आकार , और वर्तमान में हमारे पास १ ९ आइटम हैं। मैंने अपने नमूने के आकार और वस्तुओं की संख्या की तुलना की, जो मुझे जर्नल ऑफ ट्रूमैटिक स्ट्रेस में मिल सकते हैं और हम निश्चित रूप से निचले छोर पर हैं, लेकिन हम इसे वैसे भी आज़माना चाहते थे। (b) हम एक मौजूदा उपकरण का उपयोग कर रहे हैं, लेकिन कुछ स्व-निर्मित प्रश्नों के साथ, क्योंकि हम मानते हैं कि वे गायब हैंn=153
एरिक फेल

1
ठीक है, इसके लिए धन्यवाद। आर। में चित्रण के साथ एक काम करने वाले उदाहरण को स्थापित करना आसान होना चाहिए
११'१२ को १२:०४

जवाबों:


22

मुझे लगता है कि यह सवाल सैद्धांतिक पक्ष पर कम है, और व्यावहारिक पक्ष पर अधिक है, अर्थात, आर में द्विबीजपत्री डेटा के एक कारक विश्लेषण को कैसे लागू किया जाए।

सबसे पहले, 2 ऑर्थोगोनल कारकों से आने वाले 6 चरों में से 200 अवलोकनों का अनुकरण करते हैं। मैं मध्यवर्ती चरणों के एक जोड़े को ले जाऊंगा और बहुभिन्नरूपी सामान्य निरंतर डेटा के साथ शुरू करूंगा जो कि मैं बाद में द्विभाजित करता हूं। इस प्रकार, हम पियरसन सहसंबंधों की तुलना पॉलीकोरिक सहसंबंधों से कर सकते हैं, और द्विधातु डेटा और सच्चे लोडिंग से निरंतर डेटा से कारक लोडिंग की तुलना कर सकते हैं।

set.seed(1.234)
N <- 200                             # number of observations
P <- 6                               # number of variables
Q <- 2                               # number of factors

# true P x Q loading matrix -> variable-factor correlations
Lambda <- matrix(c(0.7,-0.4, 0.8,0, -0.2,0.9, -0.3,0.4, 0.3,0.7, -0.8,0.1),
                 nrow=P, ncol=Q, byrow=TRUE)

एक्स=Λ+एक्सΛ

library(mvtnorm)                      # for rmvnorm()
FF  <- rmvnorm(N, mean=c(5, 15), sigma=diag(Q))    # factor scores (uncorrelated factors)
E   <- rmvnorm(N, rep(0, P), diag(P)) # matrix with iid, mean 0, normal errors
X   <- FF %*% t(Lambda) + E           # matrix with variable values
Xdf <- data.frame(X)                  # data also as a data frame

निरंतर डेटा के लिए कारक विश्लेषण करें। अप्रासंगिक संकेत की अनदेखी करने पर अनुमानित लोडिंग सही वाले के समान हैं।

> library(psych) # for fa(), fa.poly(), factor.plot(), fa.diagram(), fa.parallel.poly, vss()
> fa(X, nfactors=2, rotate="varimax")$loadings     # factor analysis continuous data
Loadings:
     MR2    MR1   
[1,] -0.602 -0.125
[2,] -0.450  0.102
[3,]  0.341  0.386
[4,]  0.443  0.251
[5,] -0.156  0.985
[6,]  0.590       

अब डेटा को डाइकोटोमाइज़ करते हैं। हम डेटा को दो प्रारूपों में रखेंगे: ऑर्डर किए गए कारकों के साथ डेटा फ़्रेम के रूप में और संख्यात्मक मैट्रिक्स के रूप में। hetcor()पैकेज polycorसे हमें पॉलीकोरिक सहसंबंध मैट्रिक्स देता है जिसे हम बाद में एफए के लिए उपयोग करेंगे।

# dichotomize variables into a list of ordered factors
Xdi    <- lapply(Xdf, function(x) cut(x, breaks=c(-Inf, median(x), Inf), ordered=TRUE))
Xdidf  <- do.call("data.frame", Xdi) # combine list into a data frame
XdiNum <- data.matrix(Xdidf)         # dichotomized data as a numeric matrix

library(polycor)                     # for hetcor()
pc <- hetcor(Xdidf, ML=TRUE)         # polychoric corr matrix -> component correlations

अब नियमित एफए करने के लिए पॉलीकोरिक सहसंबंध मैट्रिक्स का उपयोग करें। ध्यान दें कि अनुमानित लोडिंग निरंतर डेटा से काफी हद तक समान हैं।

> faPC <- fa(r=pc$correlations, nfactors=2, n.obs=N, rotate="varimax")
> faPC$loadings
Loadings:
   MR2    MR1   
X1 -0.706 -0.150
X2 -0.278  0.167
X3  0.482  0.182
X4  0.598  0.226
X5  0.143  0.987
X6  0.571       

आप स्वयं पॉलीकोरिक सहसंबंध मैट्रिक्स की गणना के चरण को छोड़ सकते हैं, और सीधे fa.poly()पैकेज से उपयोग कर सकते हैं psych, जो अंत में एक ही काम करता है। यह फ़ंक्शन एक सांख्यिक मैट्रिक्स के रूप में कच्चे विचित्र डेटा को स्वीकार करता है।

faPCdirect <- fa.poly(XdiNum, nfactors=2, rotate="varimax")    # polychoric FA
faPCdirect$fa$loadings        # loadings are the same as above ...

संपादित करें: कारक स्कोर के लिए, पैकेज को देखें ltmजिसमें factor.scores()विशेष रूप से बहुपद परिणाम डेटा के लिए एक फ़ंक्शन है। इस पृष्ठ पर एक उदाहरण दिया गया है -> "फैक्टर स्कोर - एबिलिटी अनुमान"।

आप का उपयोग कर कारक विश्लेषण से लोडिंग कल्पना कर सकते हैं factor.plot()और fa.diagram()पैकेज से दोनों, psych। किसी कारण से , परिणाम का factor.plot()केवल $faघटक को स्वीकार करता है fa.poly(), न कि पूर्ण वस्तु को।

factor.plot(faPCdirect$fa, cut=0.5)
fa.diagram(faPCdirect)

factor.plot () और fa.diagram () से आउटपुट

समानांतर विश्लेषण और "बहुत सरल संरचना" विश्लेषण कारकों की संख्या का चयन करने में सहायता प्रदान करते हैं। फिर से, पैकेज psychमें आवश्यक कार्य हैं। vss()एक तर्क के रूप में पॉलीकोरिक सहसंबंध मैट्रिक्स लेता है।

fa.parallel.poly(XdiNum)      # parallel analysis for dichotomous data
vss(pc$correlations, n.obs=N, rotate="varimax")   # very simple structure

पैकेज द्वारा पॉलीकोरिक एफए के लिए समानांतर विश्लेषण भी प्रदान किया जाता है random.polychor.pa

library(random.polychor.pa)    # for random.polychor.pa()
random.polychor.pa(data.matrix=XdiNum, nrep=5, q.eigen=0.99)

fa.parallel.poly () और random.polychor.pa से उत्पादन ()

ध्यान दें कि कार्य fa()और fa.poly()एफए स्थापित करने के लिए कई और विकल्प प्रदान करते हैं। इसके अलावा, मैंने कुछ आउटपुट का संपादन किया जो फिट परीक्षणों आदि की अच्छाई देता है। इन कार्यों के लिए प्रलेखन (और psychसामान्य रूप से पैकेज ) उत्कृष्ट है। यह उदाहरण यहां आपको आरंभ करने के लिए है।


उदाहरण के माध्यम से आपका कदम बहुत अच्छा लग रहा है। मैं अपने तरीके से सुबह अपने डेटा का उपयोग करके काम करूंगा और वापस आपके पास पहुंचूंगा। यह लिखने का समय देने के लिए धन्यवाद। यदि आप कुछ सैद्धांतिक संदर्भ होते हैं, तो मुझे भी उनमें दिलचस्पी होगी। आर में साइकोमेट्रिक्स के लिए Chl ने Revelle की पाठ्यपुस्तक की सिफारिश की और मैं निश्चित रूप से उस पर एक नज़र रखने जा रहा हूं। साभार
एरिक फेल

@caracal: psychकिसी भी तरह फैक्टर स्कोर का अनुमान लगाने की अनुमति देता है जब पॉली / टेट्रा-कोरिक संबंध सामान्य पियर्सन आर के स्थान पर उपयोग किए जाते हैं?
ttnphns

3
क्षमा करें, @caracal, मैं R उपयोगकर्ता नहीं हूं। ऐसा इसलिए है क्यों मैं इसे पूछ रहा हूँ। चूंकि आपने मूल पियरसन आर का उपयोग नहीं किया है, लेकिन टेट्राचोरिक आर आपने मूल बाइनरी डेटा और लोडिंग मैट्रिक्स के बीच सीधा रैखिक-बीजीय लिंक खो दिया है। मुझे लगता है कि इस मामले में क्लासिक प्रतिगमन / बार्टलेट एक के स्थान पर कुछ विशेष अहंकार (जैसे ईएम दृष्टिकोण पर आधारित) का उपयोग किया जाएगा। तो क्या psychयह इस तथ्य के कारण देता है कि हम tetrachoric r के साथ काम कर रहे थे, न कि सामान्य रूप से r, जब यह कारक स्कोर की गणना करता है, या नहीं?
ttnphns

1
@EricFail बहुपत्नी सहसंबंध के रूप में युग्मक सहसंबंधों के माध्यम से जाने का अनुमान है, एक सकारात्मक सकारात्मक अंत मैट्रिक्स वास्तव में अधिक सामान्य हो जाता है क्योंकि चर की संख्या बढ़ जाती है, और टिप्पणियों की संख्या तय हो गई है (इस MPlus चर्चा देखें )। जैसे कार्यों nearcor()से sfsmiscया cor.smooth()से psychइस मामले के लिए उपयोग किया जाता है।
काराकल

1
@ttnphns क्षमा करें, मैंने आपके प्रश्न को गलत समझा। अच्छा प्रश्न! मैं मूल रूप से MPlus तकनीकी परिशिष्ट 11 लागू किया गया था की तरह है कि कुछ मान लिया है, लेकिन के लिए कोड को देख psychके factor.scores(), यह स्थिति नहीं है। इसके बजाय, स्कोर की गणना निरंतर मामले की तरह ही की जाती है। हालांकि, factor.scores()पैकेज में फ़ंक्शन ltmसही प्रक्रियाओं को लागू करने के लिए लगता है, इस उदाहरण को देखें -> "फैक्टर स्कोर - एबिलिटी अनुमान" और सहायता पृष्ठ।
काराकल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.