如何从missMDA的MIPCA结果中提取第一主成分?
从MIPCA结果中提取第一主成分
针对你用missMDA包执行多重插补PCA(MIPCA)后提取第一主成分的需求,这里提供两种可行方法,分别对应单个插补数据集和多重插补的合并结果:
方法1:提取单个插补数据集的第一主成分
mi$res.imputePCA是基于单次插补得到的PCA结果,其中$ind$coord存储了所有样本在各主成分上的得分,第一列即为第一主成分:
# 提取第一主成分得分 pc1_single <- mi$res.imputePCA$ind$coord[, 1] # 将得分加入原数据集 df <- df %>% mutate(PC1_single = pc1_single)
方法2:合并多重插补数据集的第一主成分(推荐)
你设置了nboot=999生成了999个插补数据集,严谨来说需要遵循Rubin规则合并所有插补结果的主成分得分,步骤如下:
- 遍历所有插补后的PCA结果,提取每个数据集的第一主成分得分
- 将所有得分合并为矩阵,计算每行(样本)的均值作为最终主成分得分(点估计),同时可计算方差用于后续推断
# 提取所有999个插补数据集的第一主成分得分 pc1_list <- lapply(mi$res.MI, function(imputed_pca) { imputed_pca$ind$coord[, 1] # 取第一列即第一主成分 }) # 转换为矩阵:行=样本,列=不同插补的PC1得分 pc1_matrix <- do.call(cbind, pc1_list) # 用Rubin规则合并:均值作为最终得分,方差用于统计推断 pc1_combined_mean <- rowMeans(pc1_matrix) pc1_combined_var <- apply(pc1_matrix, 1, var) # 将合并后的得分加入原数据集 df <- df %>% mutate(PC1_combined = pc1_combined_mean)
关键说明
mi$res.MI中的每个元素都是imputePCA的输出结果,结构和mi$res.imputePCA完全一致,均可通过$ind$coord获取主成分得分- 若后续模型仅需要主成分作为特征输入,使用合并后的均值即可;若需考虑插补带来的不确定性,需结合方差进行调整
内容的提问来源于stack exchange,提问作者tnt
相关产品推荐
相关产品推荐

