如何通过R MplusAutomation包获得Mplus的“概率量表结果”输出?

时间:2017-07-10 19:44:07

标签: r

我正在使用Mplus执行潜在类分析,并尝试通过MplusAutomation包将输出输出到R(因为我这样做很多次,我想避免手动复制)。我想在Mplus输出的“模型结果”部分中获取“结果概率比例”子部分,但是我无法在MoutAutomation从.out文件创建的R对象中找到它。该对象包含一个“参数”数据框,其中包含“模型结果”部分中的其他信息,所以它是“概率量表中的结果”是对其他模型结果数据的简单转换,我可以自己做R'如果没有,是否有其他方法可以重新创建本节的结果,从我在R中的信息?或者我要查找的信息是否存储在输出中的其他位置?

1 个答案:

答案 0 :(得分:1)

“概率量表中的结果”部分似乎没有被MplusAutomation解析。

但是,您可以使用公式prob = 1 / (1 + exp(est))自行将阈值参数转换为概率比例。

例如,下面的代码应该以this UCLA example

的概率比例重现结果
library(dplyr)
library(tidyr)
library(MplusAutomation)

# Fetch & write output from UCLA LCA-example to temp file
lca_ex_out = tempfile(fileext = '.out')
fileConn <- file(lca_ex_out)
writeLines(readLines('https://stats.idre.ucla.edu/stat/mplus/dae/lca1.out'), fileConn)
close(fileConn)
lca_ex_result = readModels(lca_ex_out) # extract results from temp file

# select threshold parameters, covert to probability & layout in table
lca_ex_result$parameters$unstandardized %>%
  filter(paramHeader == 'Thresholds') %>%
  mutate(est_probscale = 1 / (1 + exp(est))) %>%
  select(param, LatentClass, est_probscale) %>%
  spread(LatentClass, est_probscale)

输出:

    param     1     2     3
1 ITEM1$1 0.908 0.312 0.923
2 ITEM2$1 0.337 0.164 0.546
3 ITEM3$1 0.067 0.036 0.426
4 ITEM4$1 0.065 0.056 0.418
5 ITEM5$1 0.219 0.044 0.765
6 ITEM6$1 0.320 0.183 0.471
7 ITEM7$1 0.113 0.098 0.512
8 ITEM8$1 0.140 0.110 0.619
9 ITEM9$1 0.325 0.188 0.349