如何在matlab中计算相关矩阵

use*_*514 3 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
Run Code Online (Sandbox Code Playgroud)

你能告诉我如何计算相关矩阵吗?可以'corrcoef'用于该计划吗?或者还有其他方法.请告诉我.谢谢!

yuk*_*yuk 6

您可以使用CORRCORRCOEF功能.两个函数都将返回相同的相关矩阵(对于非常低的p值,结果可能会有所不同,具体取决于您的MATLAB版本).

您需要处理NaN值.两者都有参数'rows'.以下是可能参数值的文档引用:

'all'(默认)使用所有行,'complete'使用没有NaN值的行,或'pairwise'使用在i或j列中没有NaN值的行计算R(i,j).

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

所以,如果你x1,x2并且x3是用于获得相关矩阵的列向量:

[rho, pval] = corr([x1, x2, x3], 'rows','pairwise');
Run Code Online (Sandbox Code Playgroud)

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

[rho, pval] = corr(x, 'rows','pairwise');
Run Code Online (Sandbox Code Playgroud)

或者用corrcoef而不是corr.CORR还可以计算Pearson相关性以外的其他数据,如Spearman或Kendall.使用'type'参数指定它.