2013-01-15 123 views
19

我有兩個向量:兩個向量之間的相關性?

A_1 = 

     10 
     200 
     7 
     150 

A_2 = 
     0.001 
     0.450 
     0.0007 
     0.200 

我想知道是否有這兩個向量之間的相關性。

我可以減去每個值的均值向量的和比做:

A_1' * A_2 

有什麼更好的辦法?

+2

你是什麼意思「更好?」 –

+0

你可以在兩者之間做一個線性迴歸並檢查'r'的平方值。 – ja72

+1

@ ja72:請將其作爲答案,並附上示例代碼。給這個問題一些保存的機會。 –

回答

21

考慮:

A_1 = [10 200 7 150]'; 
A_2 = [0.001 0.450 0.007 0.200]'; 

(正如其他人已經指出的那樣),有工具來簡單計算的相關性,最明顯的是corr

corr(A_1, A_2); %Returns 0.956766573975184 (Requires stats toolbox) 

您還可以使用基地Matlab的corrcoef功能,如這個:

M = corrcoef([A_1 A_2]): %Returns [1 0.956766573975185; 0.956766573975185 1]; 
M(2,1); %Returns 0.956766573975184 

哪個接近LY相關cov功能:

cov([condition(A_1) condition(A_2)]); 

當你幾乎得在你原來的問題,你可以擴展,如果你想,這給了一個稍微好一點的理解是怎麼回事的自行調整向量。首先創建一個條件函數中減去平均值,和通過標準偏差除以:

condition = @(x) (x-mean(x))./std(x); %Function to subtract mean AND normalize standard deviation 

則相關似乎是(A_1 * A_2)/(A_1^2),如下所示:

(condition(A_1)' * condition(A_2))/sum(condition(A_1).^2); %Returns 0.956766573975185 

根據對稱性,這也應該工作

(condition(A_1)' * condition(A_2))/sum(condition(A_2).^2); %Returns 0.956766573975185 

而且它。

我相信,但現在還沒有能力來確認,在處理多維度輸入時,只要處理時要小心,同樣的數學可用於計算相關性和互相關項,輸入陣列的尺寸和方向。

+1

-1..1。零意味着沒有關聯。 1最大相關性(這意味着您可以使用正比例因子從另一個向量中創建一個向量)。 -1最大負相關(這意味着您可以使用負比例因子從另一個向量中創建一個向量)。 – Pursuit

+0

沒什麼難的。首先,從http://en.wikipedia.org/wiki/Correlation_and_dependence開始,「相關性絕對值不能超過1」。 – Pursuit

10

嘗試xcorr,它在MATLAB內置的功能互相關:

c = xcorr(A_1, A_2); 

但是,請注意,它需要安裝Signal Processing Toolbox。否則,您可以查看corrcoef命令。

+0

爲什麼不使用常規corr? –

+4

@DennisJaheruddin不同的工具箱...土豆,土豆。 –

6

對於相關性,你可以只使用CORR函數(統計工具箱)

corr(A_1(:), A_2(:)) 

請注意,您也可以只用

corr(A_1, A_2) 

但線性索引保證您的載體不需要轉置。

+0

+1:你應該提到,這需要統計工具箱:) –

6

要兩個向量xy按照下列步驟之間執行線性迴歸:

[p,err] = polyfit(x,y,1); % First order polynomial 
y_fit = polyval(p,x,err); % Values on a line 
y_dif = y - y_fit;   % y value difference (residuals) 
SSdif = sum(y_dif.^2);  % Sum square of difference 
SStot = (length(y)-1)*var(y); % Sum square of y taken from variance 
rsq = 1-SSdif/SStot;  % Correlation 'r' value. If 1.0 the correlelation is perfect 

對於x=[10;200;7;150]y=[0.001;0.45;0.0007;0.2]我得到rsq = 0.9181

參考網址:http://www.mathworks.com/help/matlab/data_analysis/linear-regression.html

相關問題