有人能根据包含值和广度的排名来过滤相关矩阵(或相关列表)吗?例如,如果某个变量与足够多的其他变量具有足够高的相关性,则保留该变量。如果变量不符合这些条件,则将其过滤掉。
作为示例: 如果在> 3个条目中发现相关性> 0.25,请保留此变量。如果不是,则丢弃该变量。
当前,我能够构造一个相关矩阵并根据值对其进行过滤,但目前尚无法解决。为了进行过滤,我将低于阈值的值设置为0
correlation_matrix <- round(cor(data, method = "pearson", use = "pairwise.complete.obs"), digits = 4)
correlation_matrix[correlation_matrix < 0.13 & correlation_matrix > -0.13] <- 0
答案 0 :(得分:0)
我现在已经使用上面提到的Rui来应用了。
此代码用于选择相关矩阵中的所有行(和列),其中所有行(和列)的值至少超过75(宽度)超过0.2(阈值):
1)定义变量;将对角线值设置为1到0
threshold <- 0.2
breadth <- 75
correlation_matrix_filter <- correlation_matrix
diag(correlation_matrix_filter) <- 0
2)计算每行有多少个值大于0.2的阈值
filter <- apply(correlation_matrix_filter,1, function(x) sum(abs(x) >= threshold))
3)仅选择包含大于阈值的75个值的行;将原始相关矩阵的子集只包含这些行(和列)
sel <- filter >= breadth
correlation_matrix_final <- correlation_matrix[sel,sel]