加速 R 中的相关矩阵计算

Speeding up correlation matrix calculation in R

我有一个包含 49 个变量和 400 万行的数据框。我想计算 49 x 49 的相关矩阵。所有列都是 class 数字。

这是一个示例:

df <- data.frame(replicate(49,sample(0:50,4000000,rep=TRUE)))

我使用了标准的 cor 函数。

cor_matrix <- cor(df, use = "pairwise.complete.obs")

这真的花了很长时间。我有 16GB RAM 和 i5 单核 2.60Ghz。

有没有办法在我的桌面上加快计算速度?

WGCNA 包中有一个更快版本的 cor 函数(用于根据相关性推断基因网络)。在我的 3.1 GHz i7 和 16 GB RAM 上,它可以以大约 20 倍的速度求解相同的 49 x 49 矩阵:

mat <- replicate(49, as.numeric(sample(0:50,4000000,rep=TRUE)))

system.time(
    cor_matrix <- cor(mat, use = "pairwise.complete.obs")
)
user  system elapsed 
40.391   0.017  40.396 

system.time(
    cor_matrix_w <- WGCNA::cor(mat, use = "pairwise.complete.obs")
)
user  system elapsed 
1.822   0.468   2.290 

all.equal(cor_matrix, cor_matrix_w)
[1] TRUE

当您的数据包含更多缺失观察值时,请查看该函数的帮助文件以了解有关版本之间差异的详细信息。