加速 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
当您的数据包含更多缺失观察值时,请查看该函数的帮助文件以了解有关版本之间差异的详细信息。
我有一个包含 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
当您的数据包含更多缺失观察值时,请查看该函数的帮助文件以了解有关版本之间差异的详细信息。