[英]filter a correlation matrix based on value and occurrence
有没有人有办法根据包含价值和广度的排名来过滤相关矩阵(或相关列表)? 例如,如果某个变量与足够多的其他变量具有足够高的相关性,则保留它。 如果变量不符合这些条件,请将其过滤掉。
例如:如果在 > 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
我现在已经使用上面提到的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]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.