corr
線形相関または順位相関
説明
[
では、前の構文の入力引数に加えて、1 つ以上の名前と値のペアの引数を使用してオプションを指定します。たとえば、rho
,pval
] = corr(___,Name,Value
)'Type','Kendall'
はケンドールの tau 相関係数を計算するよう指定します。
例
2 つの行列間の相関の検出
2 つの行列間で相関を求め、2 つの列ベクトル間の相関と比較します。
標本データを生成します。
rng('default')
X = randn(30,4);
Y = randn(30,4);
行列 X
の 2 列目と行列 Y
の 4 列目に相関関係を持たせます。
Y(:,4) = Y(:,4)+X(:,2);
X
と Y
の列の間の相関を計算します。
[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 つの列の間に高い正の相関があることが示されます。対応する p 値 pval(2,4)
は、表示される 4 桁目までゼロです。p 値が有意水準の 0.05
を下回ることから、2 つの列の間に相関がないという仮説は棄却されます。
corrcoef
を使用して X
と Y
の間の相関を計算します。
[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
の非対角要素の値 (X
と Y
の間の相関係数を表します) は小さくなっています。この値は、X
と Y
の間に相関がほとんどまたはまったくないことを示します。同様に、p
の非対角要素の値 (p 値を表します) は、0.05
という有意水準よりはるかに大きくなっています。この値は、X
と Y
の間には相関がないという仮説を棄却するための十分な証拠はないことを示します。
相関に対する対立仮説の検定
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 つの列の間に高い正の相関があることが示されます。対応する p 値 pval(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 つの列の間に高い負の相関があることが示されます。対応する p 値 pval(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
p 値 pval(1,4)
および pval(2,2)
はどちらも、表示される 4 桁目までゼロです。p 値が有意水準の 0.05
を下回ることから、相関係数 rho(1,4)
および rho(2,2)
はゼロとは有意に異なります。したがって、帰無仮説が棄却され、相関がゼロではないということがわかります。
入力引数
X
— 入力行列
行列
入力行列。n 行 k 列の行列を指定します。X
の行は観測値に対応し、列は変数に対応します。
例: X = randn(10,5)
データ型: single
| double
Y
— 入力行列
行列
入力行列。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
— 相関のタイプ
'Pearson'
(既定値) | 'Kendall'
| 'Spearman'
順位相関のタイプ。'Type'
と次のいずれかの値から構成されるコンマ区切りのペアとして指定します。
値 | 説明 |
---|---|
'Pearson' | ピアソンの線形相関係数 |
'Kendall' | ケンドールの tau 係数 |
'Spearman' | スピアマンの rho |
corr
は、相関の変換にスチューデントの t 分布を使用して、ピアソンの相関に対する p 値を計算します。この相関は、X
および Y
が正規分布から派生する場合に正確になります。corr
は、厳密な順列分布 (標本サイズが小さい場合) または大標本近似のいずれかを使用して、ケンドールの tau およびスピアマンの rho の p 値を計算します。
例: 'Type','Spearman'
Rows
— 計算に使用する行
'all'
(既定値) | 'complete'
| 'pairwise'
計算に使用する行。'Rows'
と次のいずれかの値から構成されるコンマ区切りのペアとして指定します。
値 | 説明 |
---|---|
'all' | 欠損値 (NaN ) に関係なく、入力の行をすべて使用します。 |
'complete' | 欠損値がない入力の行のみを使用します。 |
'pairwise' | 列 i または j の欠損値を含まない行を使用して rho(i,j) を計算します。 |
値 'pairwise'
と異なり、値 'complete'
では必ず正定値または半正定値の rho
が得られます。また、入力 (X
または Y
) の行に欠損値が含まれている場合、一般に 'complete'
では rho
の推定に使用する観測値の個数が少なくなります。
例: 'Rows','pairwise'
Tail
— 対立仮説
'both'
(既定値) | 'right'
| 'left'
対立仮説。'Tail'
と次の表のいずれかの値から構成されるコンマ区切りのペアとして指定します。'Tail'
は、無相関の仮説を検定する p 値の計算対象である対立仮説を指定します。
値 | 説明 |
---|---|
'both' | 相関が 0 ではないという対立仮説を検定します。 |
'right' | 相関が 0 より大きいという対立仮説を検定します。 |
'left' | 相関が 0 より小さいという対立仮説を検定します。 |
corr
は、2 つの片側検定の p 値のうち大きい方を 2 倍して、両側検定の p 値を計算します。
例: 'Tail','left'
出力引数
pval
— p 値
行列
行列として返される p 値。pval
の各要素は rho
の対応する要素の p 値です。
pval(a,b)
が小さい (0.05
未満) 場合、相関 rho(a,b)
はゼロとは有意に異なります。
詳細
ピアソンの線形相関係数
ピアソンの線形相関係数は、最も一般的に使用される線形相関係数です。 および という平均をもつ行列 X の列 Xa および行列 Y の列 Yb について、ピアソンの線形相関係数 rho(a,b) は次のように定義されます。
ここで、n は各列の長さです。
相関係数の値の範囲は –1
から +1
までになります。–1
という値は完全な負の相関を、+1
という値は完全な正の相関を示します。0
という値は、列の間に相関がないことを示します。
ケンドールの tau 係数
ケンドールの tau は、一致するペア、つまり と の符号が同じになる (i,j) のペアの個数を i<j についてカウントすることに基づいています。ケンドールの tau の方程式では、同順位に対する調整が正規化定数に含まれています。これは、しばしば tau-b と呼ばれます。
行列 X の列 Xa および行列 Y の列 Yb について、ケンドールの tau 係数は次のように定義されます。
ここで、 および
です。
相関係数の値の範囲は –1
から +1
までになります。–1
の値は、一方の列のランキングがもう一方の逆であることを示し、他方、+1
の値は、2 つのランキングが同じであることを示します。0
という値は、列の間に関係がないことを示します。
スピアマンの rho
スピアマンの rho は、列 Xa および Yb のランキングに適用したピアソンの線形相関係数と等価です。
各列のランクがすべて異なる場合、方程式は次のように単純化されます。
ここで、d は 2 つの列のランクの差、n は各列の長さです。
ヒント
corr(X,Y)
と MATLAB® 関数 corrcoef(X,Y)
の異なる点は、corrcoef(X,Y)
は 2 つの列ベクトル X
および Y
について相関係数の行列を返すことです。X
と Y
が列ベクトルではない場合、corrcoef(X,Y)
は列ベクトルに変換します。
参照
[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.
拡張機能
tall 配列
メモリの許容量を超えるような多数の行を含む配列を計算します。
この関数は、メモリ超過のデータに対し tall 配列をサポートしますが、以下の制限があります。
'Pearson'
タイプのみがサポートされています。
詳細は、メモリに収まらないデータの tall 配列を参照してください。
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
この関数は、スレッドベースの環境を完全にサポートします。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
GPU 配列
Parallel Computing Toolbox™ を使用してグラフィックス処理装置 (GPU) 上で実行することにより、コードを高速化します。
この関数は、GPU 配列を完全にサポートします。詳細は、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2006a より前に導入
参考
corrcoef
| partialcorr
| corrcov
| tiedrank
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)