【发布时间】:2018-03-10 20:34:20
【问题描述】:
假设我有一个n-by-m 矩阵X,我想得到一个m-by-m 相关矩阵Y,其中每个元素Yij 是第 ith 列和第 jth 列之间的相关性。
但是,X 矩阵在随机位置包含许多 NaN 值。
直接的双循环方法是:
Y = nan(m,m);
for i = 1:1:m
for j = i:1:m
subset = intersect(find(~isnan(X(:,i))),find(~isnan(X(:,j))));
Y(i,j) = corr(X(subset,i),X(subset,j));
end
end
但这太慢了。有没有更有效的方法?
【问题讨论】:
-
这个问题定义不足。值与 NaN 的相关性是什么? NaN 与 NaN 的相关性是什么? (0, 0, 0, … 0) 与 (NaN,…NaN) 的相关性是否小于 (1000, 1000, 1000, …, 1000) 与 (NaN,…NaN) 的相关性?我建议了解您的数据问题,解决它,然后关联,而不仅仅是计算没有意义的某事,
-
@MarcusMüller 如果您仔细检查我上面的代码,您会发现它已经回答了您的问题。您给出的示例最终应该以 NaN 的相关性结束。
标签: matlab performance matrix nan correlation