メインコンテンツ

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 相関係数を計算するよう指定します。

すべて折りたたむ

欠損値が 1 つある行列を生成します。

rng(0,"twister"); % For reproducibility
X = rand(5, 5);
indices = randperm(numel(X), 1);
X(indices) = NaN
X = 5×5

    0.8147    0.0975    0.1576    0.1419    0.6557
    0.9058    0.2785    0.9706    0.4218    0.0357
    0.1270    0.5469    0.9572    0.9157    0.8491
    0.9134    0.9575    0.4854       NaN    0.9340
    0.6324    0.9649    0.8003    0.9595    0.6787

ペアワイズ線形相関係数の行列を計算します。

rho = corr(X)
rho = 5×5

    1.0000   -0.0875   -0.4566       NaN   -0.3958
   -0.0875    1.0000    0.2336       NaN    0.5303
   -0.4566    0.2336    1.0000       NaN   -0.3636
       NaN       NaN       NaN       NaN       NaN
   -0.3958    0.5303   -0.3636       NaN    1.0000

それぞれのエントリ rho(a,b) は、X の列 a と列 b の間のペアワイズ線形相関係数です。既定では、a または b に欠損値があると rho(a,b)NaN になります。

a と列 b に欠損値がない行を使用して、係数行列のそれぞれの要素 rho(a,b) を計算します。

rho2 = corr(X,Rows="pairwise")
rho2 = 5×5

    1.0000   -0.0875   -0.4566   -0.7054   -0.3958
   -0.0875    1.0000    0.2336    0.9089    0.5303
   -0.4566    0.2336    1.0000    0.6948   -0.3636
   -0.7054    0.9089    0.6948    1.0000    0.4338
   -0.3958    0.5303   -0.3636    0.4338    1.0000

X の 1 行目、2 行目、3 行目、および 5 行目のみを使用して 4 行目と 4 列目の係数が計算されます。

X の欠損値がない行のみを使用して、係数行列のそれぞれの要素 rho(a,b) を計算します。

rho = corr(X,Rows="complete")
rho = 5×5

    1.0000   -0.4044   -0.3842   -0.7054   -0.7317
   -0.4044    1.0000    0.5057    0.9089    0.3614
   -0.3842    0.5057    1.0000    0.6948   -0.2608
   -0.7054    0.9089    0.6948    1.0000    0.4338
   -0.7317    0.3614   -0.2608    0.4338    1.0000

X の 1 行目、2 行目、3 行目、および 5 行目のみを使用して係数行列が計算されます。

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) はゼロとは有意に異なります。したがって、帰無仮説が棄却され、相関がゼロではないということがわかります。

入力引数

すべて折りたたむ

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

例: X = randn(10,5)

データ型: single | double

入力行列。X として nk1 列の行列が指定される場合、nk2 列の行列を指定します。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'

計算に使用する行。次の値のいずれかとして指定します。

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

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

Rows="all" (既定) の場合、列 i または列 j に欠損値があると rho(i,j) および pval(i,j)NaN になります。

例: 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 のみを入力した場合、rhokk 列の対称行列になります。kX の列数です。エントリ rho(a,b) は、X の列 a および列 b の間のペアワイズ線形相関係数です。

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

  • Rows="all" (既定) の場合、列 i または列 j に欠損値があると rho(i,j)NaN になります。

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

rho の対応する要素が NaN である場合、または名前と値の引数 Weights を使用して観測値の重みを指定した場合、pvalNaN になります。

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

詳細

すべて折りたたむ

ヒント

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 より前に導入

すべて展開する