0
我正在處理一個大型數據集,我懷疑它存在多重共線性問題,因爲var-協方差矩陣有一個負的特徵值(並且與其餘部分相比真的很小);也比最大特徵值/分特徵值> 3000;R中的多重性測試
我的問題是:R中是否有任何測試程序只是爲了確定哪些變量是多餘的(我不適用於迴歸模型);我可能會做線性迴歸對圖或使用對(數據)命令,但我真的很感謝一些數值測試的幫助,因爲我有200個變量和圖形在這個問題上不是很好的決策支持。
我正在處理一個大型數據集,我懷疑它存在多重共線性問題,因爲var-協方差矩陣有一個負的特徵值(並且與其餘部分相比真的很小);也比最大特徵值/分特徵值> 3000;R中的多重性測試
我的問題是:R中是否有任何測試程序只是爲了確定哪些變量是多餘的(我不適用於迴歸模型);我可能會做線性迴歸對圖或使用對(數據)命令,但我真的很感謝一些數值測試的幫助,因爲我有200個變量和圖形在這個問題上不是很好的決策支持。
如果我undesrtood正確,您在找什麼:
如果你心裏有你想用排除一些變量,你可以試試下面的
在這裏的例子我是一個相關閾值產生隨機矩陣
> 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"
希望這有助於
一般來說,獲得有用的反饋,你需要提供一個[重複的例子, ](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)並展示一些你已經嘗試過的東西。 – Thomas