ドキュメンテーション

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

procrustes

プロクラステス解析

構文

d = procrustes(X,Y)
[d,Z] = procrustes(X,Y)
[d,Z,transform] = procrustes(X,Y)
[...] = procrustes(...,'scaling',flag)
[...] = procrustes(...,'reflection',flag)

説明

d = procrustes(X,Y) は、行列 X の点に最もよく準拠する行列 Y の点の線形変換 (変換、反射、直交回転、およびスケーリング) を判断します。適合度検定基準は、二乗誤差の合計です。procrustes は、d においてこの非類似度の測定量の最小化値を返します。d は、以下で与えられる X のスケールの尺度によって標準化されています。

sum(sum((X-repmat(mean(X,1),size(X,1),1)).^2,1))

つまり、X の中心からの各要素の二乗和になります。ただし、X が同じ点の繰り返しで構成されている場合、誤差の二乗和は標準化されません。

XY は、同じ数の点 (行) をもっていなければならず、procrustesY(i)X(i) に一致させます。Y の点は、X の点よりも小さい次元 (列数) をもつことができます。その場合、procrustes は必要に応じてゼロの列を Y に追加します。

[d,Z] = procrustes(X,Y) は、漸近 Y 値 も返します。

[d,Z,transform] = procrustes(X,Y)Y から Z へとマッピングする変換も返します。transform は以下のフィールドをもつ構造体配列です。

  • c — 変換成分

  • T — 直交回転および反射成分

  • b — スケール成分

すなわち、以下のようになります。

c = transform.c;
T = transform.T;
b = transform.b;

Z = b*Y*T + c;

[...] = procrustes(...,'scaling',flag) は、flagfalse の場合、スケール成分 (つまり b1 に等しい) を使用しないで変換を計算できます。既定の設定の flagtrue です。

[...] = procrustes(...,'reflection',flag) は、flagfalse の場合、反射成分 (つまり det(T)1 に等しい) を使用しないで変換を計算できます。既定の設定の flag'best' で、反射成分が含まれているかどうかにかかわらず、最も適合する変換が計算されます。flagtrue の場合、変換は反射成分 (つまり det(T)-1 に等しい) を使用して計算されます。

すべて折りたたむ

2 次元の標本データを生成します。

rng('default')
n = 10;  
X = normrnd(0,1,[n 2]);

回転、スケーリング、変換、ノイズを標本点に追加します。

S = [0.5 -sqrt(3)/2; sqrt(3)/2 0.5];
Y = normrnd(0.5*X*S+2,0.05,n,2);

プロクラステス解析を使用して、YX に一致させます。

[d,Z,tr] = procrustes(X,Y);

元の XY を、変換後の Y によりプロットします。

plot(X(:,1),X(:,2),'rx',Y(:,1),Y(:,2),'b.',Z(:,1),Z(:,2),'bx');

参照

[1] Kendall, David G. “A Survey of the Statistical Theory of Shape.” Statistical Science. Vol. 4, No. 2, 1989, pp. 87–99.

[2] Bookstein, Fred L. Morphometric Tools for Landmark Data. Cambridge, UK: Cambridge University Press, 1991.

[3] Seber, G. A. F. Multivariate Observations. Hoboken, NJ: John Wiley & Sons, Inc., 1984.

R2006a より前に導入