2016-03-21 28 views
4

私は49変数と4M行のデータフレームを持っています。私は49 x 49の相関行列を計算したいと思います。すべての列はクラス数値です。ここで相関行列計算の高速化R

はサンプルです:

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を持っています。

デスクトップでこの計算を高速化する方法はありますか?

+1

[こちら](http://www.r-bloggers.com/bigcor-large-correlation-matrices-in-r/) – akrun

+1

あなたの主な問題は 'use =" pairwise.complete.obs "です。 '。私のシステム(12列でテスト済み)では 'use =" everything "'の5倍の時間がかかります。 – Roland

答えて

1

WGCNAパッケージにはより高速なcor機能があります(相関に基づいて遺伝子ネットワークを推論するために使用されます)。 RAMの16ギガバイト/ wの私の3.1 GHzのi7の上では約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 

をあなたのデータをより不足している観測値が含まれている場合、バージョン間の相違点の詳細については、関数のヘルプファイルをチェックしてください。