Làm thế nào để dự đoán điểm yếu tố trong Lavaan


7

Khi thực hiện CFA Lavaan, tôi phải sử dụng ma trận hiệp phương sai làm đầu vào vì tôi gặp một số lỗi với dữ liệu gốc, ví dụ: phương sai âm.

Tôi thường có thể dự đoán điểm yếu tố bằng cách sử dụng predict()hàm, các lavPredicthàm giống nhau, nhưng bây giờ tôi đang sử dụng ma trận hiệp phương sai, không thể thực hiện điều này trực tiếp.

Có cách nào để sử dụng thông tin từ CFA để tính điểm yếu tố theo cách tương tự Lavaankhông? Tôi tin rằng predict()hàm sử dụng phương pháp hồi quy để tính điểm yếu tố.

Đây là mã mẫu để tạo điểm yếu tố với dữ liệu thô làm đầu vào. Sử dụng phương pháp này tôi gặp lỗi ở một trong các phương sai của mình:

library(lavaan)

model1 = '
Latent1 =~ X1 + X2
Latent2 =~ X3 + X4 + X5
Latent3 =~ X6 + X7
'

model1.fit = cfa(model1, data=mydata) #fit Lavaan model

predict(model1.fit) #Predict factor scores (method of regression)

Đây là mã để tạo ra các điểm yếu tố với ma trận hiệp phương sai làm đầu vào. Không có thông báo lỗi ở đây, nhưng tôi không thể tạo ra điểm yếu tố vì không có dữ liệu để liên kết chúng với:

cov = cor2cov(cor,std) #(using cor2cov function to create covariance matrix out of correlation table (cor) and standard deviations (std))

model2 = '
Latent1 =~ X1+ X2
Latent2 =~ X3 + X4 + X5
Latent3 =~ X6 + X7
'

model2.fit = cfa(model=model2, sample.cov=cov,sample.nobs=102,std.lv=FALSE)

Làm cách nào để tiếp tục từ đây để tạo điểm số bằng cách sử dụng kết quả từ Lavaanphân tích CFA?


1
Nếu bạn gặp lỗi với dữ liệu, bạn sẽ gặp lỗi với ma trận hiệp phương sai (trừ khi bạn bị thiếu dữ liệu hoặc sử dụng thứ gì đó không phải ML). có lẽ một số mã sẽ giúp đỡ?
Jeremy Miles

1
Xin chào Jeremy, không nhất thiết. Một số lỗi sẽ biến mất nếu bạn chỉ sử dụng ma trận hiệp phương sai và độ lệch chuẩn làm đầu vào cho Lavaan. Vấn đề là bây giờ tôi không thể sử dụng hàm dự đoán () và việc tính điểm yếu tố một cách độc lập bằng phương pháp hồi quy nằm ngoài bộ kỹ năng hiện tại của tôi ...
Charlie Glez

Ở bên phải màn hình, tôi thấy một số câu hỏi liên quan, ví dụ: stats.stackexchange.com/q/142285/3277 . Điều đó có thể giúp gì không?
ttnphns

Chỉ để biết thông tin, tôi đã có ý tưởng sử dụng bảng hiệp phương sai thay vì dữ liệu thô để có được các mô hình tốt hơn từ các bài giảng CFA của Erin Buchanan, chẳng hạn như bài này: youtube.com/iêu (tối 6 đến 9)
Charlie Glez

Hi ttnphns, không thực sự. Tôi thấy câu trả lời đó, nhưng phản ứng ma trận nằm ngoài tầm hiểu biết của tôi. và một điều khác "Vì điểm yếu tố là một hàm tuyến tính của các vật thể quan sát, nên khi bạn đã tính toán chúng một lần, bạn chỉ cần sử dụng lm để điều chỉnh hồi quy tuyến tính giữa điểm số phù hợp và điểm quan sát.", không thực sự áp dụng vì tôi không thể tính được điểm số phù hợp.
Charlie Glez

Câu trả lời:


4

Câu hỏi này đã nhận được một số lượt xem kể từ lần đầu tiên được đặt ra, nhưng không có câu trả lời. Đây là một giải pháp, có thể hữu ích cho những người đọc tương lai của câu hỏi này.

Để chứng minh nó hoạt động, trước tiên tôi sẽ chạy một cfa()mô hình bằng cách sử dụng HolzingerSwineford1939. Mô hình được lấy từ lavaan trang hướng dẫn .

library(lavaan)
dat<-data.frame(HolzingerSwineford1939[,7:15])

mod<-'
visual=~x1+x2+x3
textual=~x4+x5+x6
speed=~x7+x8+x9
'

fit<-cfa(mod, data = dat)

Điều này trả về giải pháp sau:

> summary(fit)
lavaan (0.5-22) converged normally after  35 iterations

  Number of observations                           301

  Estimator                                         ML
  Minimum Function Test Statistic               85.306
  Degrees of freedom                                24
  P-value (Chi-square)                           0.000

Parameter Estimates:

  Information                                 Expected
  Standard Errors                             Standard

Latent Variables:
                   Estimate  Std.Err  z-value  P(>|z|)
  visual =~                                           
    x1                1.000                           
    x2                0.554    0.100    5.554    0.000
    x3                0.729    0.109    6.685    0.000
  textual =~                                          
    x4                1.000                           
    x5                1.113    0.065   17.014    0.000
    x6                0.926    0.055   16.703    0.000
  speed =~                                            
    x7                1.000                           
    x8                1.180    0.165    7.152    0.000
    x9                1.082    0.151    7.155    0.000

Covariances:
                   Estimate  Std.Err  z-value  P(>|z|)
  visual ~~                                           
    textual           0.408    0.074    5.552    0.000
    speed             0.262    0.056    4.660    0.000
  textual ~~                                          
    speed             0.173    0.049    3.518    0.000

Variances:
                   Estimate  Std.Err  z-value  P(>|z|)
   .x1                0.549    0.114    4.833    0.000
   .x2                1.134    0.102   11.146    0.000
   .x3                0.844    0.091    9.317    0.000
   .x4                0.371    0.048    7.779    0.000
   .x5                0.446    0.058    7.642    0.000
   .x6                0.356    0.043    8.277    0.000
   .x7                0.799    0.081    9.823    0.000
   .x8                0.488    0.074    6.573    0.000
   .x9                0.566    0.071    8.003    0.000
    visual            0.809    0.145    5.564    0.000
    textual           0.979    0.112    8.737    0.000
    speed             0.384    0.086    4.451    0.000

Khi sử dụng dữ liệu thô để nhập lavPredict()predict()trả về các giá trị dự đoán cho các biến tiềm ẩn.

> head(lavPredict(fit))
          visual     textual       speed
[1,] -0.81767524 -0.13754501  0.06150726
[2,]  0.04951940 -1.01272402  0.62549360
[3,] -0.76139670 -1.87228634 -0.84057276
[4,]  0.41934153  0.01848569 -0.27133710
[5,] -0.41590481 -0.12225009  0.19432951
[6,]  0.02325632 -1.32981727  0.70885348

Chạy cùng một mô hình với ma trận hiệp phương sai khi đầu vào trả về cùng kết quả, nhưng khi ghi chú áp phích ban đầu dẫn đến lỗi khi cố gắng lấy được điểm yếu tố.

> COV<-cov(dat)
> fit1<-cfa(mod, sample.cov = COV, sample.nobs = 301, sample.mean = colMeans(dat))
> lavPredict(fit1)
Error in lavPredict(fit1) : 
  lavaan ERROR: sample statistics were used for fitting and newdata is empty

Giải pháp khá đơn giản vì những gì gói cần là một số dữ liệu thô để "nhai" để nói. Ở đây bạn sửa đổi mã để xác định tập dữ liệu gốc là đầu vào dữ liệu thô cho hàm dự đoán ( lavPredict(fit1, newdata = dat)). Điều này trả về các mục sau (nhớ là cùng một mô hình được trang bị trong dung nham nhưng sử dụng ma trận hiệp phương sai làm đầu vào).

> head(lavPredict(fit1, newdata = dat))
          visual     textual       speed
[1,] -0.81767524 -0.13754501  0.06150726
[2,]  0.04951940 -1.01272402  0.62549360
[3,] -0.76139670 -1.87228634 -0.84057276
[4,]  0.41934153  0.01848569 -0.27133710
[5,] -0.41590481 -0.12225009  0.19432951
[6,]  0.02325632 -1.32981727  0.70885348

Như bạn có thể thấy kết quả là giống hệt nhau.


Cảm ơn, Matt. Nhưng, điều gì xảy ra nếu bạn chỉ có ma trận cov mà không có tệp dữ liệu thô ban đầu.
Tiến sĩ Mehmet Türegün

Bạn đang nói rằng bạn có ma trận hiệp phương sai và một đối tượng dung nham đã được trang bị (và / hoặc mô hình)? Bạn chỉ không có dữ liệu thô tạo ra hiệp phương sai hoặc mô hình?
Matt Barstead
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.