如何在Matlab中计算相关矩阵

4

我有一个数据集,如下所示:

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'吗?还是有其他方法。请告诉我。谢谢!


欢迎来到SO。请重新格式化您的问题,以符合SO FAQ标准。http://stackoverflow.com/faq - Black Maggie
你可以使用 corr2(x1,x2) 计算 x1x2 之间的相关性。同样,你也可以计算其他组之间的相关性。这符合你的要求吗?请注意处理 NaN - Autonomous
1个回答

7
您可以使用CORRCORRCOEF函数。这两个函数都会返回相同的相关矩阵(根据您的MATLAB版本,非常低的p值可能会有所不同)。
您需要注意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');

如果您的变量是一个矩阵 x 中的列:
[rho, pval] = corr(x, 'rows','pairwise');

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接