【发布时间】:2015-05-12 18:39:18
【问题描述】:
我有一个 100 列的表,我想对其运行成对偏相关,使用 ppcor 包中的 pcor.test 函数通过第 100 列的变量进行控制。 R 中是否有任何偏相关函数可以使用类似rcorr 的返回值,采用整个矩阵的成对相关性但仅由一个变量控制?
【问题讨论】:
标签: r
我有一个 100 列的表,我想对其运行成对偏相关,使用 ppcor 包中的 pcor.test 函数通过第 100 列的变量进行控制。 R 中是否有任何偏相关函数可以使用类似rcorr 的返回值,采用整个矩阵的成对相关性但仅由一个变量控制?
【问题讨论】:
标签: r
对于一个 n 列矩阵,您想要输出前 n-1 列的成对相关性的 (n-1) x (n-1) 矩阵,控制最后一列(使用@987654321 @ 来自ppcor 包的函数)。
您可以使用 sapply 函数执行此操作,循环遍历每一列并使用 pcor.test 计算其与所有其他列的相关性:
# Sample dataset with 5 columns
set.seed(144)
dat <- matrix(rnorm(1000), ncol=5)
# Compute the 4x4 correlation matrix, controlling for the fifth column
library(ppcor)
sapply(1:(ncol(dat)-1), function(x) sapply(1:(ncol(dat)-1), function(y) {
if (x == y) 1
else pcor.test(dat[,x], dat[,y], dat[,ncol(dat)])$estimate
}))
# [,1] [,2] [,3] [,4]
# [1,] 1.000000000 -0.01885158 0.06037621 0.004032437
# [2,] -0.018851576 1.00000000 0.09560611 0.097152907
# [3,] 0.060376208 0.09560611 1.00000000 0.105123093
# [4,] 0.004032437 0.09715291 0.10512309 1.000000000
【讨论】: