我想在Matlab中計算Pearson's correlation coefficent(不使用Matlab的corr
函數)。在Matlab中Pearson's係數和協方差計算
簡單地說,我有兩個矢量A和B(它們中的每是1×100),我試圖以計算這樣的皮爾森係數:
P = cov(x, y)/std(x, 1)std(y,1)
我使用Matlab的cov
和std
功能。我不明白的是,在COV函數返回我一個方陣是這樣的:
corrAB =
0.8000 0.2000
0.2000 4.8000
但我期待有一個單一的號碼作爲協方差,所以我可以想出一個P(皮爾遜係數)號碼。我錯過了什麼?
你的意思是'P = COV(X,Y)/ SQRT(VAR(X)* VAR(Y)); '?對角線應該是1.非對角線是你想要的。 – 2011-04-13 12:16:36
你是對的,我更新了這個問題。上例中的「對角線」是0.2000還是0.2000?那麼我應該用他們做另一個計算還是隻用0.2來計算? – Ramala 2011-04-13 13:17:09
以你爲例,0.2是非對角線。但是,0.8和4.8都應該是1.所以你的calc有些問題。只需做corr(x,y)檢查。閱讀幫助以瞭解爲什麼它返回一個矩陣。這也是我第一次意外。 – 2011-04-13 16:16:21