首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R-如何在多次数据补偿后从SEM回归中汇集结果

R-如何在多次数据补偿后从SEM回归中汇集结果
EN

Stack Overflow用户
提问于 2019-09-18 09:11:10
回答 1查看 161关注 0票数 0

我在R中的扫描电镜上做了多个数据填充,我有一个特定的数据填充算法,我正在测试,这就是为什么我“手动”而不是使用MItools来做池化。

代码语言:javascript
复制
for (i in 1:m){ # m is number of imputation
 # Imputation
 df_imputed <-  myImputationAlgorithm(df)

 # Fit model
 fitted_model<- sem(model, data=df_imputed, se="bootstrap",bootstrap=100)     

 # Save parameters for pooling
 # https://rdrr.io/cran/lavaan/man/lavInspect.html
 betas <- append(betas, lavInspect(fitted_model, "coef"))
 vars <- append(vars,   lavInspect(fitted_model, "vcov"))

}
# Pooling
summary(MIcombine(betas, vars))

我正在尝试使用MIcombine()合并结果。我认为它应该可以工作,但我遗漏了输入格式的细节。我得到一个错误:Error in cbar + results[[i]] : non-conformable arrays

我遗漏了什么?

EN

回答 1

Stack Overflow用户

发布于 2019-09-19 07:08:46

我认为我可以直接从结果的lavaan矩阵中提取内容。

代码语言:javascript
复制
m<- 10 # Number of imputation

estimates <- as.data.frame(matrix(NA, nrow=29, ncol = m))   # Estimates
standErr <- as.data.frame(matrix(NA, nrow=29, ncol = m))    # Standard deviations
zvalue <- as.data.frame(matrix(NA, nrow=29, ncol = m))      # Z-value
pvalue <- as.data.frame(matrix(NA, nrow=29, ncol = m))      # P-value
tli <- as.data.frame(matrix(NA, nrow=1, ncol = m))          # TL 
cfi <- as.data.frame(matrix(NA, nrow=1, ncol = m))          # CFI
rmsea <- as.data.frame(matrix(NA, nrow=1, ncol = m))        # RMSEA 

for (i in 1:m){
  print(cat("Imputation #",i,"\n", sep= ""))
  df_imputed <-  myImputationAlgorithm() 

  # Estimation
  fitted_model<- sem(model, data=df_imputed, se="bootstrap",bootstrap=100)         

  # Extrcat results
  estimates[[i]] <- parameterEstimates(fitted_model)$est    # Estimate
  standErr[[i]]  <- parameterEstimates(fitted_model)$se     # Standard Error
  zvalue[[i]]    <- parameterEstimates(fitted_model)$z      # z-value  
  pvalue[[i]]    <- parameterEstimates(fitted_model)$pvalue # p-value
  tli[[i]]       <- inspect(fitted_model, "fit")["tli"]     # TLI
  cfi[[i]]       <- inspect(fitted_model, "fit")["cfi"]     # CFI
  rmsea[[i]]     <- inspect(fitted_model, "fit")["rmsea"]   # RMSEA


 }


  # Pooling
  mean_estimates  <- rowMeans(estimates)
  mean_standErr   <- rowMeans(standErr)
  mean_zvalue     <- rowMeans(zvalue)
  mean_pvalue     <- rowMeans(pvalue)
  mean_tli        <- rowMeans(tli)
  mean_cfi        <- rowMeans(cfi)
  mean_rmsea      <- rowMeans(rmsea)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57983747

复制
相关文章

相似问题

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