如果我没有正确理解您要查找的内容:
如果您想使用相关阈值来排除某些变量,您可以尝试以下方法
在此处的示例中,我正在生成一个随机矩阵
> 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"
希望对你有帮助