SEM मॉडलिंग (OpenMx, पॉलीकोर) के साथ मदद


10

मुझे एक डेटा सेट के साथ बहुत समस्या है जिसके लिए मैं SEM को लागू करने का प्रयास कर रहा हूं।

हम संकेतक के सम्मान के साथ 5 अव्यक्त कारकों ए, बी, सी, डी, ई के अस्तित्व को मानते हैं। ए 1 से ए 5 (ऑर्डर किए गए कारक), बी 1 से बी 3 (मात्रात्मक), सी 1, डी 1, ई 1 (सभी पिछले तीन ऑर्डर किए गए कारक, ई 1 के लिए केवल 2 स्तरों के साथ। हम सभी कारकों के बीच सहसंबंधों में रुचि रखते हैं।

मैंने ऐसा करने के लिए उपयोग OpenMxकरने की कोशिश की । यहाँ मेरे कुछ प्रयास हैं:

  • मैंने पहले सभी ऑर्डर किए गए कारकों के लिए थ्रेसहोल्ड मैट्रिस का उपयोग करने की कोशिश की, लेकिन अभिसरण विफल रहा।

  • मैंने कच्चे डेटा के बजाय पॉलीकोरिक / पॉलीसेरियल सहसंबंधों का उपयोग करने का फैसला किया, hetcorपुस्तकालय से समारोह के साथ polycor(मैंने आत्मविश्वास अंतराल प्राप्त करने के लिए नमूना बूटस्ट्रैप करने की योजना बनाई)। यह भी अभिसरण करने में विफल रहता है!

  • मैंने पूर्ण डेटा वाले व्यक्तियों को प्रतिबंधित करने का प्रयास किया, यह भी विफल है!

मेरा पहला सवाल यह है कि क्या इन विफलताओं की व्याख्या करने का कोई प्राकृतिक तरीका है?

मेरा दूसरा सवाल है: मुझे क्या करना चाहिए ???

संपादित करें: भविष्य के पाठकों के लिए जो एक ही समस्या का सामना कर सकते हैं , कार्यों के कोड में जाने के बाद polycor... समाधान बस hetcor()विकल्प के साथ उपयोग करना है std.err=FALSE। यह उन StasK द्वारा दिए गए अनुमानों के समान है। मुझे यह समझने में समय की कमी है कि यहाँ क्या हो रहा है! नीचे दिए गए सवालों का StasK द्वारा बहुत अच्छी तरह से उत्तर दिया गया है।

मेरे पास अन्य प्रश्न हैं, लेकिन कुछ भी होने से पहले, यहाँ एक RDD फ़ाइल के साथ एक url है L1जिसमें केवल पूर्ण डेटा वाला डेटा फ़्रेम है : data_sem.RData

यहाँ कोड की कुछ पंक्तियाँ विफलता दिखाती हैं hetcor

> require("OpenMx")
> require("polycor")
> load("data_sem.RData")
> hetcor(L1)
Erreur dans cut.default(scale(x), c(-Inf, row.cuts, Inf)) : 
  'breaks' are not unique
De plus : Il y a eu 11 avis (utilisez warnings() pour les visionner)
> head(L1)
   A1 A2 A3 A4 A5       B1       B2       B3 C1 D1 E1
1   4  5  4  5  7 -0.82759  0.01884 -3.34641  4  6  1
4   7  5  0  4  6 -0.18103  0.14364  0.35730  0  1  0
7   7  5  7  6  9 -0.61207 -0.18914  0.13943  0  0  0
10  5  5 10  7  3 -1.47414  0.10204  0.13943  2  0  0
11  7  5  8  9  9 -0.61207  0.06044 -0.73203  0  2  0
12  5  5  9 10  5  0.25000 -0.52192  1.44662  0  0  0

लेकिन मैं अभी भी एक बहुत ही गंदे तरीके से सहसंबंध या सहसंयोजक मैट्रिक्स की गणना कर सकता हूं, मेरे आदेशित कारकों को मात्रात्मक चर के रूप में देखते हुए:

> Cor0 <- cor(data.frame(lapply(L1, as.numeric)))

यहाँ OpenMxमेरे अगले प्रश्न के साथ कोड का एक टुकड़ा है : निम्नलिखित मॉडल सही है? बहुत अधिक मुक्त पैरामीटर नहीं?

manif <- c("A1","A2","A3","A4","A5", "B1","B2","B3", "C1", "D1", "E1");

model1 <- mxModel(type="RAM",
        manifestVars=manif, latentVars=c("A","B","C","D","E"),
        # factor variance
        mxPath(from=c("A","B","C","D","E"), arrows=2, free=FALSE, values = 1),
        # factor covariance
        mxPath(from="A", to="B",  arrows=2, values=0.5),
        mxPath(from="A", to="C",  arrows=2, values=0.5),
        mxPath(from="A", to="D",  arrows=2, values=0.5),
        mxPath(from="A", to="E",  arrows=2, values=0.5),
        mxPath(from="B", to="C",  arrows=2, values=0.5),
        mxPath(from="B", to="D",  arrows=2, values=0.5),
        mxPath(from="B", to="E",  arrows=2, values=0.5),
        mxPath(from="C", to="D",  arrows=2, values=0.5),
        mxPath(from="C", to="E",  arrows=2, values=0.5),
        mxPath(from="D", to="E",  arrows=2, values=0.5),
        # factors → manifest vars
        mxPath(from="A", to=c("A1","A2","A3","A4","A5"), free=TRUE, values=1),
        mxPath(from="B", to=c("B1","B2","B3"), free=TRUE, values=1),
        mxPath(from="C", to=c("C1"), free=TRUE, values=1),
        mxPath(from="D", to=c("D1"), free=TRUE, values=1),
        mxPath(from="E", to=c("E1"), free=TRUE, values=1),
        # error terms
        mxPath(from=manif, arrows=2, values=1, free=TRUE),
        # data
        mxData(Cor0, type="cor",numObs=dim(L1)[1])
       );

और एक आखिरी सवाल। इस मॉडल के साथ (चलो एक पल के लिए भूल जाओ जिस तरह से सहसंबंध मैट्रिक्स की गणना की जाती है), मैं OpenMx चलाता हूं:

> mxRun(model1) -> fit1
Running untitled1 
> summary(fit1)

सारांश के बीच, यह:

observed statistics:  55 
estimated parameters:  32 
degrees of freedom:  23 
-2 log likelihood:  543.5287 
saturated -2 log likelihood:  476.945 
number of observations:  62 
chi-square:  66.58374 
p:  4.048787e-06 

मापदंडों की भारी संख्या के बावजूद, फिट बहुत बुरा लगता है। इसका क्या मतलब है? क्या इसका मतलब है कि हमें प्रकट चर के बीच सहसंबंध जोड़ना चाहिए?

आपके सभी उत्तर के लिए अग्रिम धन्यवाद, मैं धीरे-धीरे पागल हो रहा हूँ ...

जवाबों:


10

आपने एक बग को खोल दिया होगा polycor, जिसमें आप जॉन फॉक्स को रिपोर्ट करना चाहेंगे। मेरे polychoricपैकेज का उपयोग करके स्टाटा में सब कुछ ठीक चलता है :

    . polychoric *

    Polychoric correlation matrix

               A1          A2          A3          A4          A5          B1          B2          B3          C1          D1          E1
   A1           1
   A2   .34544812           1
   A3   .39920225   .19641726           1
   A4   .09468652   .04343741   .31995685           1
   A5   .30728339   -.0600463   .24367634   .18099061           1
   B1   .01998441  -.29765985   .13740987   .21810968   .14069473           1
   B2  -.19808738   .17745687  -.29049459  -.21054867   .02824307  -.57600551          1
   B3   .17807109  -.18042045   .44605383   .40447746   .18369998   .49883132  -.50906364           1
   C1  -.35973454  -.33099295  -.19920454  -.14631621  -.36058235   .00066762  -.05129489  -.11907687           1
   D1   -.3934594  -.21234022  -.39764587  -.30230591  -.04982743  -.09899428   .14494953   -.5400759   .05427906           1
   E1  -.13284936   .17703745  -.30631236  -.23069382  -.49212315  -.26670382   .24678619  -.47247566    .2956692   .28645516           1

अव्यक्त चर है कि एक ही सूचक के साथ मापा जाता है ( C, D, E), आप, इसके बारे में निरंतर संस्करण में सूचक के विचरण ठीक करने के लिए के रूप में अन्यथा अव्यक्त चर के पैमाने पहचान नहीं है की जरूरत है। यह देखते हुए कि बाइनरी / ऑर्डिनल प्रतिक्रियाओं के साथ, वैसे भी (ऑर्डिनल) प्रोबिट-प्रकार लिंक के साथ 1 पर तय किया गया है, इसका मतलब है कि शायद आपको यह बताना होगा कि आपका अव्यक्त मनाया संकेतक के बराबर है, या आपको मानक लोडिंग को स्थगित करना होगा । यह अनिवार्य रूप से आपके मॉडल को एक सीएफए मॉडल के समतुल्य बनाता है, जहां आपके पास क्रमशः {A1-A5, C1, D1, E1} और {B1-B3, C1, D1, E1} के साथ अव्यक्त कारक A और B हैं।


इस कोशिश के लिए समय निकालने के लिए बहुत धन्यवाद! तो: क्या किसी के पास आर में इन सहसंबंधों की गणना करने के लिए सुझाव देने का विकल्प है?
एल्विस

कारकों के बारे में, मुझे पता था कि कुछ बेस वहाँ में दुबका हुआ था - लेकिन मुझे यकीन नहीं है कि मैं अभी तक पूरी तरह से समझ रहा हूँ। मैंने जो लिखा है, उसमें जैसे संबंध हैं - सिवाय इसके कि यह वास्तव में इसका एक बहुदेववाद है। यहां तक ​​कि अगर यह सामान्य नहीं है, लेकिन मात्रात्मक है, क्योंकि मैं केवल सहसंबंध देता हूं (कोविरियस भी नहीं) मुझे नहीं मिलता है कि के पैमाने को कैसे पुनः प्राप्त किया जा सकता है। मेरा मतलब है कि केवल का विचरण ही नहीं , बल्कि the का मान भी । हालाँकि इसे ठीक करने से फिट बिगड़ जाता है! मैं चीजों को बेहतर समझता हूं जब हम कच्चे डेटा को फिट करते हैं, लेकिन दुर्भाग्य से यह विफल हो जाता है ...Ai=αiA+ϵAiAiϵαi
एल्विस

एक संकेतक के साथ कारकों के लिए चीजें सिर्फ सबसे खराब हैं ...! वास्तव में C1, D1, E1 कई चर के योग हैं; वे इस तरह से थे जब मुझे डेटा प्रदान किया गया था, मैंने पूरे डेटा सेट के लिए कहा क्योंकि मुझे लगा कि यह बेहतर था लेकिन कुछ बिंदु पर मैंने रकम वापस कर दी क्योंकि कुछ भी अच्छी तरह से काम नहीं कर रहा था ... अगर मुझे गणना करने का तरीका मिल सकता है R के साथ ये सहसंबंध मैं पूर्ण डेटा सेट का उपयोग करूंगा।
एल्विस

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