Main Content

corr

線形相関または順位相関

説明

rho = corr(X) は、入力行列 X の列の各ペアに対するペアワイズ線形相関係数が含まれている行列を返します。

rho = corr(X,Y) は、入力行列 X および Y の列の各ペアに対するペアワイズ線形相関係数が含まれている行列を返します。

[rho,pval] = corr(X,Y) は、非ゼロ相関の対立仮説に対する無相関の仮説を検定するための p 値の行列 pval も返します。

[rho,pval] = corr(___,Name,Value) では、前の構文の入力引数に加えて、1 つ以上の名前と値のペアの引数を使用してオプションを指定します。たとえば、'Type','Kendall' はケンドールの tau 相関係数を計算するよう指定します。

すべて折りたたむ

2 つの行列間で相関を求め、2 つの列ベクトル間の相関と比較します。

標本データを生成します。

rng('default')
X = randn(30,4);
Y = randn(30,4);

行列 X の 2 列目と行列 Y の 4 列目に相関関係を持たせます。

Y(:,4) = Y(:,4)+X(:,2);

XY の列の間の相関を計算します。

[rho,pval] = corr(X,Y)
rho = 4×4

   -0.1686   -0.0363    0.2278    0.3245
    0.3022    0.0332   -0.0866    0.7653
   -0.3632   -0.0987   -0.0200   -0.3693
   -0.1365   -0.1804    0.0853    0.0279

pval = 4×4

    0.3731    0.8489    0.2260    0.0802
    0.1045    0.8619    0.6491    0.0000
    0.0485    0.6039    0.9166    0.0446
    0.4721    0.3400    0.6539    0.8837

予想どおり、X の 2 列目と Y の 4 列目の間の相関係数 rho(2,4) が最も大きくなり、2 つの列の間に高い正の相関があることが示されます。対応する ppval(2,4) は、表示される 4 桁目までゼロです。p 値が有意水準の 0.05 を下回ることから、2 つの列の間に相関がないという仮説は棄却されます。

corrcoef を使用して XY の間の相関を計算します。

[r,p] = corrcoef(X,Y)
r = 2×2

    1.0000   -0.0329
   -0.0329    1.0000

p = 2×2

    1.0000    0.7213
    0.7213    1.0000

関数 corr と異なり、MATLAB® 関数 corrcoef は、入力行列 X および Y を列ベクトル X(:) および Y(:) に変換してから、これらの間の相関を計算します。このため、行列 X の 2 列目と行列 Y の 4 列目に持たせた相関関係がなくなります。これは、これらの 2 つの列が、変換された列ベクトルでは別のセクションにあるためです。

r の非対角要素の値 (XY の間の相関係数を表します) は小さくなっています。この値は、XY の間に相関がほとんどまたはまったくないことを示します。同様に、p の非対角要素の値 (p 値を表します) は、0.05 という有意水準よりはるかに大きくなっています。この値は、XY の間には相関がないという仮説を棄却するための十分な証拠はないことを示します。

2 つの行列の列の間における正、負および非ゼロの相関について対立仮説を検定します。各ケースにおける相関係数の値および p 値を比較します。

標本データを生成します。

rng('default')
X = randn(50,4);
Y = randn(50,4);

行列 X の 1 列目と行列 Y の 4 列目に正の相関関係を持たせます。

Y(:,4) = Y(:,4)+0.7*X(:,1);

行列 X の 2 列目と行列 Y の 2 列目に負の相関関係を持たせます。

Y(:,2) = Y(:,2)-2*X(:,2);

相関がゼロより大きいという対立仮説を検定します。

[rho,pval] = corr(X,Y,'Tail','right')
rho = 4×4

    0.0627   -0.1438   -0.0035    0.7060
   -0.1197   -0.8600   -0.0440    0.1984
   -0.1119    0.2210   -0.3433    0.1070
   -0.3526   -0.2224    0.1023    0.0374

pval = 4×4

    0.3327    0.8405    0.5097    0.0000
    0.7962    1.0000    0.6192    0.0836
    0.7803    0.0615    0.9927    0.2298
    0.9940    0.9397    0.2398    0.3982

予想どおり、X の 1 列目と Y の 4 列目の間の相関係数 rho(1,4) が最も大きい正の値になり、2 つの列の間に高い正の相関があることが示されます。対応する ppval(1,4) は、表示される 4 桁目までゼロです。これは、0.05 という有意水準より小さい値です。これらの結果から、2 つの列の間に相関がないという帰無仮説が棄却され、相関がゼロより大きいという結論に達します。

相関がゼロより小さいという対立仮説を検定します。

[rho,pval] = corr(X,Y,'Tail','left')
rho = 4×4

    0.0627   -0.1438   -0.0035    0.7060
   -0.1197   -0.8600   -0.0440    0.1984
   -0.1119    0.2210   -0.3433    0.1070
   -0.3526   -0.2224    0.1023    0.0374

pval = 4×4

    0.6673    0.1595    0.4903    1.0000
    0.2038    0.0000    0.3808    0.9164
    0.2197    0.9385    0.0073    0.7702
    0.0060    0.0603    0.7602    0.6018

予想どおり、X の 2 列目と Y の 2 列目の間の相関係数 rho(2,2) は絶対値が最大である負の値 (-0.86) になり、2 つの列の間に高い負の相関があることが示されます。対応する ppval(2,2) は、表示される 4 桁目までゼロです。これは、0.05 という有意水準より小さい値です。これらの結果から、再度帰無仮説が棄却され、相関がゼロ未満であるという結論に達します。

相関が 0 ではないという対立仮説を検定します。

[rho,pval] = corr(X,Y)
rho = 4×4

    0.0627   -0.1438   -0.0035    0.7060
   -0.1197   -0.8600   -0.0440    0.1984
   -0.1119    0.2210   -0.3433    0.1070
   -0.3526   -0.2224    0.1023    0.0374

pval = 4×4

    0.6654    0.3190    0.9807    0.0000
    0.4075    0.0000    0.7615    0.1673
    0.4393    0.1231    0.0147    0.4595
    0.0120    0.1206    0.4797    0.7964

ppval(1,4) および pval(2,2) はどちらも、表示される 4 桁目までゼロです。p 値が有意水準の 0.05 を下回ることから、相関係数 rho(1,4) および rho(2,2) はゼロとは有意に異なります。したがって、帰無仮説が棄却され、相関がゼロではないということがわかります。

入力引数

すべて折りたたむ

入力行列。n 行 k 列の行列を指定します。X の行は観測値に対応し、列は変数に対応します。

例: X = randn(10,5)

データ型: single | double

入力行列。X として n 行 k1 列の行列が指定される場合、n 行 k2 列の行列を指定します。Y の行は観測値に対応し、列は変数に対応します。

例: Y = randn(20,7)

データ型: single | double

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後ろにする必要がありますが、ペアの順序は関係ありません。

R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みます。

例: corr(X,Y,'Type','Kendall','Rows','complete') は、欠損値が含まれていない行のみを使用して、ケンドールの tau 相関係数を返します。

順位相関のタイプ。'Type' と次のいずれかの値から構成されるコンマ区切りのペアとして指定します。

corr は、相関の変換にスチューデントの t 分布を使用して、ピアソンの相関に対する p 値を計算します。この相関は、X および Y が正規分布から派生する場合に正確になります。corr は、厳密な順列分布 (標本サイズが小さい場合) または大標本近似のいずれかを使用して、ケンドールの tau およびスピアマンの rho の p 値を計算します。

例: 'Type','Spearman'

計算に使用する行。'Rows' と次のいずれかの値から構成されるコンマ区切りのペアとして指定します。

説明
'all'欠損値 (NaN) に関係なく、入力の行をすべて使用します。
'complete'欠損値がない入力の行のみを使用します。
'pairwise'i または j の欠損値を含まない行を使用して rho(i,j) を計算します。

'pairwise' と異なり、値 'complete' では必ず正定値または半正定値の rho が得られます。また、入力 (X または Y) の行に欠損値が含まれている場合、一般に 'complete' では rho の推定に使用する観測値の個数が少なくなります。

例: 'Rows','pairwise'

対立仮説。'Tail' と次の表のいずれかの値から構成されるコンマ区切りのペアとして指定します。'Tail' は、無相関の仮説を検定する p 値の計算対象である対立仮説を指定します。

説明
'both'相関が 0 ではないという対立仮説を検定します。
'right'相関が 0 より大きいという対立仮説を検定します。
'left'相関が 0 より小さいという対立仮説を検定します。

corr は、2 つの片側検定の p 値のうち大きい方を 2 倍して、両側検定の p 値を計算します。

例: 'Tail','left'

観測値の重み。非負のスカラー値の n 行 1 列のベクトル (n は観測値の数) として指定します。詳細については、アルゴリズムを参照してください。

例: Weights=[300 457 200]

データ型: single | double

出力引数

すべて折りたたむ

ペアワイズ線形相関係数。行列として返されます。

  • 行列 X のみを入力した場合、rho は k 行 k 列の対称行列になります。k は X の列数です。エントリ rho(a,b) は、X の列 a および列 b の間のペアワイズ線形相関係数です。

  • 行列 X および Y を入力した場合、rho は k1 行 k2 列の行列になります。k1 および k2 はそれぞれ X および Y の列数です。エントリ rho(a,b) は、X の列 a と Y の列 b の間のペアワイズ線形相関係数です。

行列として返される p 値。pval の各要素は rho の対応する要素の p 値です。

pval(a,b) が小さい (0.05 未満) 場合、相関 rho(a,b) はゼロとは有意に異なります。

詳細

すべて折りたたむ

ピアソンの線形相関係数

ピアソンの線形相関係数は、最も一般的に使用される線形相関係数です。X¯a=i=1n(Xa,i)/n, および Y¯b=j=1n(Yb,j)/n という平均をもつ行列 X の列 Xa および行列 Y の列 Yb について、ピアソンの線形相関係数 rho(a,b) は次のように定義されます。

rho(a,b)=i=1n(Xa,iX¯a)(Yb,iY¯b){i=1n(Xa,iX¯a)2j=1n(Yb,jY¯b)2}1/2,

ここで、n は各列の長さです。

相関係数の値の範囲は –1 から +1 までになります。–1 という値は完全な負の相関を、+1 という値は完全な正の相関を示します。0 という値は、列の間に相関がないことを示します。

ケンドールの tau 係数

ケンドールの tau は、一致するペア、つまり Xa,iXa,jYb,iYb,j の符号が同じになる (i,j) のペアの個数を i<j についてカウントすることに基づいています。ケンドールの tau の方程式では、同順位に対する調整が正規化定数に含まれています。これは、しばしば tau-b と呼ばれます。

行列 X の列 Xa および行列 Y の列 Yb について、ケンドールの tau 係数は次のように定義されます。

τ=2Kn(n1),

ここで、K=i=1n1j=i+1nξ*(Xa,i,Xa,j,Yb,i,Yb,j), および

ξ*(Xa,i,Xa,j,Yb,i,Yb,j)={1if(Xa,iXa,j)(Yb,iYb,j)>00if(Xa,iXa,j)(Yb,iYb,j)=01if(Xa,iXa,j)(Yb,iYb,j)<0.

です。

相関係数の値の範囲は –1 から +1 までになります。–1 の値は、一方の列のランキングがもう一方の逆であることを示し、他方、+1 の値は、2 つのランキングが同じであることを示します。0 という値は、列の間に関係がないことを示します。

スピアマンの rho

スピアマンの rho は、列 Xa および Yb のランキングに適用したピアソンの線形相関係数と等価です。

各列のランクがすべて異なる場合、方程式は次のように単純化されます。

rho(a,b)=16d2n(n21),

ここで、d は 2 つの列のランクの差、n は各列の長さです。

ヒント

corr(X,Y) と MATLAB® 関数 corrcoef(X,Y) の異なる点は、corrcoef(X,Y) は 2 つの列ベクトル X および Y について相関係数の行列を返すことです。XY が列ベクトルではない場合、corrcoef(X,Y) は列ベクトルに変換します。

アルゴリズム

名前と値の引数 Weights を指定すると、corr は分散と共分散の計算値に重みを付けてピアソン相関を計算します。スピアマン相関 (順位に基づく) については、corr[5]で提唱されているように重み付き順位を計算します。ケンドール相関 (順列のカウントに基づく) の計算では、corr は同順位を考慮するために[6]の重み付きカウントのアルゴリズムを拡張します。

参照

[1] Gibbons, J.D. Nonparametric Statistical Inference. 2nd ed. M. Dekker, 1985.

[2] Hollander, M., and D.A. Wolfe. Nonparametric Statistical Methods. Wiley, 1973.

[3] Kendall, M.G. Rank Correlation Methods. Griffin, 1970.

[4] Best, D.J., and D.E. Roberts. "Algorithm AS 89: The Upper Tail Probabilities of Spearman's rho." Applied Statistics, 24:377-379.

[5] Bailey, Paul, and Ahmad Emad (2023). wCorr: Weighted Correlations. R package version 1.9.7, https://american-institutes-for-research.github.io/wCorr.

[6] Van Doorn, Johnny, et al. "Using the Weighted Kendall Distance to Analyze Rank Data in Psychology." The Quantitative Methods for Psychology, vol. 17, no. 2, June 2021, pp. 154–65.

拡張機能

バージョン履歴

R2006a より前に導入

すべて展開する