如何在matlab中计算相关矩阵

时间:2013-04-03 02:17:51

标签: matlab correlation

我有一个数据集如下所示;

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'用于该计划吗?或者还有其他方法。请告诉我。谢谢!

1 个答案:

答案 0 :(得分:6)

您可以使用CORRCORRCOEF功能。这两个函数都将返回相同的相关矩阵(根据您的MATLAB版本,结果可能因p值非常低而不同。)

你需要照顾NaN值。两者都有参数'rows'。以下是可能参数值的文档引用:

  

'all'(默认)使用所有行,'complete'使用no行   NaN值,或“成对”使用没有NaN的行计算R(i,j)   列i或j中的值。

如果您有NaN元素设置'rows''all '将使用所有元素,但您将获得NaN作为结果。 'complete'将仅使用任何列中没有NaN的行。 'pairwise'是我通常使用的,它会为每个比较独立地删除带有NaN的行。

因此,如果x1x2x3是列向量,则可以使用相关矩阵:

[rho, pval] = corr([x1, x2, x3], 'rows','pairwise');

如果您的变量是一个矩阵x中的列:

[rho, pval] = corr(x, 'rows','pairwise');

或使用corrcoef代替corr。 CORR还可以计算Pearson相关性以外的其他数据,如Spearman或Kendall。使用'type'参数指定它。