Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

mdscale

非古典的多次元尺度構成法

構文

Y = mdscale(D,p)
[Y,stress] = mdscale(D,p)
[Y,stress,disparities] = mdscale(D,p)
[...] = mdscale(D,p,'Name',value)

説明

Y = mdscale(D,p) は、nn 列の非類似度行列 D で非計量多次元尺度構成法を実行し、p 次元 (列) の n 点 (行) の設定 Y を返します。Y の点間のユークリッド距離は、D の対応する非類似度の単調変換を近似します。既定の設定では、mdscale は、クラスカルの正規化基準 stress1 を使います。

D は、nn 列の非スパース行列、または pdist による出力のような、上三角形行列で指定できます。非類似の非スパース行列は実数対称行列で、対角が 0、それ以外では非負の要素をもたなければなりません。上三角行列の非類似度行列は、実数の非負の項目でなければなりません。mdscale は、D 内の NaN を欠陥値として扱い、それらの要素を無視します。Inf は受け入れられません。

D は、対角に 1、それ以外のすべての要素が 1 よりも小さい類似の非スパース行列として指定することもできます。mdscale は、Y に出力される点間距離が sqrt(1-D) に近似されるように、類似度行列を非類似度行列に変換します。他の変換を使用するには、mdscale の呼び出しの前に類似度行列を変換します。

[Y,stress] = mdscale(D,p) は、最小化ストレス、つまり Y で評価されるストレスを返します。

[Y,stress,disparities] = mdscale(D,p) は、格差、すなわち非類似度 D の単調変換を返します。

[...] = mdscale(D,p,'Name',value) は、mdscale の詳細を制御する 1 つ以上の名前と値のペアのパラメーターをオプションで指定します。Name は一重引用符で囲んで指定します。使用可能なパラメーターは以下のとおりです。

  • Criterion— 最小化のための適合度基準。これは、mdscale が実行する非計量的、あるいは計量的な尺度のタイプも決定します。非計量多次元尺度構成法の選択肢は、以下のとおりです。

    • 'stress' — stress1 としても知られる点間距離の二乗和により正規化されるストレス。これは既定の設定です。

    • 'sstress' — 点間距離の 4 乗和により正規化される 2 乗ストレス。

    計量多次元尺度構成法の選択肢は以下のとおりです。

    • 'metricstress' — 非類似度の二乗和により正規化されるストレス。

    • 'metricsstress' — 非類似度の 4 乗和により正規化される 2 乗ストレス。

    • 'sammon' — Sammon の非線形マッピング基準。非対角の非類似度は、厳密にはこの基準で正でなければなりません。

    • 'strain' — 古典的多次元尺度構成法で使われるものと同じ基準。

  • Weights —非負の非類似度の重みを含む D と同じサイズの行列またはベクトル。これらを使って、ストレスの計算および最小化において D の対応する要素の寄与に重みを付けることができます。0 の重みに対応する D の要素は、事実上無視されます。

    メモ

    重みを非スパース行列で指定した場合、D の対応する対角要素がストレス計算に入らないため、対角要素は無視され、影響がありません。

  • Start — Y に対する点の初期設定を選択するために使う手法。選択肢は以下のとおりです。

    • 'cmdscale' — 古典的多次元尺度構成法を使用します。これは既定の設定です。0 の重みがある場合、'cmdscale' は無効です。

    • 'random' — 無相関座標を使用して適切にスケーリングされた p 次元の正規分布から位置を無作為に選択します。

    • 初期位置の np 列の行列。ここで n は行列 D のサイズで、p は出力行列 Y の列数です。この場合、p について [] で渡すことが可能で、mdscale は、行列の 2 次元目から p を推測します。配列の 3 次元目から 'Replicates' に対する値を暗示して、3 次元配列も与えることができます。

  • Replicates — 新規の初期設定によるスケーリングの反復回数。既定の設定は 1 です。

  • Options — 近似基準の最小化に使う反復アルゴリズムに対するオプション。statset で作成されたオプション構造体で渡します。たとえば、以下のようにします。

    opts = statset(param1,val1,param2,val2, ...);
    [...] = mdscale(...,'Options',opts)

    statset パラメーターの選択肢は、以下のとおりです。

    • 'Display' — 表示出力レベル。'off' (既定)、'iter' または 'final' を選択できます。

    • 'MaxIter' — 許容される最大反復回数。既定の設定は 200 です。

    • 'TolFun' — ストレスの基準および勾配に対する終了許容誤差。既定の設定は 1e-4 です。

    • 'TolX'— 設定位置のステップ サイズに対する終了許容誤差。既定の設定は 1e-4 です。

load cereal.mat
X = [Calories Protein Fat Sodium Fiber ...
     Carbo Sugars Shelf Potass Vitamins];

% Take a subset from a single manufacturer.
X = X(strcmp('K',cellstr(Mfg)),:);

% Create a dissimilarity matrix.
dissimilarities = pdist(X);
 
% Use non-metric scaling to recreate the data in 2D,
% and make a Shepard plot of the results.
[Y,stress,disparities] = mdscale(dissimilarities,2);
distances = pdist(Y);
[dum,ord] = sortrows([disparities(:) dissimilarities(:)]);
plot(dissimilarities,distances,'bo', ...
dissimilarities(ord),disparities(ord),'r.-');
xlabel('Dissimilarities'); ylabel('Distances/Disparities')
legend({'Distances' 'Disparities'},'Location','NW');

% Do metric scaling on the same dissimilarities.
figure
[Y,stress] = ... 
mdscale(dissimilarities,2,'criterion','metricsstress');
distances = pdist(Y);
plot(dissimilarities,distances,'bo', ...
[0 max(dissimilarities)],[0 max(dissimilarities)],'r.-');
xlabel('Dissimilarities'); ylabel('Distances')

バージョン履歴

R2006a より前に導入