4

私は大きなデータセット(それぞれ約1000個の要素を持つ10,000個の変数としましょう)を持っています。これは2Dリストと考えることができます。

[[variable_1],
 [variable_2],
 ............
 [variable_n]
]

そのデータから相関性の高い変数ペアを抽出したいと思います。「高相関」を選択できるパラメータにしたいと思います。

すべてのペアを抽出する必要はありません。また、必ずしも最も相関の高いペアが必要なわけでもありません。相関性の高いペアを取得する効率的な方法がある限り、私は満足しています。

また、変数が複数のペアで表示されないようにすると便利です。これは重要ではないかもしれませんが。

もちろん、そのようなペアを見つけるためのブルートフォースの方法はありますが、私には遅すぎます。

私は少しグーグルでこの問題に関する理論的な研究を見つけましたが、私が探していることを実行できるパッケージを見つけることができませんでした。私は主にPythonで作業しているので、Pythonのパッケージが最も役立ちますが、Rにパッケージが存在する場合、私が探していることを実行するのは素晴らしいことです。

PythonまたはRで上記を実行するパッケージを知っている人はいますか?または他のアイデアはありますか?

前もって感謝します

4

3 に答える 3

9

どれだけ速くする必要があるかを教えてくれなかったので、単純な解決策を次に示します。

単純に相関行列を計算し、それを使用whichして目的のペアのインデックスを取得します。

x <- matrix(rnorm(10000*1000), ncol = 10000)
corm <- cor(x)
out <- which(abs(corm) > 0.80, arr.ind=TRUE)

次に、サブセット化を使用して、対角線と冗長なペアを取り除くことができます。

out[out[,1] > out[,2]]

私のマシンでは、相関行列の計算に約 75 秒かかり、which()部分の計算には約 3 秒かかります...冗長性のサブセット化には約 1.2 秒かかります。それは遅すぎますか?

于 2012-06-29T22:34:36.147 に答える
0

10,000 x 1,000 はサイズの問題ではないように思えます。パンダをチェック

于 2012-06-29T21:05:31.620 に答える