Tôi có rất nhiều vấn đề với một bộ dữ liệu mà tôi đang cố gắng áp dụng SEM.
Chúng tôi cho rằng sự tồn tại của 5 yếu tố tiềm ẩn A, B, C, D, E, với các chỉ số tương ứng. A1 đến A5 (các yếu tố theo thứ tự), B1 đến B3 (định lượng), C1, D1, E1 (tất cả ba yếu tố được đặt hàng cuối cùng, chỉ có 2 cấp độ cho E1. Chúng tôi quan tâm đến hiệp phương sai giữa tất cả các yếu tố.
Tôi đã cố gắng sử dụng OpenMx
để làm như vậy. Dưới đây là một vài nỗ lực của tôi:
Trước tiên tôi đã thử sử dụng ma trận ngưỡng cho tất cả các yếu tố được đặt hàng, nhưng sự hội tụ không thành công.
Tôi đã quyết định sử dụng các tương quan đa âm / đa hình thay vì dữ liệu thô, với chức năng
hetcor
từ thư việnpolycor
(tôi dự định khởi động lại mẫu để có được khoảng tin cậy). Nó cũng không hội tụ!Tôi đã cố gắng hạn chế cho các cá nhân có dữ liệu đầy đủ, nó cũng thất bại!
Câu hỏi đầu tiên của tôi là: có cách nào tự nhiên để diễn giải những thất bại này không?
Câu hỏi thứ hai của tôi là: tôi nên làm gì ???
Chỉnh sửa: đối với những độc giả tương lai có thể gặp phải vấn đề tương tự , sau khi xem qua mã của các hàm trong polycor
... giải pháp chỉ đơn giản là sử dụng hetcor()
với tùy chọn std.err=FALSE
. Điều này đưa ra ước tính rất giống với những StasK đã đưa ra. Bây giờ tôi thiếu thời gian để hiểu rõ hơn những gì đang diễn ra ở đây! Các câu hỏi dưới đây đã được StasK trả lời khá tốt.
Tôi có các câu hỏi khác, nhưng trước đây, đây là một url với tệp RData chứa khung dữ liệu L1
chỉ chứa dữ liệu đầy đủ: data_sem.RData
Dưới đây là một vài dòng mã cho thấy sự thất bại của 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
Nhưng tôi vẫn có thể tính toán một mối tương quan hoặc ma trận hiệp phương sai theo cách rất bẩn, coi các yếu tố được sắp xếp của tôi là các biến định lượng:
> Cor0 <- cor(data.frame(lapply(L1, as.numeric)))
Đây là một đoạn OpenMx
mã cùng với câu hỏi tiếp theo của tôi: mô hình sau có đúng không? Không có quá nhiều thông số miễn phí?
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])
);
Và một câu hỏi cuối cùng. Với mô hình này (hãy quên một chút cách tính ma trận tương quan không phù hợp), tôi chạy OpenMx:
> mxRun(model1) -> fit1
Running untitled1
> summary(fit1)
Trong số các bản tóm tắt, điều này:
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
Sự phù hợp có vẻ rất xấu, mặc dù số lượng lớn các tham số. Điều đó nghĩa là gì? Điều đó có nghĩa là chúng ta nên thêm hiệp phương sai giữa các biến số?
Rất cám ơn trước tất cả các câu trả lời của bạn, tôi đang dần trở nên điên rồ ...