【发布时间】:2020-07-02 02:45:09
【问题描述】:
我想在多个协变量控制的多列之间进行偏相关分析,然后提取r和p值。 我的真实数据有一些缺失值。
我发现这个答案 (Pairwise partial correlation of a matrix, controlling by one variable) 可能有用,所以我将这个方法调整到我的代码中。因为我有缺失值,所以我不能使用ppcor::pcor.test(),它被描述为'Missing values are not allowed',来实现我的目标。
这里我使用内置的数据集mtcars来展示我遇到的问题。
# load "ggm" packages to perform partial correlation analysis
library(ggm)
# subset mtcars dataset and make some datapoints as missing values
mydata <- cbind(mtcars[1:8])
mydata[4:10,3] <- rep(NA,7)
mydata[1:5,4] <- NA
# perform partial correlation analysis among the first 6 columns with the last two columns as covariates
sapply(1:(ncol(mydata)-2), function(x) sapply(1:(ncol(mydata)-2), function(y) {
if (x == y) 1
else ggm::pcor(c(mydata[,x], mydata[,y], mydata[,7], mydata[,8]),var(mydata))
}))
# error:
Error in S[u, u] : subscript out of bounds
我在这一步出错,既不能执行偏相关,也不能提取 r 和 p 值。
非常感谢你帮助我!
艾拉
【问题讨论】:
-
看来
ggm::pcor函数只是删除了包含缺失值的列。有谁知道哪个可以执行偏相关分析的函数会删除缺失值的行而不是删除列?
标签: r correlation sapply