0

var-covariance 行列には負の固有値があるため (そして他のものと比較すると非常に小さい)、多重共線性の問題があると思われる大規模なデータセットを扱っています。また、比率の最大固有値/最小固有値 > 3000;

私の質問は次のとおりです。どの変数が冗長であるかを特定するためだけに、R にテスト ルーチンはありますか (私は回帰モデルを扱っていません)。線形回帰ペア グラフを作成するか、pairs(data) コマンドを使用するかもしれませんが、200 の変数があり、この問題ではグラフはあまり良い意思決定サポートではないため、数値テストの助けに本当に感謝しています。

4

1 に答える 1

0

あなたが探しているものを正しく理解している場合:

一部の変数を除外するために使用する相関しきい値を念頭に置いている場合は、次のことを試すことができます

ここの例では、ランダム行列を生成しています

> set.seed(3)
> data <- data.frame(V1=rnorm(20),V2=rnorm(20),V3=rnorm(20),V4=rnorm(20),V5=rnorm(20))
> cor.mat <- cor(data)
> diag(cor.mat)=0

これは相関行列で、変数は V1、V2、V3、V4、V5 です。

> cor.mat
            V1          V2         V3         V4         V5
V1  0.00000000 -0.14464568 0.09047839 -0.1200863 -0.1110384
V2 -0.14464568  0.00000000 0.04340839  0.1929009 -0.4354569
V3  0.09047839  0.04340839 0.00000000  0.1185795  0.1760463
V4 -0.12008631  0.19290090 0.11857953  0.0000000 -0.2080077
V5 -0.11103839 -0.43545694 0.17604633 -0.2080077  0.0000000

次に、次のループのifステートメントで、冗長変数を選択するために使用するしきい値を代入します (ここでは、これが冗長性を示していなくても、ランダム マトリックスから得られた最高値であっても .4 を使用します)。 .

> High_cor = vector()
> for (i in 1:nrow(cor.mat)){
+     for (j in 1:ncol(cor.mat)){
+        if (abs(cor.mat[i,j]) >= 0.4) {High_cor[i]=paste(rownames(cor.mat)[i], "-",
+                                                         colnames(cor.mat)[j])}
+ }
+ }
> High_cor <- High_cor[!is.na(High_cor)]

この場合、相関 > .4 の変数は V2 と V5 です。

> High_cor
[1] "V2 - V5" "V5 - V2"

お役に立てれば

于 2013-11-23T14:07:23.267 に答える