使用mice做MICE多重插补后调用tidyLPA做潜剖面分析报错问询
问题根源
你遇到的报错由两个代码逻辑问题导致:
mice的with()方法作用在插补对象(mids类型)时,内部调用函数的输入是单份插补数据集,不需要再重复传入imputation对象tidyLPA的estimate_profiles()函数不支持直接接收mids类型的插补对象,仅支持单份数据框作为输入,因此会触发维度不匹配的报错。
另外多重插补后做LPA确实没有原生的pool()方法可用,pool()仅适配回归类模型的参数合并,LPA属于有限混合聚类模型,需要手动处理结果合并逻辑。
可行实现方案
1. 修正后的运行代码
library("mice") library("tidyLPA") data <- data.frame(ID = c(1, 1, 2, 2, 3, 3, 3, 4, 4, 4), var1 = c(1, 2, 5, 10, NA, 5, 23, NA, NA, 1), var2 = c(1, NA, NA, 1, NA, 0, 1, 3, 23, 4)) # 多重插补步骤保持不变 imputation <- mice(data, m = 5, method = c("", "pmm", "pmm"), maxit = 20) # 步骤1:提取所有插补后的数据集,返回长度为m的列表 imp_datasets <- complete(imputation, action = "all") # 步骤2:批量对每个插补数据集运行LPA lpa_results <- lapply(imp_datasets, function(df){ # 仅保留用于LPA分析的变量,避免ID等非指标变量干扰 select_vars <- df[, c("var1", "var2")] return(estimate_profiles(select_vars, n_profiles = 2, variances = "equal", covariances = "equal")) }) # 查看第1个插补集的LPA拟合结果 summary(lpa_results[[1]])
2. 结果合并建议
因为没有官方适配的合并方法,推荐两种常用的合并逻辑:
- 拟合指标汇总:遍历所有
lpa_results提取AIC、BIC、熵值等拟合指标,计算均值、标准差和取值范围,用来判断最优潜类别数量 - 个体分类结果合并:提取每个插补集下每条记录属于各个类别的概率,对m个插补集的同类别概率取平均后,选择平均概率最高的类别作为个体的最终分类,该方法可以纳入不同插补数据集间的变异,避免直接平均分类标签的偏差。
内容的提问来源于stack exchange,提问作者user13069688
相关产品推荐
相关产品推荐

