我有一个数据集如下所示;
x1 x2 x3
-10.593017 NaN NaN
-10.300049 3.624823938 NaN
-11.776855 3.707569866 NaN
-10.342041 3.770059949 NaN
-19.416992 3.819520417 6.516808442
-12.051026 3.898067841 6.753639662
NaN 3.687338806 6.317082898
NaN NaN 6.226243427
你能告诉我如何计算相关矩阵吗?可以'corrcoef'用于该计划吗?或者还有其他方法。请告诉我。谢谢!
答案 0 :(得分:6)
您可以使用CORR或CORRCOEF功能。这两个函数都将返回相同的相关矩阵(根据您的MATLAB版本,结果可能因p值非常低而不同。)
你需要照顾NaN值。两者都有参数'rows'
。以下是可能参数值的文档引用:
'all'(默认)使用所有行,'complete'使用no行 NaN值,或“成对”使用没有NaN的行计算R(i,j) 列i或j中的值。
如果您有NaN元素设置'rows'
到'all '
将使用所有元素,但您将获得NaN作为结果。 'complete'
将仅使用任何列中没有NaN的行。 'pairwise'
是我通常使用的,它会为每个比较独立地删除带有NaN的行。
因此,如果x1
,x2
和x3
是列向量,则可以使用相关矩阵:
[rho, pval] = corr([x1, x2, x3], 'rows','pairwise');
如果您的变量是一个矩阵x
中的列:
[rho, pval] = corr(x, 'rows','pairwise');
或使用corrcoef
代替corr
。 CORR还可以计算Pearson相关性以外的其他数据,如Spearman或Kendall。使用'type'
参数指定它。