Main Content

線形相関

はじめに

"相関" は、2 つの変数の線形関係の強さを定量的に表します。2 つの変数の間に相関がない場合、変数の値が並行して増減する傾向はありません。ただし、無相関の 2 つの変数は、非線形関係がない場合があるため、必ずしも独立している必要はありません。

線形相関を使用して、データに特定のモデルを仮定または近似する必要はなく、変数間に線形関係があるか調べることができます。線形相関が小さいか、まったくない 2 つの変数に強い非線形関係がある場合があります。ただし、モデルを当てはめる前に線形相関を計算するのは、単純な関係をもつ変数を識別するために便利な方法です。変数間の相関を調べるもう 1 つの方法は、データの散布図を作成することです。

"共分散" は、2 つの変数の線形関係の強さを分散に対する相対的な単位で定量的に表します。相関は標準化された共分散であり、それぞれの変数のスケールと関係なく線形関係の尺度を測定する無次元の数量を示します。

以下の MATLAB® 関数は、サンプル相関係数と共分散を計算します。これらのサンプル係数は、データ標本が取り出される母集団の真の共分散と相関係数 の推定です。

関数

説明

corrcoef

相関係数行列

cov

相関行列

xcorr

ランダムな過程の相互相関の列 (自己相関を含む)

共分散

MATLAB cov 関数を使用して、データ行列 (各列は個々の量を表す) に対するサンプル共分散行列を計算します。

サンプル共分散行列は、次の特性をもちます。

  • cov(X) は対称です。

  • diag(cov(X)) は各データ列の分散のベクトルです。この分散は、対応する列データの散らばり、または分散の尺度を表します。(関数 var は分散を計算します)

  • sqrt(diag(cov(X))) は、標準偏差のベクトルです。(std 関数は標準偏差を計算します)

  • 共分散行列の非対角要素は、個々のデータ列間の共分散を表します。

ここで、X はベクトルまたは行列になります。m x n 行列に対して、共分散行列は n x n です。

共分散を計算する例として、24 x 3 行列を含む count.dat のサンプル データを読み込みます。

load count.dat

このデータに対する共分散行列を計算します。

cov(count)

MATLAB は次の結果を示します。

ans =
    1.0e+003 *
       0.6437  0.9802  1.6567
       0.9802  1.7144  2.6908
       1.6567  2.6908  4.6278

このデータに対する共分散行列は次の形式をもちます。

[s211s212s213s221s222s223s231s232s233]s2ij=s2ji

ここで、s2ij は、データの i 列と j 列間のサンプル共分散です。行列 count には、3 つの列があるので、共分散行列は 3 x 3 行列です。

メモ

ベクトルが cov の引数である特別な場合、関数は分散を出力します。

相関係数

関数 corrcoef はデータ行列に対しサンプル相関係数の行列を作成します (各列は個々の量を表します)。相関係数の範囲は -1 から 1 までになります。

  • 1 に近い値は、データ列間に正の線形関係があることを示します。

  • -1 に近い値は、データの 1 列と他の列間に負の線形関係があることを示します ("反相関")。

  • 0 に近い値または 0 は、データ列間に線形関係がないことを意味します。

m x n 行列に対して、相関係数行列は n x n となります。相関係数行列の要素の位置は、上述の 共分散 の共分散行列の要素の位置に対応します。

相関係数を計算する例として、24 x 3 行列を含む count.dat のサンプル データを読み込みます。

load count.dat

次の構文を入力して、相関係数を計算します。

corrcoef(count)

その結果、次の 3 x 3 相関係数行列を生成します。

ans = 
    1.0000    0.9331    0.9599
    0.9331    1.0000    0.9553
    0.9599    0.9553    1.0000

すべての相関係数が 1 に近いということは、行列 count のデータ列の組間に強い正の相関があることを示します。