いま$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に比べて数倍早い。どの程度早いかはデータの大きさに依存して変わる。
上記の手順は、様々な統計量の計算に応用でき、ブートストラップ法を効率的に行うのに有用である。すなわちブートストラップ標本を複数個取得し、統計量を計算するのに使える。
以上