ドキュメンテーション

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

factoran

構文

lambda = factoran(X,m)
[lambda,psi] = factoran(X,m)
[lambda,psi,T] = factoran(X,m)
[lambda,psi,T,stats] = factoran(X,m)
[lambda,psi,T,stats,F] = factoran(X,m)
[...] = factoran(...,param1,val1,param2,val2,...)

説明

lambda = factoran(X,m) は、因子負荷量行列の最尤推定 lambda を、m 個の共通因子をもつ共通因子分析モデルに返します。Xnd 列の行列です。この行列の各行は、d 変数の観測値です。dm 列の行列 lambda(i,j) 番目の要素は、j 番目の変数の i 番目の因子の係数、あるいは、負荷です。既定の設定では、factoran は関数 rotatefactors を呼び出し、推定された因子負荷量を 'varimax' オプションを使用して回転します。

[lambda,psi] = factoran(X,m) は、長さ d の列ベクトル psi として、独自因子の分散の最尤推定値を返します。

[lambda,psi,T] = factoran(X,m) は、mm 列の因子負荷量回転行列 T を返します。

[lambda,psi,T,stats] = factoran(X,m) は、共通因子の数が m であるという帰無仮説 H0 に関連する情報を含む stats 構造体を返します。stats は、以下のフィールドから構成されます。

フィールド説明
loglike

対数尤度を最大にする値

dfe

自由度の誤差度合 = ((d-m)^2 - (d+m))/2

chisq

帰無仮説に対するカイ二乗統計近似

p

帰無仮説に対する右裾有意水準

factoran は、dfe が正で、psi に指定する分散の推定がすべて正である場合を除き、chisqp の各フィールドを返しません (下記のヘイウッド ケースを参照)。X が共分散行列である場合、chisq フィールドおよび p フィールドを計算するために factoran を必要とするとき、ユーザーは 'nobs' パラメーターを指定しなければなりません。

[lambda,psi,T,stats,F] = factoran(X,m) は、F に、さらに因子スコアとしても知られる共通因子の予測を返します。Fnm 列の行列で、各行は m 共通因子の予測です。X が共分散行列である場合、factoranF を計算できません。factoran は、lambda と同じ基準を使って F を回転します。

[...] = factoran(...,param1,val1,param2,val2,...) を使用すると、オプションのパラメーター名/値のペアを指定し、モデルの近似および出力を制御できるようになります。有効なパラメーターと値のペアは、次のとおりです。

パラメーター
'xtype'

行列 X. 'xtype' の入力タイプには、次のいずれかを使用できます。

'data'

生データ (既定の設定)

'covariance'

正定共分散または相関行列

'scores'

因子スコアを予測するメソッド。X が生データでない場合、'scores' は無視されます。

'wls'
'Bartlett'

F (default) を固定として扱う、重み付き最小二乗推定と同義

'regression'
'Thomson'

リッジ回帰と同じである最小平均二乗誤差予測と同義

'start'

最大尤度の最適化における特定の分散 psi の開始点。次のように指定できます。

'random'

区間 [0,1] の d 一様分布値を選択

'Rsquared'

スケール係数と diag(inv(corrcoef(X))) の積として、出発点のベクトルを選択します (既定の設定)。例については、Jöreskog [2] を参照してください。

正の整数

与えられた回数の最尤近似をそれぞれ 'random' で初期化して実行します。factoran は、最尤を使用して近似を返します。

行列

指定された行列の各列に対して、1 回の最尤近似を実行します。i 番目の最適化は、i 番目の列の値で開始されます。行列には、d 列が含まれなければなりません。

'rotate'

因子負荷量およびスコアの回転に使用するメソッド。'rotate' は、rotatefactors'Method' パラメーターと同じ値をもつことができます。使用できるメソッドの詳細は、rotatefactors のリファレンス ページを参照してください。

 

'none'

回転を実行しません。

 

'equamax'

オーソマックス回転の特別なケース。回転の詳細を制御するには、'normalize''reltol' および 'maxit' の各パラメーターを使用します。

 

'orthomax'

負荷の分散に基づいて基準を最大化する直交回転。

回転の詳細を制御するには、'coeff''normalize''reltol' および 'maxit' の各パラメーターを使用します。

 

'parsimax'

オーソマックス回転の特別なケース (既定の設定)回転の詳細を制御するには、'normalize''reltol' および 'maxit' の各パラメーターを使用します。

 

'pattern'

指定された行列のパターンに最も適するように、斜交回転 (既定の設定) または直交回転のどちらかを実行します。回転タイプを選択するには、'type' パラメーターを使用します。パターン行列を指定するには、'target' パラメーターを指定します。

 

'procrustes'

最小二乗の意味で指定されたターゲット行列に最も適するように、斜交回転 (既定の設定) または直交回転のどちらかを実行します。

回転タイプを選択するには、'type' パラメーターを使用します。ターゲット行列を指定するには、'target' を使用します。

 

'promax'

オーソマックス解法の関数として factoran により指定されたターゲット行列に対して、斜交プロクラステス回転を実行します。

ターゲット行列を作成するための指数を指定するには、'power' パラメーターを使用します。'promax' は内部的に 'orthomax' を使用するため、ユーザーは 'orthomax' に適用するパラメーターも指定できます。

 

'quartimax'

オーソマックス回転の特別なケース (既定の設定)回転の詳細を制御するには、'normalize''reltol' および 'maxit' の各パラメーターを使用します。

 

'varimax'

オーソマックス回転の特別なケース (既定の設定)回転の詳細を制御するには、'normalize''reltol' および 'maxit' の各パラメーターを使用します。

 

関数

次の形式の回転関数の関数ハンドル。

[B,T] = 
myrotation(A,...)

A は回転していない因子負荷量の dm 列の行列、B は回転される負荷量の dm 列の行列、T は対応する mm 列の回転行列です。

この回転関数に追加の引数を渡すには、'userargs'factoran パラメーターを使用します。ユーザー定義の回転関数を参照してください。

'coeff'

独自の 'orthomax' 基準を定義する、通常、γ として表される係数。01 でなければなりません。値 0 は quartimax に対応し、値 1 は varimax に対応します。既定値は 1 です。

'normalize'

'orthomax' または 'varimax' 回転に対して、負荷行列が行を正規化するか (1)、非正規化のままにするか (0) を示すフラグ。既定値は 1 です。

'reltol'

'orthomax' または 'varimax' 回転に対する、収束の相対許容誤差。既定値は sqrt(eps) です。

'maxit'

'orthomax' または 'varimax' 回転に対する、反復制限。既定値は 250 です。

'target'

'procrustes' 回転に対するターゲット因子負荷量行列。'procrustes' 回転の場合は必要。既定値はなし。

'type'

'procrustes' 回転のタイプ。'oblique' (既定値) または 'orthogonal'

'power'

'promax' 回転でターゲット行列を作成するための指数。1 以上でなければなりません。既定値は 4 です。

'userargs'

ユーザー定義の回転関数について、追加する入力値の先頭であることを表します。factoran は、連続するすべての値を処理することなく、回転していない因子負荷量行列 A の後にある回転関数の引数リストに順番に付加します。ユーザー定義の回転関数を参照してください。

'nobs'

X が共分散または相関行列である場合、推定に使用された観測数を示します。これにより、元のデータを使用できない場合も、帰無仮説の有意性を計算できます。既定値はありません。X が生データである場合、'nobs' は無視されます。

'delta'

最大尤度の最適化における特定の分散 psi の下限。既定値は 0.005 です。

'optimopts'

最尤推定を計算するために関数が使用する反復アルゴリズムの制御パラメーターを指定する、構造体。この構造体は関数 statset を使って作成します。statset('factoran') を入力して、factoranoptions 構造体に受け入れるパラメーターの名前と既定値を確認します。これらのオプションの詳細は、statset のリファレンス ページを参照してください。

すべて折りたたむ

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

load carbig

可変行列を定義します。

X = [Acceleration Displacement Horsepower MPG Weight]; 
X = X(all(~isnan(X),2),:);

2 つの共通因子による因子分析で、最小平均二乗誤差予測を使用して、因子負荷量を推定します。

[Lambda,Psi,T,stats,F] = factoran(X,2,'scores','regression');
inv(T'*T);   % Estimated correlation matrix of F, == eye(2)
Lambda*Lambda' + diag(Psi); % Estimated correlation matrix
Lambda*inv(T);              % Unrotate the loadings
F*T';                       % Unrotate the factor scores

2 つの因子のバイプロットを作成します。

biplot(Lambda,'LineWidth',2,'MarkerSize',20)

共分散 (または相関) 行列を使用して因子負荷量を推定します。

[Lambda,Psi,T] = factoran(cov(X),2,'xtype','cov')
Lambda = 5×2

   -0.2432   -0.8500
    0.8773    0.3871
    0.7618    0.5930
   -0.7978   -0.2786
    0.9692    0.2129

Psi = 5×1

    0.2184
    0.0804
    0.0680
    0.2859
    0.0152

T = 2×2

    0.9476    0.3195
    0.3195   -0.9476

% [Lambda,Psi,T] = factoran(corrcoef(X),2,'xtype','cov')

推定は同じですが、生データではなく共分散行列を使用すると、スコアや有意水準の要求はできません。

プロマックス回転を使用します。

[Lambda,Psi,T,stats,F] = factoran(X,2,'rotate','promax',...
                                      'powerpm',4);
inv(T'*T)                            % Estimated correlation of F, 
ans = 2×2

    1.0000   -0.6391
   -0.6391    1.0000

                                     % no longer eye(2)
Lambda*inv(T'*T)*Lambda'+diag(Psi)   % Estimated correlation of X
ans = 5×5

    1.0000   -0.5424   -0.6893    0.4309   -0.4167
   -0.5424    1.0000    0.8979   -0.8078    0.9328
   -0.6893    0.8979    1.0000   -0.7730    0.8647
    0.4309   -0.8078   -0.7730    1.0000   -0.8326
   -0.4167    0.9328    0.8647   -0.8326    1.0000

斜交軸を重ねて表示し、回転していない変数をプロットします。

invT = inv(T);
Lambda0 = Lambda*invT;
figure()
line([-invT(1,1) invT(1,1) NaN -invT(2,1) invT(2,1)], ...
     [-invT(1,2) invT(1,2) NaN -invT(2,2) invT(2,2)], ...
     'Color','r','linewidth',2)
grid on
hold on
biplot(Lambda0,'LineWidth',2,'MarkerSize',20)       
xlabel('Loadings for unrotated Factor 1')
ylabel('Loadings for unrotated Factor 2')

斜交軸に対して回転される変数をプロットします。

figure()
biplot(Lambda,'LineWidth',2,'MarkerSize',20)

ユーザー定義の回転関数に追加の引数を渡す構文は、次のとおりです。

[Lambda,Psi,T] = ...
     factoran(X,2,'rotate',@myrotation,'userargs',1,'two');

詳細

すべて折りたたむ

因子分析モデル

factoran は、因子分析モデルの因子負荷量行列 Λ の最尤推定 (MLE) を計算します。

x=μ+Λf+e

ここで、x は観測変数のベクトル、μ は平均の定数ベクトル、Λ は因子負荷量の d 行 m 列の定数行列、f は標準化した独立共通因子のベクトル、e は独立した特殊因子のベクトルです。x、μ および e の長さは d です。f の長さは m です。

あるいは、因子分析モデルは次のように指定することができます。

cov(x)=ΛΛT+Ψ

ここで、Ψ=cov(e) は独自因子の分散から構成される d 行 d 列 の対角行列です。

ヒント

観測データの変数

観測データ行列 X の変数は、線形独立でなければなりません。すなわち、最尤推定法を成功させるには、cov(X) はフル ランクでなければなりません。近似を実行する前に、factoran は、相関行列に対する生データおよび共分散行列の両方を減らします。

factoran は、負荷 lambda を推定する前に、観測されたデータ X を平均 0 と分散 1 に標準化します。このモデルの MLE はスケールに対して不変であるため、モデルの近似は影響を受けません。ただし、lambda および psi は、標準化した変数という形で返されます。すなわち、lambda*lambda'+diag(psi) は、元データ X の相関行列の推定です (ただし、斜交回転後ではありません)。因子負荷量の推定とプロットユーザー定義の回転関数を参照してください。

ヘイウッド ケース

psi の要素が、'delta' パラメーターの値に等しい場合 (すなわち、それらが本質的にゼロである場合)、この当てはめはヘイウッド ケースとして知られ、推定結果の解釈が不確かになります。特に、尤度の極大値が複数あり、それぞれ負荷と指定した分散についての推定が異なる場合があります。ヘイウッド ケースは、過適合 (すなわち、m が過大) を示すことができますが、適応不足になる場合もあります。

因子負荷量およびスコアの回転

'rotate' パラメーターを使用して回転なしを明示的に指定しない限り、factoran は推定された因子負荷量、lambda、および因子スコア F を回転します。出力行列 T は負荷を回転させるために使用されます。つまり、lambda = lambda0*T となります。ここで、lambda0 は負荷の初期 (非回転) MLE です。T は直交回転の直交行列であり、回転なしの場合は単位行列になります。T の逆行列は、主軸回転行列として知られ、一方 T 自体は、参照軸回転行列に関連しています。直交回転に対し、この 2 つは同一です。

factoran は、inv(T') によって回転させた因子スコアを計算します。つまり、F = F0 * inv(T') になります。ここで、F0 には回転していない予測が含まれています。F の推定された共分散は inv(T'*T) で、これは、直交あるいは回転なしの場合、単位行列です。因子負荷量とスコアの回転は、最尤推定後、負荷量行列内に、より容易に解釈できる構造体を作成しようとするための試みです。

参照

[1] Harman, H. H. Modern Factor Analysis. 3rd Ed. Chicago: University of Chicago Press, 1976.

[2] Jöreskog, K. G. “Some Contributions to Maximum Likelihood Factor Analysis.” Psychometrika. Vol. 32, Issue 4, 1967, pp. 443–482.

[3] Lawley, D. N., and A. E. Maxwell. Factor Analysis as a Statistical Method. 2nd Ed. New York: American Elsevier Publishing Co., 1971.

拡張機能

R2006a より前に導入