ความช่วยเหลือเกี่ยวกับการสร้างแบบจำลอง SEM (OpenMx, polycor)


10

ฉันมีปัญหามากมายกับชุดข้อมูลเดียวที่ฉันพยายามใช้ SEM

เราสมมติว่ามีปัจจัยแฝง 5 ตัวคือ A, B, C, D, E พร้อมด้วยตัวชี้วัด A1 ถึง A5 (ปัจจัยที่สั่ง), B1 ถึง B3 (เชิงปริมาณ), C1, D1, E1 (ทั้งหมดสามปัจจัยสุดท้ายที่สั่งโดยมีเพียง 2 ระดับสำหรับ E1 เรามีความสนใจในความแปรปรวนร่วมระหว่างปัจจัยทั้งหมด

ฉันพยายามที่จะใช้OpenMxเพื่อทำเช่นนั้น นี่คือความพยายามของฉัน:

  • ฉันก่อนพยายามใช้การฝึกอบรมขีด จำกัด สำหรับปัจจัยที่สั่งทั้งหมด แต่การบรรจบล้มเหลว

  • ฉันตัดสินใจที่จะใช้ความสัมพันธ์แบบ polychoric / polyserial แทนข้อมูลดิบด้วยฟังก์ชั่นhetcorจากห้องสมุดpolycor(ฉันวางแผนที่จะบูตตัวอย่างเพื่อรับช่วงความมั่นใจ) มันก็ล้มเหลวที่จะมาบรรจบกัน!

  • ฉันพยายาม จำกัด เฉพาะบุคคลที่มีข้อมูลครบถ้วน แต่ก็ล้มเหลวด้วย!

คำถามแรกของฉันคือ: มีวิธีธรรมชาติในการตีความความล้มเหลวเหล่านี้?

คำถามที่สองของฉันคือฉันควรทำอย่างไร ???

แก้ไข: สำหรับผู้อ่านในอนาคตที่อาจพบปัญหาเดียวกันหลังจากที่ไปถึงรหัสของฟังก์ชั่นในการpolycor... การแก้ปัญหาเป็นเพียงการใช้งานที่มีตัวเลือกhetcor() std.err=FALSEสิ่งนี้ให้การประมาณการที่คล้ายกันมากกับ StasK ที่ให้ไว้ ตอนนี้ฉันไม่มีเวลาพอที่จะเข้าใจสิ่งที่เกิดขึ้นที่นี่! คำถามด้านล่างได้รับคำตอบที่ค่อนข้างดีจาก StasK

ฉันมีคำถามอื่น ๆ แต่ก่อนหน้านี้นี่คือ URL ที่มีไฟล์ RData ที่มีกรอบข้อมูล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ซึ่งคุณต้องการรายงานต่อ John Fox ทุกอย่างทำงานได้ดีใน Stata โดยใช้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 กับลิงค์ประเภท Probit (ลำดับ) ก็อาจหมายความว่าคุณจะต้องยืนยันว่าแฝงของคุณเทียบเท่ากับตัวบ่งชี้ที่สังเกตหรือคุณต้องโหลดโหลดมาตรฐาน . สิ่งนี้ทำให้โมเดลของคุณเทียบเท่ากับ CFA ที่คุณมีปัจจัยแฝง A และ B ที่วัดได้ด้วย {A1-A5, C1, D1, E1} และ {B1-B3, C1, D1, E1} ตามลำดับ


ขอบคุณมากที่สละเวลาลอง! ดังนั้น: ไม่มีใครมีทางเลือกที่จะแนะนำสำหรับการคำนวณความสัมพันธ์เหล่านี้ใน R?
Elvis

เกี่ยวกับปัจจัยต่างๆฉันรู้สึกถึงบางสิ่งบางอย่างที่แฝงอยู่ในนั้น แต่ฉันก็ยังไม่แน่ใจ ในสิ่งที่ฉันเขียนฉันมีความสัมพันธ์เช่น - ยกเว้นว่านี้อันที่จริงแล้วเป็น polytomy ของสิ่งนี้ แม้ว่ามันจะไม่ได้อยู่ในอันดับ แต่เป็นเชิงปริมาณเพราะฉันให้ความสัมพันธ์เท่านั้น (ไม่ใช่ความแปรปรวนร่วม) ฉันไม่เข้าใจว่าขนาดของนั้นจะถูกดึงกลับมาได้อย่างไร ผมหมายถึงไม่เพียง แต่ความแปรปรวนของแต่ยังค่าของ\อย่างไรก็ตามการแก้ไขมันทำให้แย่ลง! ฉันเข้าใจสิ่งต่าง ๆ ได้ดีขึ้นเมื่อเราใส่ข้อมูลดิบ แต่น่าเสียดายที่สิ่งนี้ล้มเหลว ...A i A i ϵ α iAi=αiA+ϵAiAiϵαi
Elvis

สำหรับปัจจัยที่มีสิ่งบ่งชี้เพียงอย่างเดียวนั้นแย่ที่สุด ... ! อันที่จริง C1, D1, E1 เป็นผลรวมของตัวแปรหลายตัว พวกเขาเป็นแบบนี้เมื่อฉันได้รับข้อมูลฉันถามถึงชุดข้อมูลทั้งหมดเพราะฉันคิดว่ามันดีกว่า แต่ในบางจุดฉันกลับไปที่ผลรวมเนื่องจากไม่มีอะไรทำงานได้ดี ... ถ้าฉันสามารถหาวิธีคำนวณ ความสัมพันธ์เหล่านี้กับ R ฉันจะใช้ชุดข้อมูลแบบเต็ม
Elvis

โอเคตอนนี้ฉันคิดว่ามันดีกว่าฉันคิดว่าฉันเข้าใจแล้ว
Elvis
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.