繁体   English   中英

如何从多个 lavaan 模型中提取一个特定系数?

[英]How can I extract one specific coefficient from multiple lavaan models?

我写了一个 function 来一次运行多个 lavaan 模型(来自 5 个不同的数据集)。 在 output 中,我得到了 5 个不同的输出。 但是,我想从这些模型中的每一个中提取一个特定的估计,因为我在元分析中使用这些(并且我有更多的模型)

这是我运行 model 的代码:

df_list <- list ('Y1'=emo_dyn_1,'Y2'=emo_dyn_2,'Y3'=emo_dyn_3,'Y4'=emo_dyn_4,'Y5'=emo_dyn_5)

model <- 'DepB ~ isdNA + imeanNA + sex + age'

fun = function(emo_dyn){
  fit=sem(model,
          data=emo_dyn,
          estimator = "MLR", 
          missing = "ml.x")
  summ = summary(fit, standardized = TRUE)
  
  list(fit = fit,summary = summ)
  
}

results <- lapply(df_list,fun)
names(results) <- names(df_list)
results

这就是我提取系数的方式。 它有点使它成为 dataframe 然后我从中提取特定值。 不确定这是否是最佳选择。 它是关于特定路径的标准化估计。 但它只是复制和粘贴,我相信这会更容易,但我不知道如何编写这个循环。

emo_dyn_1_est<-standardizedSolution(results$Y1$fit) # Standardised coefficients
emo_dyn_1_est_1<-emo_dyn_1_est[1, 4]
emo_dyn_1_est_1

emo_dyn_2_est<-standardizedSolution(results$Y2$fit) # Standardised coefficients
emo_dyn_2_est_2<-emo_dyn_2_est[1, 4]
emo_dyn_2_est_2

emo_dyn_3_est<-standardizedSolution(results$Y3$fit) # Standardised coefficients
emo_dyn_3_est_3<-emo_dyn_3_est[1, 4]
emo_dyn_3_est_3

emo_dyn_4_est<-standardizedSolution(results$Y4$fit) # Standardised coefficients
emo_dyn_4_est_4<-emo_dyn_4_est[1, 4]
emo_dyn_4_est_4

emo_dyn_5_est<-standardizedSolution(results$Y5$fit) # Standardised coefficients
emo_dyn_5_est_5<-emo_dyn_5_est[1, 4]
emo_dyn_5_est_5

lavaanparameterEstimates function 所以你可以这样做:

df_list <- list ('Y1'=emo_dyn_1,'Y2'=emo_dyn_2,'Y3'=emo_dyn_3,'Y4'=emo_dyn_4,'Y5'=emo_dyn_5)

model <- 'DepB ~ isdNA + imeanNA + sex + age'

fun <- function(emo_dyn){
  fit <- sem(model,
          data=emo_dyn,
          estimator = "MLR", 
          missing = "ml.x")
  
  fit
}

results <- lapply(df_list,fun)
names(results) <- names(df_list)

## Get a specific parameter
get_param <- function(fit, coef_pos) {
    param <- parameterEstimates(fit, standardized = TRUE)[coef_pos, "std.lv"]
    param
}

lapply(results, get_param, coef_pos = 1)

我做了一个改变:在你的lapply中得到结果,我只保持 model 合适。 如果你想要所有的总结,你可以做lapply(results, summary) get_param function 假设您知道所需参数的结果表中的 position。

如果您想保留现有的lapply以获得结果,那么这样的事情会起作用:

results_fit_only <- lapply(results, "[[", "fit")
lapply(results_fit_only, get_param, coef_pos = 1)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM