web-dev-qa-db-ja.com

2つのベクトル間の相関?

2つのベクターがあります。

A_1 = 

      10
      200
      7
      150

A_2 = 
      0.001
      0.450
      0.0007
      0.200

これら2つのベクトル間に相関関係があるかどうかを知りたいです。

ベクトルの平均を各値に差し引くと、次のようになります。

  A_1' * A_2

より良い方法はありますか?

19
dynamic

与えられた:

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 

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

そしてそれは。

多次元入力を処理する際に、同じ数学を使用して相関と相互相関項を計算できることを確認しますが、入力配列。

23
Pursuit

xcorrを試してください。これは相互相関のためのMATLABの組み込み関数です。

c = xcorr(A_1, A_2);

ただし、 Signal Processing Toolbox がインストールされている必要があることに注意してください。そうでない場合は、代わりに corrcoef コマンドを調べることができます。

10
Eitan T

相関については、corr関数(統計ツールボックス)を使用するだけです。

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

使用することもできます

corr(A_1, A_2)

しかし、線形インデックスは、ベクトルを転置する必要がないことを保証します。

6

2つのベクトル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

参照URL: http://www.mathworks.com/help/matlab/data_analysis/linear-regression.html

6
ja72