ドキュメンテーション センター

  • 評価版
  • 製品アップデート

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

stepwisefit

ステップワイズ回帰

構文

b = stepwisefit(X,y)
[b,se,pval,inmodel,stats,nextstep,history] = stepwisefit(...)
[...] = stepwisefit(X,y,param1,val1,param2,val2,...)

説明

b = stepwisefit(X,y) は、ステップワイズ メソッドを使用し、n 行 p 列の行列 X の p 予測項に関する n 行 1 列のベクトル y の応答値の多重線形回帰を実行します。X の各列には異なる予測項を入れる必要があります。

b は、X のすべての項の推定係数が入った p 行 1 列のベクトルです。関数 stepwisefitb の係数推定値を次のように計算します。

  • 最終モデルに項がない場合、b でこれに対応する係数の推定値は、最終モデルの予測子にその項だけを追加した結果として取得されます。

  • 最終モデルに項がある場合、b におけるその項の係数の推定値は、最終モデルの結果になります。つまり、stepwise は、これらの値の計算中にモデルから排除された項を考慮しないためです。

    メモ:   stepwisefit は自動的に定数項をすべてのモデルに含めます。X に数値 1 だけを続けた列を直接入力しないでください。

stepwisefit は、X または yNaN 値を欠損値としてを扱い、無視します。

[b,se,pval,inmodel,stats,nextstep,history] = stepwisefit(...) は、次の追加情報を返します。

  • se — 以下に対する標準誤差のベクトル b

  • pvalb の要素が 0 かどうかを検定するための p 値のベクトル

  • inmodel — 最終モデルの項を指定する、X の列数に等しい長さの論理ベクトル

  • stats — 以下のフィールドをもつ追加統計量の構造体です。注意書きがなければ、すべての統計量は最終モデルに関するものです。

    • source — 文字列 'stepwisefit'

    • dfe — 誤差に対する自由度

    • df0 — 回帰に対する自由度

    • SStotal — 応答の二乗和の合計

    • SSresid — 残差の二乗和

    • fstat — 最終モデルを (平均値だけの) 空のモデルと対比する検定に関する F 統計量

    • pval — F 統計量の p 値

    • rmse — RMSE (平均平方二乗誤差)

    • xr — 最終モデルの予測子以外の一部の変数を削除した後の、最終モデルには含まれない予測子に対する残差

    • yr — 最終モデルの予測子を使用した応答に対する残差

    • B — すべての項を最終モデルに追加したと仮定した場合に得られる、最終モデルの各項に対する係数

    • SE — 係数の推定値に対する標準誤差

    • TSTAT — 係数の推定値に対する t 統計量

    • PVAL — 係数の推定値に対する p 統計量

    • intercept — 切片 (インターセプト値) の推定値

    • wasnan — データのどの行が NaN 値を含むかを示す

  • nextstep — 次のステップの推奨値で、(モデル内またはモデル外) 移動する次の項のインデックス、またはこれ以上のステップを推奨しない場合は 0

  • history — 以下のフィールドをもつ、それまでのステップに関する情報を含む構造体

    • B — 各列が 1 つのステップで各行が 1 つの係数である、回帰係数の行列

    • rmse — 各ステップのモデルに対する二乗平均平方根誤差

    • df0 — 各ステップの回帰に対する自由度

    • in — モデルの各ステップでどの予測子があるかを示す論理配列で、各行が 1 つのステップで各列が 1 つの予測子です。

[...] = stepwisefit(X,y,param1,val1,param2,val2,...) は、次の表で説明する 1 つ以上の名前と値のペアを指定します。

パラメーター
'inmodel'

初期の近似に含める項を指定する論理ベクトル。既定の設定は、どの項も指定しません。

'penter'

追加される項に対する最大の p 値。既定の設定は、0.05 です。

'premove'

削除される項に対する最小の p 値。既定値は 'penter' の値と 0.10 の最大値です。

'display'

'on' の場合、コマンド ウィンドウの各ステップに関する情報を表示します。これは既定の設定です。

'off' の場合、表示を省略します。

'maxiter'

回帰の最大ステップ数。既定の設定は、Inf です。

'keep'

初期状態において保持する項を指定する論理ベクトル。既定の設定は、どの項も指定しません。

'scale'

'on' の場合、近似の前に、X の各列をセンタリングし、スケーリングします (z スコアを計算します)。

'off' の場合、項のスケーリングを行いません。これは既定の設定です。

hald.mat のデータを読み込みます。これは、さまざまなセメント混合物の反応熱の観測値を含みます。

load hald
whos
  Name          Size    Bytes   Class   Attributes

  Description   22x58   2552    char
  hald          13x5     520    double
  heat          13x1     104    double
  ingredients   13x4     416    double

応答 (heat) は、4 つの予測子の値に依存します (ingredientsの列)。

stepwisefit を使用して、ステップワイズ回帰アルゴリズムを実行します。モデルに項がない状態で、p 値の開始/終了許容値 0.05/0.10 を使って始めます。

stepwisefit(ingredients,heat,...
            'penter',0.05,'premove',0.10);
Initial columns included:  none
Step 1, added column 4, p=0.000576232
Step 2, added column 1, p=1.10528e-006
Final columns included:  1 4 
    'Coeff'      'Std.Err.'    'Status'    'P'          
    [ 1.4400]    [  0.1384]    'In'        [1.1053e-006]
    [ 0.4161]    [  0.1856]    'Out'       [     0.0517]
    [-0.4100]    [  0.1992]    'Out'       [     0.0697]
    [-0.6140]    [  0.0486]    'In'        [1.8149e-007]

stepwisefit は、モデルの切片の項を自動的に含むので、regress の場合のように、これを ingredients に明示的には追加しません。モデルに項が含まれない場合、係数推定とそれらの標準誤差は、対応する項を最終モデルに追加した結果として取得されます。

パラメーター inmodel は、初期モデルの項を指定するために使用されます。

initialModel = ...
           [false true false false]; % Force in 2nd term
stepwisefit(ingredients,heat,...
            'inmodel',initialModel,...
            'penter',.05,'premove',0.10);
Initial columns included:  2 
Step 1, added column 1, p=2.69221e-007
Final columns included:  1 2 
    'Coeff'      'Std.Err.'    'Status'    'P'          
    [ 1.4683]    [  0.1213]    'In'        [2.6922e-007]
    [ 0.6623]    [  0.0459]    'In'        [5.0290e-008]
    [ 0.2500]    [  0.1847]    'Out'       [     0.2089]
    [-0.2365]    [  0.1733]    'Out'       [     0.2054]

異なる初期モデルから作成された、前の 2 つのモデルは、予測項の異なるサブセットを使用します。2 つのモデルで交換された、term 2 と term 4 は非常に相関があります。

term2 = ingredients(:,2);
term4 = ingredients(:,4);
R = corrcoef(term2,term4)
R =
    1.0000   -0.9730
   -0.9730    1.0000

モデルを比較するには、stepwisefit の出力 stats を使用します。

[betahat1,se1,pval1,inmodel1,stats1] = ...
          stepwisefit(ingredients,heat,...
          'penter',.05,'premove',0.10,...
          'display','off');
[betahat2,se2,pval2,inmodel2,stats2] = ...
          stepwisefit(ingredients,heat,...
                      'inmodel',initialModel,...
                      'penter',.05,'premove',0.10,...
                      'display','off');
RMSE1 = stats1.rmse
RMSE1 =
    2.7343
RMSE2 = stats2.rmse
RMSE2 =
    2.4063

2 つ目のモデルは、より小さな Root Mean Square Error (RMSE) をもちます。

詳細

すべて展開する

アルゴリズム

"ステップワイズ回帰" は、回帰における各項の統計的な重要性に基づき、多重線形モデルに項を追加したり削除するための体系的な方法です。この方法は、初期モデルを考え、次に、徐々に説明能力が、より大きいまたはより小さいモデルを比較していきます。各手順で、追加可能項がある場合とない場合のモデルを検定するために、F 統計量の p 値が計算されます。ある項が現在はモデルにない場合、帰無仮説は、項がモデルに付加された場合に係数ゼロをもつということです。帰無仮説を棄却する十分な証拠があれば、その項がモデルに追加されます。逆に、ある項がモデルに現在ある場合、帰無仮説は、その項が係数ゼロをもつことです。帰無仮説を棄却する十分な証拠がなければ、その項がモデルから削除されます。この方法は、以下のように進めます。

  1. 初期モデルで近似します。

  2. モデルにない任意の項が開始許容誤差よりも小さい p 値をもつ場合 (すなわち、モデルに加えられた場合にゼロ係数をもつ可能性がない場合)、最小の p 値をもつ項を追加し、この手順を繰り返します。そうでない場合、手順 3 に進みます。

  3. モデルの任意の項が、終了許容誤差よりも大きい p 値をもつ場合は (すなわち、係数ゼロをもつという仮説は棄却されない場合は)、最大の p 値をもつ項を除外して手順 2 に進みます。そうでない場合は終了します。

この方法では、初期モデルに含まれる項と、項が出入りする順序に依存して、追加可能項の同じ集合から異なるモデルが作成されることがあります。この方法は、1 つのステップがモデルを改良することがないと終了します。しかし、初期モデルが異なる場合またはステップの順序が異なる場合に、より良い近似にならないという保証はありません。この意味において、ステップワイズ モデルは、局所的には最適でも大域的には最適ではないことがあります。

参考文献

[1] Draper, N. R., and H. Smith. Applied Regression Analysis. Hoboken, NJ: Wiley-Interscience, 1998. pp. 307–312.

参考

| |

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