ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

pca

生データの主成分分析

構文

  • coeff = pca(X)
  • coeff = pca(X,Name,Value)
  • [coeff,score,latent] = pca(___)
  • [coeff,score,latent,tsquared] = pca(___)
  • [coeff,score,latent,tsquared,explained,mu] = pca(___)

説明

coeff = pca(X) は、n 行 p 列のデータ行列 X の、主成分係数を返します。X の行は観測値に対応し、列は変数に対応します。この係数行列は p 行 p 列です。coeff の列ごとに 1 つの主成分の係数が含まれ、これらの列は成分分散の降順で並びます。既定では pca がデータをセンタリングし、特異値分解 (SVD) アルゴリズムを使用します。

coeff = pca(X,Name,Value) は、1 つまたは複数の Name,Value のペア引数により指定され、特殊なデータ型の計算と処理を行う追加オプションを使用すると、前の構文に任意の出力引数を返します。

たとえば、pca から返される主成分の数または使用する SVD 以外のアルゴリズムを指定することができます。

[coeff,score,latent] = pca(___) は、score の主成分スコアおよび latent の主成分分散も返します。前の構文の入力引数のいずれかを使用できます。

主成分スコアは、主成分空間内の X の表現です。score の行は観測値に対応し、列は成分に対応します。

主成分の分散は、X の共分散行列の固有値です。

[coeff,score,latent,tsquared] = pca(___) は、X の各観測値に対するホテリングの T 二乗統計量も返します。

[coeff,score,latent,tsquared,explained,mu] = pca(___) は、各主成分によって説明される分散合計の割合 explained および X の各変数の推定平均値 mu も返します。

すべて展開する

データセットの主成分

標本データセットを読み込みます。

load hald

成分データには、4 つの変数に対しての 13 の観測値があります。

成分データの主成分を求めます。

 coeff = pca(ingredients)
 coeff =

   -0.0678   -0.6460    0.5673    0.5062
   -0.6785   -0.0200   -0.5440    0.4933
    0.0290    0.7553    0.4036    0.5156
    0.7309   -0.1085   -0.4684    0.4844

coeff の行には 4 つの変数の係数が含まれ、その列は 4 つの主成分に一致します。

欠損データがある場合の主成分分析

データセットに欠損値がある場合に主成分係数を求めます。

標本データセットを読み込みます。

load imports-85

データ行列 X には、3 列目から 15 列目に 13 個の連続変数が含まれています (wheel-base、length、width、height、curb-weight、engine-size、bore、stroke、compression-ratio、horsepower、peak-rpm、city-mpg、highway-mpg)。bore と stroke の各変数の 56 ~ 59 行目の 4 つの値と、horsepower と peak-rpm の各変数の 131 行目と 132 行目の 2 つの値が欠けています。

主成分分析を実行します。

coeff = pca(X(:,3:15));

既定では pca'Rows','complete' の名前と値のペア引数によって指定されたアクションを実行します。このオプションは計算前に NaN の値をもつ観測を削除します。score および tsquared の対応する位置、つまり 56 ~ 59 行目、131 行目および 132 行目には NaN の行が再挿入されます。

'pairwise' を使用して主成分分析を実行します。

coeff = pca(X(:,3:15),'Rows','pairwise');

ここでは pca が、X の i 列または j 列に NaN 値のない行を使用して、共分散行列の (i, j) 要素を計算します。このとき、結果の共分散行列は正定でない場合があります。このオプションを使用できるのは、pca が固有値分解アルゴリズムを使用する場合のみです。この例のようにアルゴリズムを指定しない場合、アルゴリズムは pca によって 'eig' に設定されます。'pairwise' オプションとともにアルゴリズムとして 'svd' を指定すると、pca は警告メッセージを返し、アルゴリズムを 'eig' に設定してから処理を続行します。

'Rows','all' の名前と値のペア引数を使用した場合、このオプションではデータセットに欠損値がないと仮定されるため、pca は終了します。

coeff = pca(X(:,3:15),'Rows','all');
Error using pca (line 180)
Raw data contains NaN missing value while 'Rows' option is set to 'all'. Consider using 'complete' or pairwise' option instead.

重み付き PCA

主成分分析の実行中に変数の逆分散を重みとして使用します。

標本データセットを読み込みます。

load hald

成分の分散の逆数を変数の重みとして使用して、主成分分析を実行します。

 [wcoeff,~,latent,~,explained] = pca(ingredients,...
'VariableWeights','variance')
wcoeff =

   -2.7998    2.9940   -3.9736    1.4180
   -8.7743   -6.4411    4.8927    9.9863
    2.5240   -3.8749   -4.0845    1.7196
    9.1714    7.5529    3.2710   11.3273

latent =

    2.2357
    1.5761
    0.1866
    0.0016

explained =

   55.8926
   39.4017
    4.6652
    0.0406

係数行列 wcoeff は正規直交ではない点に注意してください。

正規直交係数行列を計算します。

coefforth = inv(diag(std(ingredients)))* wcoeff
coefforth =

   -0.4760    0.5090   -0.6755    0.2411
   -0.5639   -0.4139    0.3144    0.6418
    0.3941   -0.6050   -0.6377    0.2685
    0.5479    0.4512    0.1954    0.6767

新しい係数行列 coefforth の正規直交性を確認します。

 coefforth*coefforth'
ans =

    1.0000    0.0000   -0.0000   -0.0000
    0.0000    1.0000   -0.0000   -0.0000
   -0.0000   -0.0000    1.0000         0
   -0.0000   -0.0000         0    1.0000

欠損値に ALS を使用する PCA

データに欠損値があるときに交互最小二乗 (ALS) アルゴリズムを使用して主成分を見つけます。

標本データを読み込みます。

load hald

成分データには、4 つの変数に対しての 13 の観測値があります。

ALS アルゴリズムを使って主成分分析を実行し、成分係数を表示します。

[coeff,score,latent,tsquared,explained] = pca(ingredients);
coeff
coeff =

   -0.0678   -0.6460    0.5673    0.5062
   -0.6785   -0.0200   -0.5440    0.4933
    0.0290    0.7553    0.4036    0.5156
    0.7309   -0.1085   -0.4684    0.4844

欠損値を無作為に導入します。

y = ingredients;
rng('default'); % for reproducibility
ix = random('unif',0,1,size(y))<0.30; 
y(ix) = NaN 
y =

     7    26     6   NaN
     1    29    15    52
   NaN   NaN     8    20
    11    31   NaN    47
     7    52     6    33
   NaN    55   NaN   NaN
   NaN    71   NaN     6
     1    31   NaN    44
     2   NaN   NaN    22
    21    47     4    26
   NaN    40    23    34
    11    66     9   NaN
    10    68     8    12

データのおよそ 30% に、NaN で示される欠損値があります。

ALS アルゴリズムを使って主成分分析を実行し、成分係数を表示します。

[coeff1,score1,latent,tsquared,explained,mu1] = pca(y,...
'algorithm','als');
coeff1
coeff1 =

   -0.0362    0.8215   -0.5252    0.2190
   -0.6831   -0.0998    0.1828    0.6999
    0.0169    0.5575    0.8215   -0.1185
    0.7292   -0.0657    0.1261    0.6694

推定平均値を表示します。

mu1
mu1 =

    8.9956   47.9088    9.0451   28.5515

観測されたデータを再構成します。

t = score1*coeff1' + repmat(mu1,13,1)
t =

 7.0000   26.0000    6.0000   51.5250
 1.0000   29.0000   15.0000   52.0000
10.7819   53.0230    8.0000   20.0000
11.0000   31.0000   13.5500   47.0000
 7.0000   52.0000    6.0000   33.0000
10.4818   55.0000    7.8328   17.9362
 3.0982   71.0000   11.9491    6.0000
 1.0000   31.0000   -0.5161   44.0000
 2.0000   53.7914    5.7710   22.0000
21.0000   47.0000    4.0000   26.0000
21.5809   40.0000   23.0000   34.0000
11.0000   66.0000    9.0000    5.7078
10.0000   68.0000    8.0000   12.0000

ALS アルゴリズムで、データの欠損値が推定されます。

結果を比較するもう 1 つの方法として、係数ベクトルの範囲内の 2 つの空間に存在する角度を見つけます。ALS を使用して、完全なデータで見つかった係数と欠損値をもつデータで見つかった係数間の角度を見つけます。

subspace(coeff,coeff1)
ans =

   2.2925e-16

これは小さい値です。これは、欠損データがないときに 'Rows','complete' の名前と値のペア引数を含む pca を使用する結果と、欠損データがあるときに 'algorithm','als' の名前と値のペア引数を含む pca を使用する結果が、相互に近いことを示します。

'Rows','complete' の名前と値のペア引数を使用して主成分分析を実行し、成分係数を表示します。

[coeff2,score2,latent,tsquared,explained,mu2] = pca(y,...
'Rows','complete');
coeff2
coeff2 =

   -0.2054    0.8587    0.0492
   -0.6694   -0.3720    0.5510
    0.1474   -0.3513   -0.5187
    0.6986   -0.0298    0.6518

この例で、pca が欠損値をもつ行を削除するため、y には欠損値のない 4 つの行だけが含まれるようになります。pca は 3 つの主成分のみを返します。共分散行列は半正定ではなく、pca からエラー メッセージが返されるため、'Rows','pairwise' オプションは使用できません。

完全なデータで見つかった係数と、リストワイズ除去 ('Rows','complete' の場合) で欠損値をもつデータで見つかった係数との間の角度を検出します。

subspace(coeff(:,1:3),coeff2)
ans =

    0.3576

2 つの空間の角度はかなり大きくなります。これは 2 つの結果が異なることを示しています。

推定平均値を表示します。

mu2
mu2 =

     7.8889   46.9091    9.8750   29.6000

この場合、平均値は単なる y の標本平均です。

観測されたデータを再構成します。

score2*coeff2'
ans =

       NaN       NaN       NaN       NaN
   -7.5162  -18.3545    4.0968   22.0056
       NaN       NaN       NaN       NaN
       NaN       NaN       NaN       NaN
   -0.5644    5.3213   -3.3432    3.6040
       NaN       NaN       NaN       NaN
       NaN       NaN       NaN       NaN
       NaN       NaN       NaN       NaN
       NaN       NaN       NaN       NaN
   12.8315   -0.1076   -6.3333   -3.7758
       NaN       NaN       NaN       NaN
       NaN       NaN       NaN       NaN
    1.4680   20.6342   -2.9292  -18.0043

これは、NaN 値を含む行の削除が、ALS アルゴリズムのように機能しないことを示しています。データの欠損値が多すぎる場合は、ALS を使用する方が適切です。

主成分の係数、スコア、分散

主成分の係数、スコアおよび分散を求めます。

標本データセットを読み込みます。

load hald

成分データには、4 つの変数に対しての 13 の観測値があります。

主成分の成分データの係数、スコアおよび分散を計算します。

[coeff,score,latent] = pca(ingredients)
coeff =

   -0.0678   -0.6460    0.5673    0.5062
   -0.6785   -0.0200   -0.5440    0.4933
    0.0290    0.7553    0.4036    0.5156
    0.7309   -0.1085   -0.4684    0.4844


score =

   36.8218   -6.8709   -4.5909    0.3967
   29.6073    4.6109   -2.2476   -0.3958
  -12.9818   -4.2049    0.9022   -1.1261
   23.7147   -6.6341    1.8547   -0.3786
   -0.5532   -4.4617   -6.0874    0.1424
  -10.8125   -3.6466    0.9130   -0.1350
  -32.5882    8.9798   -1.6063    0.0818
   22.6064   10.7259    3.2365    0.3243
   -9.2626    8.9854   -0.0169   -0.5437
   -3.2840  -14.1573    7.0465    0.3405
    9.2200   12.3861    3.4283    0.4352
  -25.5849   -2.7817   -0.3867    0.4468
  -26.9032   -2.9310   -2.4455    0.4116


latent =

  517.7969
   67.4964
   12.4054
    0.2372

score の各列が 1 つの主成分に対応します。ベクトル latent には 4 つの主成分の分散が保存されます。

センタリングされた成分データを復元します。

Xcentered = score*coeff'
Xcentered =

   -0.4615  -22.1538   -5.7692   30.0000
   -6.4615  -19.1538    3.2308   22.0000
    3.5385    7.8462   -3.7692  -10.0000
    3.5385  -17.1538   -3.7692   17.0000
   -0.4615    3.8462   -5.7692    3.0000
    3.5385    6.8462   -2.7692   -8.0000
   -4.4615   22.8462    5.2308  -24.0000
   -6.4615  -17.1538   10.2308   14.0000
   -5.4615    5.8462    6.2308   -8.0000
   13.5385   -1.1538   -7.7692   -4.0000
   -6.4615   -8.1538   11.2308    4.0000
    3.5385   17.8462   -2.7692  -18.0000
    2.5385   19.8462   -3.7692  -18.0000

Xcentered の新しいデータは、対応する列から列平均を差し引くことで元の成分データがセンタリングされています。

T 二乗統計

ホテリングの T 二乗統計量を求めます。

標本データセットを読み込みます。

load hald

成分データには、4 つの変数に対しての 13 の観測値があります。

主成分分析を実行し、T 二乗値を要求します。

[coeff,score,latent,tsquared] = pca(ingredients);
tsquared
tsquared =

    5.6803
    3.0758
    6.0002
    2.6198
    3.3681
    0.5668
    3.4818
    3.9794
    2.6086
    7.4818
    4.1830
    2.2327
    2.7216

最初の 2 つの主成分のみを要求し、要求された主成分の縮小空間のみの T 二乗値を計算します。

[coeff,score,latent,tsquared] = pca(ingredients,'NumComponents',2);
tsquared
tsquared =

    5.6803
    3.0758
    6.0002
    2.6198
    3.3681
    0.5668
    3.4818
    3.9794
    2.6086
    7.4818
    4.1830
    2.2327
    2.7216

主成分の縮小空間を指定する場合でも、pca は 4 つすべての主成分を使用して全体空間の T 二乗値を計算する点に注意してください。

縮小空間での T 二乗値は、その縮小空間におけるマハラノビス距離に対応します。

tsqreduced = mahal(score,score)
tsqreduced =

    3.3179
    2.0079
    0.5874
    1.7382
    0.2955
    0.4228
    3.2457
    2.6914
    1.3619
    2.9903
    2.4371
    1.3788
    1.5251

全体空間の T 二乗値と縮小空間のマハラノビス距離の相違を計算することにより、破棄された空間において T 二乗値を計算します。

tsqdiscarded = tsquared - tsqreduced
tsqdiscarded =

    2.3624
    1.0679
    5.4128
    0.8816
    3.0726
    0.1440
    0.2362
    1.2880
    1.2467
    4.4915
    1.7459
    0.8539
    1.1965

主成分により説明される変化の割合

主成分によって説明される変化の割合を求めます。

標本データセットを読み込みます。

load imports-85

データ行列 X には、3 列目から 15 列目に 13 個の連続変数が含まれています (wheel-base、length、width、height、curb-weight、engine-size、bore、stroke、compression-ratio、horsepower、peak-rpm、city-mpg、highway-mpg)。

これら変数の主成分によって説明される変化の割合を求めます。

[coeff,score,latent,tsquared,explained] = pca(X(:,3:15));

explained
explained =

   64.3429
   35.4484
    0.1550
    0.0379
    0.0078
    0.0048
    0.0013
    0.0011
    0.0005
    0.0002
    0.0002
    0.0000
    0.0000

ここでは最初の 2 つの成分によって変動性全体の 99.79% が説明されています。

出力をスキップするには、それに対応する要素で代わりに ~ を使用します。たとえば、T 二乗値を求めない場合は次のように指定します。

[coeff,score,latent,~,explained] = pca(X(:,3:15));

入力引数

すべて展開する

X — 入力データ行列

主成分を計算する入力データ。n 行 p 列の行列として指定します。X の行は観測に対応し、列は変数に対応します。

データ型: single | double

名前/値のペアの引数

オプションの Name,Value の引数ペアをコンマ区切りで指定します。ここで、Name は引数名で、Value は対応する値です。Name は単一引用符 (' ') で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペア引数を任意の順番で指定できます。

例: 'Algorithm','eig','Centered',false,'Rows','all','NumComponents',3 は、pca で固有値分解アルゴリズムを使用し、データのセンタリングを行わずにすべての観測を使用して、最初の 3 つの主成分のみを返すよう指定します。

'Algorithm' — 主成分アルゴリズム'svd' (既定値) | 'eig' | 'als'

pca で主成分分析を実行するために使用される主成分アルゴリズム。'Algorithm' と、以下のいずれかで構成されるコンマ区切りのペアとして指定します。

'svd'既定の設定。X の特異値分解 (SVD)。
'eig'共分散行列の固有値分解 (EIG: Eigenvalue decomposition)。EIG アルゴリズムは、観測値の数 n が変数の数 p より大きい場合、SVD 以上に高速になりますが、共分散の条件数が X の条件数の二乗であるため、精度は低くなります。
'als' 交互最小二乗 (ALS) アルゴリズム。このアルゴリズムは、X を n 行 k 列の左因子行列 L と p 行 k 列の右因子行列 R に因数分解して最善ランクの k 近似を見つけます。ここで、k は主成分の数です。因数分解は、ランダムな初期値で始まる反復法を使用します。

ALS は、欠損値をより適切に処理するように設計されています。これはペアワイズ除去 ('Rows','pairwise') を使用する方が望ましく、リストワイズ除去 ('Rows','complete') を使用せずに、欠損値を扱います。このアルゴリズムは、ランダムな欠損データの割合が少ないデータセットに対しては適切に機能しますが、スパース データセットに対しては適切に実行されない場合があります。

例: 'Algorithm','eig'

データ型: char

'Centered' — 列のセンタリングのインジケーターtrue (既定値) | false

列のセンタリングを指定するインジケーター。'Centered' と以下のいずれかの論理式で構成されるコンマ区切りペアとして指定します。

true

既定の設定。pca は、特異値分解や固有値分解を計算する前に、列平均を差し引くことで X のセンタリングを行います。XNaN の欠損値が含まれる場合、nanmean を使用して利用可能な任意のデータで平均を求めます。センタリングされたデータを復元するには score*coeff' を使用できます。

false

この場合、pca はデータのセンタリングを行いません。元のデータを復元するには score*coeff' を使用できます。

例: 'Centered',false

データ型: logical

'Economy' — 節約サイズ出力のインジケーターtrue (既定値) | false

自由度 d が、変数の数 p より小さい場合の、無駄のないサイズの出力のインジケーター。'Economy' と、以下のいずれかの論理式で構成されるコンマ区切りのペアとして指定します。

true

既定の設定。pca は、latent の最初の d 個の要素と、coeff および score にある対応する列のみを返します。

このオプションを使用すると、変数の数 p が d よりかなり大きい場合でも、処理が大幅に高速化されます。

false

pcalatent のすべての要素を返します。latent のゼロ要素に対応する coeffscore の列はゼロです。

ここで、d < p のとき、score(:,d+1:p) および latent(d+1:p) は必然的にゼロになり、coeff(:,d+1:p) の列は X に直交の方向を定義する点に注意してください。

例: 'Economy',false

データ型: logical

'NumComponents' — 要求された成分数変数の数 (既定値) | スカラー整数

要求された成分の数。'NumComponents' と、0 < k ≤ p を満たすスカラー整数 k で構成されるコンマ区切りのペアとして指定します。p は X にある元の変数の数です。このオプションを指定すると、pcacoeff および score の最初の k 列のみを返します。

例: 'NumComponents',3

データ型: single | double

'Rows'NaN 値に行われるアクション'complete' (既定値) | 'pairwise' | 'all'

データ行列 X にある NaN 値に行われるアクション。'Rows' と以下のいずれかで構成される、コンマ区切りのペアとして指定します。

'complete'

既定の設定。NaN 値をもつ観測は、計算を行う前に削除されます。score および tsquared の対応する位置に NaN の行が再挿入されます。

'pairwise'

このオプションを使用できるのは、アルゴリズムが 'eig' の場合のみです。'pairwise' とともにアルゴリズムを指定しないと、pca によって 'eig' に設定されます。'Rows','pairwise' オプションを併用して 'svd' をアルゴリズムとして指定すると、pca は警告メッセージを返し、アルゴリズムを 'eig' に設定して処理を続行します。

'Rows','pairwise' オプションを指定した場合、pcaX の i 列または j 列の NaN 値が入っていない行を使用して、共分散行列の (i,j) 要素を計算します。

このとき、結果の共分散行列は正定でない場合があります。その場合、pca はエラー メッセージを返して終了します。

'all'

X には欠損値がないと想定します。pca はすべてのデータを使用し、NaN 値が 1 つでも検出されると処理を終了します。

例: 'Rows','pairwise'

データ型: char

'Weights' — 観測値の重み1 (既定値) | 行ベクトル

観測値の重み。'Weights' と、すべて正の要素で長さが n のベクトルで構成される、コンマ区切りペアとして指定します。

データ型: single | double

'VariableWeights' — 変数の重み行ベクトル | 'variance'

変数の重み'VariableWeights' と、以下のいずれかで構成されるコンマ区切りのペアとして指定します。

すべてが正の要素の長さが p のベクトル。

文字列 'variance'。変数の重みは標本分散の逆です。'Weights' を使用して観測にも重みを割り当てる場合、変数の重みは、重み付き標本分散の逆数になります。

また、同時に 'Centered'true に設定すると、データ行列 X がセンタリングされ、標準化されます。その場合、pca は相関行列に基づく主成分を返します。

例: 'VariableWeights','variance'

データ型: single | double | char

'Coeff0' — 係数の初期値乱数値の行列 (既定値) | p 行 k 列の行列

係数行列 coeff の初期値。'Coeff0' と p 行 k 列の行列で構成されるコンマ区切りのペアとして指定します。ここで、p は変数の数で、k は要求された主成分の数です。

    メモ:    'algorithm''als' の場合にのみ、この名前と値のペアを使用できます。

データ型: single | double

'Score0' — スコアの初期値乱数値の行列 (既定値) | k 行 m 列の行列

スコア行列 score の初期値。'Score0' と n 行 k 列の行列で構成されるコンマ区切りのペアとして指定します。ここで、n は観測の数で、k は要求された主成分の数です。

    メモ:    'algorithm''als' の場合にのみ、この名前と値のペアを使用できます。

データ型: single | double

'Options' — 反復のオプション構造体

反復のオプション。'Options' と、関数 statset で作成された構造体とのコンマ区切りのペアとして指定します。pca は options 構造体の次のフィールドを使用します。

'Display'表示出力レベル。選択肢は、'off''final' および 'iter' です。
'MaxIter'許容される最大ステップ回数。既定の設定は 100 です。最適化設定と異なり、MaxIter 値に達すると収束として扱われます。
'TolFun'コスト関数の終了許容誤差を指定する正の数値。既定値は 1e-6 です。
'TolX'ALS アルゴリズムにおいて、左因子行列 L と右因子行列 R の要素の相対的な変更に、収束のしきい値を指定する正の数値。既定値は 1e-6 です。

    メモ:    'algorithm''als' の場合にのみ、この名前と値のペアを使用できます。

これらのフィールドの値を変更し、'Options' の名前と値のペア引数を使って pca で新しい構造体を指定することができます。

例: opt = statset('pca'); opt.MaxIter = 2000; coeff = pca(X,'Options',opt);

データ型: struct

出力引数

すべて展開する

coeff — 主成分係数行列

p 行 p 列の行列として返される、主成分の係数。coeff の各列には 1 つの主成分の係数が含まれます。列は成分分散 latent の降順に並べられています。

score — 主成分スコア行列

行列として返される、主成分のスコア。score の行は観測値に対応し、列は成分に対応しています。

latent — 主成分分散列ベクトル

主成分の分散。これは X の共分散行列の固有値で、列ベクトルとして返されます。

tsquared — ホテリングの T 二乗統計量列ベクトル

ホテリングの T 二乗統計量。列ベクトルとして返される、各観測値に対する標準化されたスコアの二乗和です。

explained — 分散合計の割合列ベクトル

各主成分に起因する分散合計の割合。列ベクトルとして返されます。

mu — 推定平均値行ベクトル

X の変数の推定平均値。行ベクトルとして返されます。'algorithm''als' の場合、これは ALS アルゴリズムで推定されます。'algorithm''als' でない場合、muX の標本平均と等しくなります。

詳細

すべて展開する

ホテリングの T 二乗統計量

ホテリングの T 二乗統計量は、データセットの中心からそれぞれの観測値の多変量距離を統計的に測定します。

変数の数より少ない数の成分を要求した場合でも、pca はすべての主成分を使って (つまり全体空間における) T 二乗統計を計算します。縮小空間または破棄された空間における T 二乗統計を求めるには、次のいずれかを行います。

  • 縮小空間の T 二乗統計を計算するには、mahal(score,score) を使用します。

  • 破棄された空間の T 二乗統計を求めるには、まず [coeff,score,latent,tsquared] = pca(X,'NumComponents',k,...) を使用して T 二乗統計を計算し、次に tsqreduced = mahal(score,score) を使用して縮小空間の T 二乗統計を計算してから、最後に次の式でその相違を求めます。 tsquared - tsqreduced.

自由度

自由度 d は、データがセンタリングされる場合は n – 1 に等しくなり、それ以外の場合は n になります。ここで、次のようになります。

  • 'Rows','complete' を使用する場合、n は NaN を含まない行の数になります。

  • 'Rows','pairwise' を使用する場合、n は NaN を含まない行が一番多い列のペアで、NaN が含まれない行の数になります。

変数の重み

変数の重みを使用する場合、係数行列は正規直交でない点に注意してください。varwei という変数の重みのベクトルを使用していて、pca が返した主成分係数のベクトルが wcoeff であるとします。その場合、diag(sqrt(varwei))*wcoeff という変換を使用して、直交係数を計算できます。

参照

[1] Jolliffe, I. T. Principal Component Analysis. 2nd ed., Springer, 2002.

[2] Krzanowski, W. J. Principles of Multivariate Analysis. Oxford University Press, 1988.

[3] Seber, G. A. F. Multivariate Observations. Wiley, 1984.

[4] Jackson, J. E. A. User's Guide to Principal Components. Wiley, 1988.

[5] Roweis, S. “EM Algorithms for PCA and SPCA.” In Proceedings of the 1997 Conference on Advances in Neural Information Processing Systems. Vol.10 (NIPS 1997), Cambridge, MA, USA: MIT Press, 1998, pp. 626–632.

[6] Ilin, A., and T. Raiko. “Practical Approaches to Principal Component Analysis in the Presence of Missing Values.” J. Mach. Learn. Res.. Vol. 11, August 2010, pp. 1957–2000.

この情報は役に立ちましたか?