【问题标题】:Monte Carlo and pooling a list of models fitted to multiply imputed data蒙特卡洛和汇集适合乘以估算数据的模型列表
【发布时间】:2022-08-09 17:35:44
【问题描述】:

我从现有数据框中创建了一个lavaan 模型,并使用该模型生成了一个数据框列表(每个数据框中缺少一些数据)。然后我进行多重插补以创建mids 对象列表(以解决丢失的数据),然后使用semTools::runMI 将原始lavaan 模型拟合到每个mids 对象。我的最终产品是lavaan.mi 对象列表。 (我可以很容易地单独生成每个lavaan.mi 对象的摘要,或者我可以制作另一个lavaan.parameterEstimates/lavaan.data.frame 对象列表)。

现在我在一个名为final_imp 的列表中有一个这些lavaan.mi 对象的列表,有没有办法将lavaan.mi 对象集中到一个lavaan.parameterEstimates 对象中?还是因为技术上每个lavaan.mi 对象都来自其自己独特的数据框(从原始模型生成之后),所以这是不可能的吗?

set.seed(123)
suppressMessages(library(mice))
suppressMessages(library(lavaan))
suppressMessages(library(simsem))
suppressMessages(library(semTools))
suppressMessages(library(tidyverse))

data(mtcars)
model <- \'gear ~ carb\'
fit <- sem(model, data = mtcars)
make_missing <- miss(package = \"mice\", m = 2, maxit = 2, seed = 123)

biglist <- sim(
  nRep = 10,
  model = fit,
  n = 5,
  rawData = mtcars,
  miss = make_missing,
  lavaanfun = \"sem\",
  modelBoot = TRUE,
  seed = 123,
  dataOnly = TRUE)
#> Progress: 1 / 11 
#> Progress: 2 / 11 
#> Progress: 3 / 11 
#> Progress: 4 / 11 
#> Progress: 5 / 11 
#> Progress: 6 / 11 
#> Progress: 7 / 11 
#> Progress: 8 / 11 
#> Progress: 9 / 11 
#> Progress: 10 / 11 
#> Progress: 11 / 11

run_mi <- function(x) { 
  mice::mice(x, m = 2, maxit = 2, seed = 123, printFlag = FALSE)
}

df_imp <- purrr::map(biglist, run_mi)
#> Warning: Number of logged events: 4
#> Warning: Number of logged events: 1

#> Warning: Number of logged events: 1

#> Warning: Number of logged events: 1
#> Warning: Number of logged events: 3
#> Warning: Number of logged events: 1

#> Warning: Number of logged events: 1
#> Warning: Number of logged events: 2
class(df_imp)
#> [1] \"list\"
class(df_imp[[1]])
#> [1] \"mids\"

run_sem <- function(x) {
  runMI(model = model, data = x, fun = \"sem\", miPackage = \"mice\", seed = 123)
}

final_imp <- purrr::map(df_imp, run_sem)
class(final_imp)
#> [1] \"list\"
length(final_imp)
#> [1] 10
class(final_imp[[1]])
#> [1] \"lavaan.mi\"
#> attr(,\"package\")
#> [1] \"semTools\"

    标签: r montecarlo r-mice r-lavaan structural-equation-model


    【解决方案1】:

    您可以在lavaan.mi 对象(由runMI() 函数返回)上使用summary() 方法。那是lavaan::parameterEstimates()semTools 模拟,它返回合并的结果。有关参数和其他适用方法的详细信息,请参阅class?lavaan.mi 帮助页面。

    【讨论】:

      猜你喜欢
      • 2018-02-10
      • 2021-01-06
      • 1970-01-01
      • 2017-08-06
      • 2020-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多