数据框含缺失值时如何计算偏相关?R技术求助
解决
pcor()返回NA的问题 方法1:处理缺失值后使用ggm::pcor()
ggm::pcor()依赖协方差矩阵计算,默认var()函数遇到缺失值会返回NA,可通过以下两种方式解决:
方式A:保留完整案例(列表删除)
先移除所有含缺失值的行,再计算协方差矩阵与偏相关:
# 移除含缺失值的样本 clean_data <- na.omit(studentLecturerPersonalityOnlyTraits) # 计算协方差矩阵 cov_matrix <- var(clean_data) # 计算偏相关:控制开放性、宜人性、尽责性,求外向性与神经质的偏相关 pc_result <- pcor(c("studentExtraversion", "studentNeuroticism", "studentOpenness", "studentAgreeableness", "studentConscientiousness"), cov_matrix) pc_result
方式B:成对完整案例计算协方差矩阵
若不想丢失过多样本,用cov()的use = "pairwise.complete.obs"参数生成支持缺失值处理的协方差矩阵:
# 生成支持成对缺失值处理的协方差矩阵 cov_pairwise <- cov(studentLecturerPersonalityOnlyTraits, use = "pairwise.complete.obs") # 计算偏相关 pc_result <- pcor(c("studentExtraversion", "studentNeuroticism", "studentOpenness", "studentAgreeableness", "studentConscientiousness"), cov_pairwise) pc_result
方法2:使用ppcor包的pcor()函数(推荐)
ppcor包的pcor()原生支持缺失值处理,无需手动处理协方差矩阵,用法和cor()类似:
- 安装并加载包:
install.packages("ppcor") library(ppcor)
- 直接计算偏相关:
# 计算偏相关,指定缺失值处理方式 pc_result <- pcor(studentLecturerPersonalityOnlyTraits, method = "pearson", use = "pairwise.complete.obs") # 提取外向性与神经质的偏相关系数 pc_result$estimate["studentExtraversion", "studentNeuroticism"]
内容的提问来源于stack exchange,提问作者user21767262
相关产品推荐
相关产品推荐

