【发布时间】:2015-03-10 14:14:28
【问题描述】:
我有一个矩阵,我想在其中找到那些非常相似的列(我不想找到相同的列)
# to generate a matrix
Mat<- matrix(rexp(200, rate=.1), ncol=1000, nrow=400)
我个人想到了“cor”或“all.equal”,我做了如下,但没有奏效。
indexmax <- apply(Mat, MARGIN = 2, function(x) which(cor(x) >= 0.5, arr.ind = TRUE))
我需要的输出是显示哪些列高度相似以及它们的相似程度(可以是相关系数)
相似意味着它们的值在某个阈值内相似(例如超过 75% 的值残差(例如 column1-column2)小于 abs(0.5)
我也很想看看这与相关性有何不同。它们会产生相同的结果吗?
【问题讨论】:
-
您的意思是类似于 correlated 还是类似于它们的值的差异在某个阈值之内?如果您能详细说明类似的含义,将会很有帮助。
-
元素?你会认为 1,2,3,4 和 1.1,2.1,3.1,4.1 相似吗? 1,2,3,4 和 4,1,2,3 怎么样?
-
感谢@Alex 和其他人,我认为找到与在某个阈值内没有差异的那些高度相关的那些不会有太大的不同。我的主要想法是找到在阈值内高度相似的那些,但我很想看看当我们检查相关性时结果是否不同。无论如何,我更新了问题
-
我可能想错了,但我看到了一个简单的线性回归(将列视为时间序列),结果汇总输出正是您所需要的。如果顺序无关紧要,请事先按升序对它们进行排序。
-
我建议你计算距离矩阵。以
dist(t(Mat))开头。
标签: r