0

mice我想使用 R 包,semTools特别runMI是调用的函数对推算数据执行多组 SEM Lavaan

我可以在一次估算整个数据集时这样做,但是在浏览stackoverflow/stackexchange时,我遇到了建议为分组变量的每个级别(例如男性、女性)分别估算数据,以便每个组都被保留(例如https://stats.stackexchange.com/questions/149053/questions-on-multiple-imputation-with-mice-for-a-multigroup-sem-analysis-inclu)。但是,我找不到任何参考资料来支持这门课程。

我的问题既是概念性的又是实际的-

1)在输入正确的课程之前是否按组拆分数据集?谁能指出我的参考建议?

2)如果是这样,我如何将使用老鼠按组估算的数据集组合在一起,同时仍将多个估算数据集保留在中级数据帧列表中?我试图这样做,但最终得到一个整数

set.seed(12345)
HSMiss <- HolzingerSwineford1939[ , paste("x", 1:9, sep = "")]
HSMiss$x5 <- ifelse(HSMiss$x1 <= quantile(HSMiss$x1, .3), NA, HSMiss$x5)
HSMiss$x9 <- ifelse(is.na(HSMiss$x5), NA, HSMiss$x9)
HSMiss$school <- HolzingerSwineford1939$school

HS.model <- '
visual  =~ x1 + a*x2 + b*x3
textual =~ x4 + x5 + x6
x7 ~ textual + visual + x9
'

group1 <- subset(HSMiss, school =='Pasteur')
group2 <- subset(HSMiss, school =='Grant-White')

imputed.group1 <- mice(group1, m = 3, seed = 12345) 
imputed.group2 <- mice(group2, m = 3, seed = 12345) 


 #attempted merging:
    imputed.both <- nrow(complete(rbind(imputed.group1, imputed.group2)))

如果有人能为我提供帮助,我将不胜感激。如您所知,我仍然在学习 R 和插补,所以如果这是一个愚蠢的问题,我深表歉意 - 但是,我在其他地方找不到有关此特定查询的任何信息。

4

1 回答 1

1

合并时您只得到一个整数,因为您正在调用nrow(). 删除该调用,您将获得一个合并的数据框。

imputed.both <- complete(rbind(imputed.group1, imputed.group2))

如果您发现自己的数据集具有多个组,您可以使用以下方法来简化此任务。

imputed.groups <- lapply(split(HSMiss, HSMiss$school), function(x) {
  complete(mice(x, m = 3, seed = 12345))
})

imputed.both <- do.call(args = imputed.groups, what = rbind)

关于这种估算方法有多合适,这可能是一个更适合Cross Validated的问题。

于 2018-02-14T16:55:47.730 回答