2013-04-03 52 views
3

我有一個數據集顯示如下;如何計算matlab中的相關矩陣

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

歡迎來到SO。請重新格式化您的問題,以使其符合SO常見問題解答標準。 http://stackoverflow.com/faq –

+0

您可以計算'x1'和'x2'之間的相關性爲'corr2(x1,x2)'。同樣,你可以計算其他對。這是你想要的嗎?你將不得不照顧'NaN's –

回答

6

您可以使用CORRCORRCOEF函數。這兩個函數都會返回相同的相關矩陣(根據您的MATLAB版本,對於非常低的p值,結果可能會有所不同)。

您需要照顧NaN值。兩者都有參數'rows'。下面是從文檔報價與可能的參數值:

要麼「全部」(缺省),使用所有的行,「完整的」使用具有無 NaN值的行,或「成對」來計算R(我,j)使用列i或j中沒有NaN 值的行。

如果你有NaN的元素設置'rows''all '將使用所有的元素,但你會得到NaN的一個結果。 'complete'將在任何列中只使用沒有NaN的行。 'pairwise'是我通常使用的,它將獨立地爲每個比較移除帶有NaN的行。

所以,如果你x1x2和是列向量得到相關矩陣使用:

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

如果你的變量是一個矩陣x列:

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

或者使用corrcoef代替的corr。 CORR還可以計算皮爾遜相關性以外的其他信息,如Spearman或Kendall。用'type'參數指定它。