首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将lavaan.mi对象(runMI(),semTools)提供给r中的semPaths (semPlot)

将lavaan.mi对象(runMI(),semTools)提供给r中的semPaths (semPlot)
EN

Stack Overflow用户
提问于 2019-12-12 20:45:07
回答 1查看 269关注 0票数 0

我正在尝试提供一个lavaan.mi对象(使用semTools 0.5-2中的runMI()对多个推算数据进行建模的扫描电镜)。到semPaths() (semPlot 1.1.2)。执行此操作将返回错误:

代码语言:javascript
复制
Error in (function (classes, fdef, mtable)  : 
  unable to find an inherited method for function ‘semPlotModel_S4’ for signature ‘"lavaan.mi"’

这在GitHub上被标记为一个“问题”,但如果能有一个建议的解决方法,我会很感激。下面是一个示例:

代码语言:javascript
复制
# Libraries 
library(mice)
library(semTools)
library(lavaan)
library(semPlot)

# Create DF 
HSMiss <- HolzingerSwineford1939[,paste("x", 1:9, sep="")]
randomMiss <- rbinom(prod(dim(HSMiss)), 1, 0.1)
randomMiss <- matrix(as.logical(randomMiss), nrow=nrow(HSMiss))
HSMiss[randomMiss] <- NA

# Specify model
HS.model <- ' visual  =~ x1 + x2 + x3
textual =~ x4 + x5 + x6
speed   =~ x7 + x8 + x9 '

# Fit the model 
model_fit <- runMI(HS.model, 
              data=HSMiss,
              m = 5, 
              miPackage="mice",
              fun="sem")

# Attempt to create SEM plot
semPaths(model_fit)
EN

回答 1

Stack Overflow用户

发布于 2019-12-17 01:08:54

因此,我使用的“解决方案”是简单地将MI模型中的参数估计值替换为从“lavaan”对象创建的“semPlotModel”对象:

代码语言:javascript
复制
# Libraries 
library(mice)
library(semTools)
library(lavaan)
library(semPlot)

# Create DF 
HSMiss <- HolzingerSwineford1939[,paste("x", 1:9, sep="")]
randomMiss <- rbinom(prod(dim(HSMiss)), 1, 0.1)
randomMiss <- matrix(as.logical(randomMiss), nrow=nrow(HSMiss))
HSMiss[randomMiss] <- NA

# Specify model
HS.model <- ' visual  =~ x1 + x2 + x3
textual =~ x4 + x5 + x6
speed   =~ x7 + x8 + x9 '

# Create a 'dummy' object, with the same model structure as we'll use in the MI method 
model_fit <- sem(HS.model,  data=HSMiss)

# Create a dummy semplot object 
SEMPLOT <- semPlot::semPlotModel(model_fit)

# Fit the actual model 
model_fit <- runMI(HS.model, 
                   data=HSMiss,
                   m = 5, 
                   miPackage="mice",
                   fun="sem")

# Extract the direct results from the SEM with MI data 
desired_output <- data.frame(standardizedsolution(model_fit))

# Subsitute the desired parameter estimates for the desired ones, in the semplot object 
SEMPLOT@Pars$std <- desired_output$est.std

# Create SEM plot
semPaths(SEMPLOT)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59304910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档