1. ホーム
  2. マットラボ

matlabによるPearsonおよびSpearmanの相関係数の算出

2022-02-28 22:49:01

ピアソンの相関係数

2つのもの(データでは変数と呼ぶ)の相関の度合いを調べることは、簡単に言えば2つのデータが直線の上に乗っているかどうかを測ることです。数式で計算されます。
または または

Nは、その変数がとる値の数を示します。

相関係数rは-1から+1までの値、すなわち-1≦r≦+1である。その性質は次の通りである。

  1. r>0のとき、2つの変数(Xの値が増加(減少)し、Yの値が増加(減少)するとき)は正の相関があることを意味し、r<0のとき、2つの変数は負の相関がある(Xの値が増加(減少)し、Yの値が減少(増加)するとき)ことを意味します。
  2. r|=1のとき、2つの変数が完全に線形相関を持つこと、すなわち関数関係を意味する。
  3. r=0の場合、2つの変数に線形相関がないことを意味する。
  4. 0<|r|<1 のとき、2つの変数間にある程度の線形相関があることを意味する。そして、|r|が1に近いほど、2つの変数間の線形相関が近く、|r|が0に近いほど、2つの変数間の線形相関が弱くなる。

一般的に3つのレベルに分けられる。|0.4は低い線形相関、0.4≦|r|<|0.7は有意な相関、0.7≦|r|<|1 は高い線形相関です。

どちらの変数も標準偏差が0でない場合に相関係数が定義され、ピアソン相関係数が適用される。

  1. 2つの変数の関係は線形であり、両方とも連続データである。
  2. 2つの変数の全体が正規分布、または単一のピークを持つ正規分布に近い分布である。
  3. 2つの変数の観測値が対になっており、それぞれの観測値の対が互いに独立している。

具体的な計算例です。

X Y
1 2
2 5
3 6


matlabで計算する場合は、関数corrcoefまたはcorrを使用します。

まずはヘルプのcorrcoefから見てみましょう。

もう一度、help corrの内容を見てください。

先ほどの具体的な計算例では、matlabで以下のように実装することができます。

x=[1;2;3];
y=[2;5;6];
r1=corr(x,y,'type','pearson');
r2=corrcoef(x,y);

最後に、以下のことがわかります。

r1=0.9608

r2=

1.0000 0.9608

0.9608 1.0000

いずれも、これまでの計算と一致する。なお、corr 関数を使用した場合、デフォルトで Pearson 相関係数が計算されます。 

スピアマン相関係数

スピアマン相関係数は、2つの変数X,Yの相関を推定するために用いられ、変数間の相関は単調関数で記述することができます。2つの変数が値をとる2つの集合のどちらも同じ2つの要素を持っていない場合、変数の一方が他方の良い単調関数として表現できる(つまり、2つの変数が同じ変化傾向を持つ)とき、2つの変数の相関係数は+1または-1になることができる。

2つの確率変数をXとY(2つの集合とみなすこともできる)とし、どちらもN個の要素を持ち、2つの確率変数がとるi(1<=i<=N)番目の値をそれぞれXiとYiで表すとする。XとYを(共に昇順または降順で)ソートして2つの集合xとyを得、要素xiとyiはそれぞれXにおけるXiの順位とYにおけるYiの順位とする。集合x,yの要素を対応させて減算し、順位差集合dを得る。ここで、di=xi-yi, 1<=i<=N である。x、yまたはdから確率変数X、Y間のスピアマン相関係数を計算すると、以下のようになる。

ランク付けされた差分dの集合から計算される(式I)。

ランク付けされた集合x, yから算出(スピアマン相関係数は、ランク付けされた2つの確率変数のピアソン相関係数とも考えられ、以下では実際にx, yのピアソン相関係数を算出)(式2)。

以下は、コレクション内の要素の順位を計算する例です(スピアマンの相関係数の場合のみ)。

ここで、ある変数の値が2つとも同じ場合は、その順位を平均して求めることに注意。

スピールマン相関係数は、ピアソン相関係数のように厳しいデータ条件を必要とせず、2変数の観測値が対になっているか、連続変数の観測値から変換されていれば、2変数の全体の分布パターンやサンプルサイズの大きさに関係なく使用することができる。

matlabを使ったスピアマンの相関係数の計算も、corr関数を使えば、次のように簡単にできます。

r= corr(x, y, 'type' , 'Spearman')。  

上記の例では、r=1が計算できる。

注意:Matlab 独自の関数を使って Spearman 相関係数を計算する場合,X と Y が両方とも列ベクトルであることを確認する必要があります; Matlab 独自の関数は,式 2 によって配列に対する Spearman 相関係数を計算します.

マルチメディアの分野でより多くの知識と情報を得るために、公開番号をフォローしてください。

この記事は役に立ちましたか? 次のQRコードをスキャンして、報酬を得ることができます〜、好きなだけ報酬を得ることができます〜。