% X2FX 要因設定行列 (x) を計画行列 (fx) に変換
%
%   D=X2FX(X,'MODEL') は、システム入力の行列 X を、回帰分析のための計画
%   行列に変換します。オプションの文字列入力 MODEL は、回帰モデルの次数を
%   制御します。デフォルトでは、X2FX は、定数項をもつ線形加算モデルの
%   ための計画行列を出力します。MODELは、つぎのいずれかを設定できます。
%
%     'linear'        定数と線形項 (デフォルト)
%     'interaction'   定数、線形項、クロス積の項を含む
%     'quadratic'     相互作用項に二乗項を加える
%     'purequadratic' 定数、線形項、二乗項を含む
%   
%   D=X2FX(X,'MODEL',CATEG) は、カテゴリ変数として、ベクトル CATEG 内に
%   リストされた列を扱います。カテゴリ変数を呼び出す項は、D 内にダミー
%   変数の列を生成します。ダミー変数は、変数の可能なレベルは、X の対応
%   する列の中に現れる固有の値であるという仮定の下で計算されます。
%   
%   D=X2FX(X,'MODEL',CATEG,CATLEVELS) は、各カテゴリ変数のレベル数を指定
%   する CATEG と同じ長さのベクトル CATLEVELS を受け入れます。この場合、
%   X の対応する列の値は、1 から指定したレベル数までの整数でなければ
%   なりませんが、これらの整数のすべては X に現れる必要はありません。
%
%   また、MODEL は項の行列になります。 MODEL の各行が、1 つの項を表します。
%   各列の値は、その項に対する X の同じ列のベキ乗数です。すなわち、
%   D(i,j) = prod(x(i,:).^model(j,:)) です。これにより、任意の次数をもつ
%   多項式の項をもつモデルが可能です。すべてが 0 の行は、定数項を表すため、
%   そのような行を含まないことで定数を省略することが可能です。
%
%   二乗のモデルに対する列の順序は、つぎのようになります。
%       a.  定数項
%       b.  線形項 (入力 X の列 1,2,...,k)
%       c.  X の列 (1,2), (1,3), ..., (1,k), (2,3), ..., (k-1,k) の
%           区分的な積により作られる相互作用項
%       d.  1,2,...,k の順序での二乗項
%   他のモデルは、これらの項のサブセットを使用しますが、それらをこの順序で
%   保持します。
%
%   例:  X = [1 10     MODEL = [0 0     D = [1 1 10 10  1
%             2 20              1 0          1 2 20 40  4
%             3 10              0 1          1 3 10 30  9
%             4 20              1 1          1 4 20 80 16
%             5 15              2 0]         1 5 15 75 25
%             6 15]                          1 6 15 90 36]
%   A と B は、X の 2 つの列を表しています。MODEL 行列の行は、項 1, A, 
%   B, A*B, A^2 を表します。出力行列 D は、これらの項のそれぞれに対して
%   1 つの列をもちます。
% 
%   X2FX は、RSTOOL, REGSTATS, CORDEXCH のような様々な他の関数に対する
%   ユーティリティ関数です。
%
%   参考 RSTOOL, CORDEXCH, ROWEXCH, REGSTATS. 

   
%   Copyright 1993-2007 The MathWorks, Inc. 
