メインコンテンツ

partialcorr

R2026b

線形または順位偏相関係数

説明

rho = partialcorr(x) は、x の変数ペア間の標本線形偏相関係数を返し、x の残りの変数を抑制します。

例

rho = partialcorr(x,z) は、x の変数ペア間の標本線形偏相関係数を返し、z の変数を抑制します。

例

rho = partialcorr(x,y,z) は、x および y の変数ペア間の標本線形偏相関係数を返し、z の変数を抑制します。

例

rho = partialcorr(___,Name,Value) は、1 つ以上の名前と値のペア引数で指定された追加オプションと前の構文の入力引数のいずれかを使用して、標本線形偏相関係数を返します。たとえば、ピアソンまたはスピアマン偏相関を使用するかどうかを指定したり、欠損値の処理方法を指定したりできます。

例

[rho,pval] = partialcorr(___) は、非ゼロの偏相関が存在するという片側または両側の代替仮説に対して、偏相関が存在しないという仮説を検証するため、p 値の pval 行列も返します。

例

例

すべて折りたたむ

入力行列の変数間の偏相関係数を計算します。

標本データを読み込みます。Gender の値を数値グループ識別子に変換します。

load patients
GenderID = grp2idx(Gender);

標本データを含む入力行列を作成します。

x = [GenderID Age Smoker Weight];

x の各行には、患者の性別、年齢、喫煙状態、体重が含まれています。

x の変数ペア間の偏相関係数を計算しながら、x の残りの変数の影響を抑制します。

rho = partialcorr(x)
rho = 4×4

    1.0000    0.0105   -0.0273   -0.9421
    0.0105    1.0000    0.0419    0.0369
   -0.0273    0.0419    1.0000    0.0451
   -0.9421    0.0369    0.0451    1.0000

行列 rho は、x の性別と体重以外のすべての変数の抑制後、性別と体重の間の相関関係が 0.9421 であることを示しています。p 値を 2 番目の出力として取得し、この値を調べて、これらの相関が統計的に有意であるかどうかを確認できます。

表示をわかりやすくするために、適切な変数と行ラベルをもつテーブルを作成します。

rho = array2table(rho, ...
    VariableNames=["GenderID","Age","Smoker","Weight"],...
    RowNames=["GenderID","Age","Smoker","Weight"]);

disp("Partial Correlation Coefficients")
Partial Correlation Coefficients
disp(rho)
                GenderID       Age        Smoker       Weight 
                _________    ________    _________    ________

    GenderID            1     0.01052    -0.027324     -0.9421
    Age           0.01052           1     0.041945    0.036873
    Smoker      -0.027324    0.041945            1    0.045106
    Weight        -0.9421    0.036873     0.045106           1

2 番目の変数セットの影響を抑制しながら、入力行列の変数ペア間の偏相関を検定します。

標本データを読み込みます。Gender の値を数値グループ識別子に変換します。

load patients;
GenderID = grp2idx(Gender);

標本データを含む入力行列を 2 つ作成します。

x = [Age, Systolic, Diastolic];
z = [GenderID, Smoker, Weight];

x 行列には、偏相関を検定する変数 (年齢と収縮期および拡張期の血圧測定値) が含まれています。z 行列には、制御対象の変数が含まれています。

x の変数ペア間の偏相関を検定しながら、z の変数の影響を抑制します。相関係数を計算します。

[rho,pval] = partialcorr(x,z)
rho = 3×3

    1.0000    0.1300    0.0462
    0.1300    1.0000    0.0012
    0.0462    0.0012    1.0000

pval = 3×3

         0    0.2044    0.6532
    0.2044         0    0.9903
    0.6532    0.9903         0

pval の大きな値は、性別、喫煙状態、体重の抑制後、年齢といずれかの血圧測定値の間に有意な相関がないことを示しています。

表示をわかりやすくするために、適切な変数と行ラベルをもつテーブルを作成します。

rho = array2table(rho, ...
    VariableNames=["Age","Systolic","Diastolic"],...
    RowNames=["Age","Systolic","Diastolic"]);

pval = array2table(pval, ...
    VariableNames=["Age","Systolic","Diastolic"],...
    RowNames=["Age","Systolic","Diastolic"]);

disp("Partial Correlation Coefficients")
Partial Correlation Coefficients
disp(rho)
                   Age       Systolic     Diastolic
                 ________    _________    _________

    Age                 1         0.13     0.046202
    Systolic         0.13            1    0.0012475
    Diastolic    0.046202    0.0012475            1
disp("p-values")
p-values
disp(pval)
                   Age      Systolic    Diastolic
                 _______    ________    _________

    Age                0    0.20438      0.65316 
    Systolic     0.20438          0      0.99032 
    Diastolic    0.65316    0.99032            0 

x および y 入力行列の変数ペア間の偏相関を検定しながら、3 番目の変数セットの影響を抑制します。

標本データを読み込みます。Gender の値を数値グループ識別子に変換します。

load patients;
GenderID = grp2idx(Gender);

標本データを含む入力行列を 3 つ作成します。

x = [Systolic, Diastolic];
y = [Weight, Age];
z = [GenderID, Smoker];

partialcorr は、z の変数 (性別および喫煙状態) を抑制しつつ、x の変数ペア (収縮期血圧および拡張期血圧の測定値) 間の偏相関と y の変数ペア (体重および年齢) 間の偏相関を検定できます。

x および y の変数ペア間の偏相関を検定しながら、z の変数の影響を抑制します。相関係数を計算します。

[rho,pval] = partialcorr(x,y,z)
rho = 2×2

   -0.0257    0.1289
    0.0292    0.0472

pval = 2×2

    0.8018    0.2058
    0.7756    0.6442

pval の結果は、性別と喫煙状態の抑制後、患者のいずれかの血圧測定値とその患者の体重または年齢の間に有意な相関がないことを示しています。

表示をわかりやすくするために、適切な変数と行ラベルをもつテーブルを作成します。

rho = array2table(rho, ...
    RowNames=["Systolic","Diastolic"],...
    VariableNames=["Weight","Age"]);

pval = array2table(pval, ...
    RowNames=["Systolic","Diastolic"],...
    VariableNames=["Weight","Age"]);

disp("Partial Correlation Coefficients")
Partial Correlation Coefficients
disp(rho)
                  Weight       Age   
                 ________    ________

    Systolic     -0.02568     0.12893
    Diastolic    0.029168    0.047226
disp("p-values")
p-values
disp(pval)
                 Weight       Age  
                 _______    _______

    Systolic     0.80182     0.2058
    Diastolic    0.77556    0.64424

変数のペアに相関がないという仮説を、相関が 0 より大きいという対立仮説に対して検定します。

標本データを読み込みます。Gender の値を数値グループ識別子に変換します。

load patients;
GenderID = grp2idx(Gender);

標本データを含む入力行列を 3 つ作成します。

x = [Systolic,Diastolic];
y = [Weight,Age];
z = [GenderID,Smoker];

partialcorr は、z の変数 (性別および喫煙状態) を抑制しつつ、x の変数ペア (収縮期血圧および拡張期血圧の測定値) 間の偏相関と y の変数ペア (体重および年齢) 間の偏相関を検定できます。

右側検定を使用して相関係数を計算します。

[rho,pval] = partialcorr(x,y,z,Tail="right")
rho = 2×2

   -0.0257    0.1289
    0.0292    0.0472

pval = 2×2

    0.5991    0.1029
    0.3878    0.3221

pval の結果から、相関が 0 より大きいという対立仮説の場合、partialcorr は z の変数の抑制後、x および y の変数の間に非ゼロ相関があるという帰無仮説を棄却しないことがわかります。

表示をわかりやすくするために、適切な変数と行ラベルをもつテーブルを作成します。

rho = array2table(rho, ...
    RowNames=["Systolic","Diastolic"],...
    VariableNames=["Weight","Age"]);

pval = array2table(pval, ...
    RowNames=["Systolic","Diastolic"],...
    VariableNames=["Weight","Age"]);

disp("Partial Correlation Coefficients")
Partial Correlation Coefficients
disp(rho)
                  Weight       Age   
                 ________    ________

    Systolic     -0.02568     0.12893
    Diastolic    0.029168    0.047226
disp("p-values")
p-values
disp(pval)
                 Weight       Age  
                 _______    _______

    Systolic     0.59909     0.1029
    Diastolic    0.38778    0.32212

入力引数

すべて折りたたむ

n 行 px 列の行列として指定するデータ行列。x の行は観測値に対応し、列は変数に対応します。

データ型: single | double

n 行 py 列の行列として指定するデータ行列。y の行は観測値に対応し、列は変数に対応します。

データ型: single | double

n 行 pz 列の行列として指定するデータ行列。z の行は観測値に対応し、列は変数に対応します。

データ型: single | double

名前と値の引数

すべて折りたたむ

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

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

例: 'Type','Spearman','Rows','complete' は、欠損値を含まない行のデータのみを使用してスピアマン偏相関を計算します。

計算する偏相関の種類。'Type' と、以下のいずれかで構成されるコンマ区切りのペアとして指定します。

'Pearson'ピアソン (線形) 偏相関を計算します。
'Spearman'スピアマン (順位) 偏相関を計算します。

例: 'Type','Spearman'

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

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

例: 'Rows','complete'

検定対象の対立仮説。'Tail' と、以下のいずれかで構成されるコンマ区切りのペアとして指定します。

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

例: 'Tail','right'

出力引数

すべて折りたたむ

標本線形偏相関係数。行列として返されます。

  • x 行列のみを入力すると、rho は対称の px 行 px 列の行列になります。(i,j) 番目のエントリは、x の i 番目の列と j 番目の列の間の標本線形偏相関です。

  • x 行列と z 行列を入力した場合、rho は対称の px 行 px 列の行列です。(i,j) 番目のエントリは、x の i 番目の列と j 番目の列の間にある標本線形偏相関であり、z の変数について制御します。

  • x、y および z 行列を入力した場合、rho は px 行 py 列の行列になります。ここで、(i,j) 番目のエントリは、x の i 番目の列と y の j 番目の列の間に存在する標本線形偏相関で、z の変数について制御します。

[x,z] の共分散行列が次のようになっているとします。

S=(SxxSxzSxzTSzz) ,

すると、z を抑制する x の偏相関行列は、共分散行列を正規化した Sxx – (SxzSzz–1SxzT) として形式的に定義できます。

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

pval(i,j) が小さな値の場合、対応する偏相関 rho(i,j) は 0 とは統計的に有意差があります。

partialcorr は、相関の変換に対するスチューデントの t 分布を使用して、線形および順位偏相関係数の p 値を計算します。これは、x と z が正規の場合は線形偏相関に正確に対応しますが、それ以外の場合は大きな標本の近似になります。

参照

[1] Stuart, Alan, K. Ord, and S. Arnold. Kendall's Advanced Theory of Statistics. 6th edition, Volume 2A, Chapter 28, Wiley, 2004.

[2] Fisher, Ronald A. "The Distribution of the Partial Correlation Coefficient." Metron 3 (1924): 329-332

拡張機能

すべて展開する

バージョン履歴

R2006a より前に導入