0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Matlabで相関係数を計算する --複数のデータセットがある場合--

Posted at

いま$N$回観測された2変量のデータを考える。これを1セットと呼ぶ。Matlabで1セットデータから2変量間の相関係数の計算を考える。さらに複数セットのデータを考え、セット毎の相関係数の計算を考える。この計算をMatlabでは以下のコンパクトなコードで行える。

以下のコードは、行列xx,yyの対応する列の間の相関係数を計算する。
計算結果は変数rxxyyに入る。

    N = size( xx, 1 );

    mxx = sum( xx )/(N); %平均値
    myy = sum( yy )/(N);

    nxx = xx - mxx; % 平均値を差し引く
    nyy = yy - myy;

    cxxyy = sum( nxx.*nyy ); % 各列ごとの共分散x(N-1)
    sxx = sqrt( sum(nxx.*nxx) ); % 各列ごとのsqrt(分散 x(N-1))
    syy = sqrt( sum(nyy.*nyy) );
    rxxyy = cxxyy ./( sxx.*syy); % 相関係数

上記の手順は、Matlabの相関係数行列を計算するcorrcoefに比べて数倍早い。どの程度早いかはデータの大きさに依存して変わる。
上記の手順は、様々な統計量の計算に応用でき、ブートストラップ法を効率的に行うのに有用である。すなわちブートストラップ標本を複数個取得し、統計量を計算するのに使える。

以上

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?