ドキュメンテーション

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

LinearModel.stepwise

クラス: LinearModel

ステップワイズ回帰による線形回帰モデルの作成

LinearModel.stepwise は将来のリリースでは削除される予定です。代わりに stepwiselm を使用してください。

構文

mdl = LinearModel.stepwise(tbl,modelspec)
mdl = LinearModel.stepwise(X,y,modelspec)
mdl = LinearModel.stepwise(___,modelspec,Name,Value)

説明

mdl = LinearModel.stepwise(tbl,modelspec) は、予測子を追加または削除するステップワイズ回帰を使用して、テーブルまたはデータセット配列 tbl の線形モデルを返します。modelspec は、ステップワイズ法の開始モデルです。

mdl = LinearModel.stepwise(X,y,modelspec) は、予測子を追加または削除するステップワイズ回帰を使用して、X データ配列の応答 y の線形モデルを作成します。modelspec は、ステップワイズ法の開始モデルです。

mdl = LinearModel.stepwise(___,modelspec,Name,Value) は、前述の構文に任意の入力に対する線形モデルを作成します。1 つまたは複数の Name,Value の引数のペアによって指定された追加オプションを使用します。

たとえば、カテゴリカル変数、モデルで使用する最小または最大の項集合、実行するステップの最大数または用途の追加または削除に LinearModel.stepwise が使用する基準を指定できます。

入力引数

すべて展開する

入力データ。テーブルまたはデータセット配列として指定します。modelspecformula の場合、予測子および応答として使用される変数が指定されます。それ以外の場合、予測子変数と応答変数を指定しないときは、既定では、最後の変数が応答変数で、その他の変数が予測子変数になります。

予測子変数は数値、あるいは論理またはカテゴリカルなどのグループ化変数の型にできます (グループ化変数を参照してください)。応答は数値または論理でなければなりません。

応答変数として異なる列を設定するには、名前と値のペア引数 ResponseVar を使用します。列のサブセットを予測子として使用するには、名前と値のペア引数 PredictorVars を使用します。

n 行 p 列の行列として指定される予測子変数。ここで、n は観測値の数、p は予測子変数の数です。X の各列が 1 つの変数を表し、各行が 1 つの観測値を表します。

既定では、明示的に削除しない限り、モデルには定数項があるので、1 の列を X に含めないでください。

データ型: single | double | logical

n 行 1 列のベクトルとして指定される応答変数。ここで、n は観測値の数です。y の各エントリは X の対応する行に対する応答です。

データ型: single | double | logical

以下のいずれかとして指定される、ステップワイズ回帰の開始モデル。

  • 開始モデルのタイプを指定する文字ベクトルまたは string スカラー。

    モデル タイプ
    'constant'モデルは定数 (切片) 項だけを含みます。
    'linear'モデルは各予測子に対して切片と線形項を含みます。
    'interactions'モデルは、切片、線形項、異なる予測子のペアのすべての積 (二乗項なし) を含みます。
    'purequadratic'モデルは、切片、線形項、二乗項を含みます。
    'quadratic'モデルは、切片、線形項、交互作用、二乗項を含みます。
    'polyijk'モデルは多項式であり、最初の予測子は次数 i まで、2 番目の予測子は次数 j まで、3 番目以降もすべて同様に 0 から 9 までの数値を使用します。たとえば、'poly2111' には、1 つの定数のほかにすべての線形項と積項があり、また、予測子 1 の二乗の項を含んでいます。

    モデル内の最小または最大の項集合を指定するには、LowerUpper の名前と値のペアの引数を使用します。

  • モデル内に含める項を指定する t 行 (p+1) 列の行列。つまり項行列であり、t は項の数、p は予測子変数の数、+1 は応答変数を示します。

  • 'Y ~ terms'

    という形式でを表す文字ベクトルまたは string スカラー。termsウィルキンソンの表記法で表されます。

名前と値のペアの引数

オプションの引数 Name,Value のコンマ区切りペアを指定します。Name は引数名で、Value は対応する値です。Name は引用符で閉じなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を任意の順序で指定できます。

カテゴリカル変数のリスト。'CategoricalVars' と、テーブルまたはデータセット配列 tbl 内のカテゴリカル変数名が含まれている文字ベクトルの cell 配列または string 配列、またはどの列がカテゴリカルであるかを示す論理インデックス ベクトルまたは数値インデックス ベクトルから構成されるコンマ区切りのペアとして指定します。

  • データがテーブルまたはデータセット配列 tbl に格納されている場合の既定では、LinearModel.stepwise はカテゴリカル値、論理値、文字配列、string 配列、および文字ベクトルの cell 配列をすべてカテゴリカル変数として扱います。

  • データが行列 X に格納されている場合、'CategoricalVars' の既定値は空の行列 [] です。つまり、カテゴリカルとして指定しない限り、カテゴリカルになる変数はありません。

たとえば、以下のいずれかの例を使用して、6 つの観測値のうち観測値 2 および 3 をカテゴリカルとして指定できます。

例: 'CategoricalVars',[2,3]

例: 'CategoricalVars',logical([0 1 1 0 0 0])

データ型: single | double | logical | string | cell

項を追加または削除する基準。'Criterion' と以下のいずれかで構成される、コンマ区切りペアとして指定します。

  • 'sse' — 項の追加または削除による残差平方和の変化に対する F 検定の p 値。

  • 'aic' — AIC (赤池情報量基準) の値の変化。

  • 'bic' — BIC (ベイズ情報量基準) の値の変化。

  • 'rsquared' — R2 の値の増加。

  • 'adjrsquared' — 調整された R2 の値の増加。

例: 'Criterion','bic'

近似から除外する観測値。'Exclude' と、近似から除外する観測値を示す論理インデックス ベクトルまたは数値インデックス ベクトルで構成されるコンマ区切りのペアとして指定します。

たとえば、以下のいずれかの例を使用して、6 つの観測値のうち観測値 2 および 3 を除外できます。

例: 'Exclude',[2,3]

例: 'Exclude',logical([0 1 1 0 0 0])

データ型: single | double | logical

あてはめにおける定数項 (切片) のインジケーター。'Intercept' と、モデルに定数項を含める true またはモデルから定数項を削除する false で構成されるコンマ区切りのペアとして指定します。

式または行列ではなく文字ベクトルまたは string スカラーを使用してモデルを指定する場合のみ、'Intercept' を使用します。

例: 'Intercept',false

モデルから削除できない項を表すモデル仕様。'Lower' と、モデルの名前を表す modelspec に対するいずれかのオプションから構成されるコンマ区切りのペアとして指定します。

例: 'Lower','linear'

実行するステップの数。'NSteps' と正の整数値で構成されるコンマ区切りのペアとして指定します。

データ型: single | double

項を追加するための改善手段。'PEnter' とスカラー値で構成されるコンマ区切りのペアとして指定します。既定値は次のようになります。

規範既定値判定
'SSE'0.05モデルの SSE が PEnter よりも小さい場合、項をモデルに追加します。
'AIC'0モデルの AIC の変化が PEnter よりも小さい場合、項をモデルに追加します。
'BIC'0モデルの BIC の変化が PEnter よりも小さい場合、項をモデルに追加します。
'Rsquared'0.1モデルの決定係数値の増加が PEnter よりも大きい場合、項をモデルに追加します。
'AdjRsquared'0モデルの自由度調整済み決定係数値の増加が PEnter よりも大きい場合、項をモデルに追加します。

規範についての詳細は、Criterion の名前と値のペアの引数を参照してください。

例: 'PEnter',0.075

あてはめで使用する予測子変数。'PredictorVars' と、テーブルまたはデータセット配列 tbl に格納されている変数の名前を表す文字ベクトルの cell 配列または string 配列、またはどの列が予測子変数であるかを示す論理インデックス ベクトルまたは数値インデックス ベクトルから構成されるコンマ区切りのペアとして指定します。

string 値または文字ベクトルは、tbl に含まれている名前、または名前と値のペアの引数 'VarNames' を使用して指定した名前でなければなりません。

既定の設定は、X 内のすべての変数、または ResponseVar を除く、tbl 内のすべての変数です。

たとえば、以下のいずれかの例を使用して、2 番目と 3 番目の変数を予測子変数として指定できます。

例: 'PredictorVars',[2,3]

例: 'PredictorVars',logical([0 1 1 0 0 0])

データ型: single | double | logical | string | cell

項を削除するための改善手段。'PRemove' とスカラー値で構成されるコンマ区切りのペアとして指定します。

規範既定値判定
'SSE'0.10F 統計の p 値が PRemove よりも大きい場合、項をモデルから削除します。
'AIC'0.01モデルの AIC の変化が PRemove よりも大きい場合、項をモデルから削除します。
'BIC'0.01モデルの BIC の変化が PRemove よりも大きい場合、項をモデルから削除します。
'Rsquared'0.05モデルの決定係数値の増加が PRemove よりも小さい場合、項をモデルから削除します。
'AdjRsquared'-0.05モデルの自由度調整済み決定係数値の増加が PRemove よりも小さい場合、項をモデルから削除します。

各ステップでは、ステップワイズ アルゴリズムによって、項が現在のモデル内の他の項に対して冗長 (線形従属) かどうかもチェックされます。項が現在のモデルの他の項に線形従属している場合は、基準値に関係なく削除されます。

規範についての詳細は、Criterion の名前と値のペアの引数を参照してください。

例: 'PRemove',0.05

あてはめで使用する応答変数。'ResponseVar' と、テーブルまたはデータセット配列 tbl 内の変数名が格納されている文字ベクトルまたは string 配列、またはどの列が応答変数であるかを示す論理インデックス ベクトルまたは数値インデックス ベクトルから構成されるコンマ区切りのペアとして指定します。通常、テーブルまたはデータセット配列 tbl を近似させる場合に 'ResponseVar' を使用する必要があります。

たとえば、以下のいずれかの方法を使用して、6 つの変数のうち 4 番目の変数、つまり yield を応答変数として指定できます。

例: 'ResponseVar','yield'

例: 'ResponseVar',[4]

例: 'ResponseVar',logical([0 0 0 1 0 0])

データ型: single | double | logical | char | string

あてはめにおける最大の項集合を記述するモデル仕様。'Upper' とモデルを指定する modelspec のいずれかのオプションから構成されるコンマ区切りのペアとして指定します。

例: 'Upper','quadratic'

変数の名前。'VarNames' と、X の列名が最初に、応答変数 y の名前が最後に含まれている文字ベクトルの cell 配列または string 配列から構成されるコンマ区切りのペアとして指定します。

テーブルまたはデータセット配列の変数には既に名前が設定されているため、'VarNames' はこれらの配列には適用されません。

たとえば、データ内で、自動車の馬力、加速度、モデル年度が予測子変数であり、ガロンあたりの走行マイル数 (MPG) が応答変数である場合は、以下のように変数に名前を付けることができます。

例: 'VarNames',{'Horsepower','Acceleration','Model_Year','MPG'}

データ型: string | cell

情報の表示に関する制御。'Verbose' と、以下のいずれかで構成されるコンマ区切りのペアとして指定します。

  • 0 — すべての表示を抑制します。

  • 1 — 各ステップで実行されるアクションを表示します。

  • 2 — 各ステップで評価されるアクションも表示します。

例: 'Verbose',2

観測値の重み。'Weights' と、非負のスカラー値の n 行 1 列のベクトル (n は観測値の数) で構成されるコンマ区切りのペアとして指定します。

データ型: single | double

出力引数

すべて展開する

データに対する応答の最小二乗近似を表す線形モデル。LinearModel オブジェクトとして返されます。

線形モデル オブジェクト mdl のプロパティとメソッドについては、LinearModel クラスのページを参照してください。

すべて展開する

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

load hald

hald には、13 の異なるコンクリート化合物の硬化データが含まれています。heat は180 日経過した硬化の熱です。ingredients はセメント標本の異なる原料ごとのパーセントです。

データに線形モデルを近似するモデルを入力する基準値を 0.06 に設定します。

 mdl = stepwiselm(ingredients,heat,'PEnter',0.06)
1. Adding x4, FStat = 22.7985, pValue = 0.000576232
2. Adding x1, FStat = 108.2239, pValue = 1.105281e-06
3. Adding x2, FStat = 5.0259, pValue = 0.051687
4. Removing x4, FStat = 1.8633, pValue = 0.2054
mdl = 
Linear regression model:
    y ~ 1 + x1 + x2

Estimated Coefficients:
                   Estimate       SE       tStat       pValue  
                   ________    ________    ______    __________

    (Intercept)     52.577       2.2862    22.998    5.4566e-10
    x1              1.4683       0.1213    12.105    2.6922e-07
    x2             0.66225     0.045855    14.442     5.029e-08


Number of observations: 13, Error degrees of freedom: 10
Root Mean Squared Error: 2.41
R-squared: 0.979,  Adjusted R-Squared 0.974
F-statistic vs. constant model: 230, p-value = 4.41e-09

既定では、開始モデルは定数モデルです。stepwiselm は前方選択と x4x1 および x2 をそれぞれ実行します。これは対応する 値が PEnter の値 0.06 より小さいためです。その後、stepwiselm は後退消去を使用してモデルから x4 を消去します。これは、x2 がモデル内にあると、PRemove の既定値である 0.1 より x4 値が大きくなるためです。

データセット配列に格納されている変数を使用してステップワイズ回帰を実行します。ウィルキンソンの表記法を使用して開始モデルを指定し、オプションの引数を使用して応答変数と予測子変数を指定します。

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

load hospital

hospital データセット配列には、患者の性別、年齢、体重、喫煙状態が含まれています。

線形モデルを、定数項の開始モデルと予測子変数としての Smoker に適合させます。応答変数 Weight、カテゴリカル予測子変数 SexAge および Smoker を指定します。

mdl = stepwiselm(hospital,'Weight~1+Smoker',...
'ResponseVar','Weight','PredictorVars',{'Sex','Age','Smoker'},...
'CategoricalVar',{'Sex','Smoker'})
1. Adding Sex, FStat = 770.0158, pValue = 6.262758e-48
2. Removing Smoker, FStat = 0.21224, pValue = 0.64605
mdl = 
Linear regression model:
    Weight ~ 1 + Sex

Estimated Coefficients:
                   Estimate      SE      tStat       pValue   
                   ________    ______    ______    ___________

    (Intercept)     130.47     1.1995    108.77    5.2762e-104
    Sex_Male         50.06     1.7496    28.612     2.2464e-49


Number of observations: 100, Error degrees of freedom: 98
Root Mean Squared Error: 8.73
R-squared: 0.893,  Adjusted R-Squared 0.892
F-statistic vs. constant model: 819, p-value = 2.25e-49

各ステップで、stepwiselm は追加および削除する項を検索します。最初のステップでは、 値が 6.26e-48 であるモデルに Sex が追加されます。モデル内に Sex が与えられると、変数 Smoker が重複するためです。stepwiselm の最終的な線形モデルには Sex だけが含まれます。患者の体重は、年齢または喫煙状態に基づいた場合、有意な差異はありません。

詳細

すべて展開する

ヒント

  • ロバスト回帰をステップワイズ回帰と併用することはできません。LinearModel.stepwise を使用する前にデータの外れ値をチェックしてください。

  • 他のメソッドや、LinearModel オブジェクトのプロパティについては、LinearModel を参照してください。

アルゴリズム

"ステップワイズ回帰" は、応答変数の説明としての各項の統計的な重要性に基づき、線形または一般化線形モデルの項を追加したり削除するための体系的な方法です。この方法は、まず modelspec を使用して指定される初期モデルから開始して、徐々により大きいまたはより小さいモデルの説明能力を比較していきます。

MATLAB® ではフォワードおよびバックワードのステップワイズ回帰を使用して最終的なモデルを決定します。この方法では各ステップで 'Criterion' 引数の値に基づきモデルに追加したりモデルから削除する項を探します。'Criterion' の既定値は 'sse' で、この場合 stepwiselm は F 統計量の p 値を使用して、各ステップで追加可能項がある場合とない場合のモデルを検定します。ある項が現在はモデルにない場合、帰無仮説は、項がモデルに追加された場合に係数ゼロをもつということです。帰無仮説を棄却する十分な証拠があれば、その項がモデルに追加されます。逆に、ある項がモデルに現在ある場合、帰無仮説は、その項が係数ゼロをもつことです。帰無仮説を棄却する十分な証拠がなければ、その項がモデルから削除されます。

以下に、'Criterion''sse' である場合のステップワイズの処理方法を示します。

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

  2. 使用可能な一連の項の中でモデルに含まれていないものを調べます。モデルに含まれていない項のいずれかに対する p 値が開始許容誤差よりも小さい場合 (つまり、モデルに追加した場合に係数がゼロになる可能性が低い場合)、p 値が最小である項を追加し、この手順を繰り返します。それ以外の場合は、手順 3 を実行します。

  3. モデルに含まれている使用可能な項のいずれかに対する p 値が終了許容誤差よりも大きい場合 (つまり、係数がゼロになるという仮説を棄却できない場合)、p 値が最大である項を削除して手順 2 を実行します。それ以外の場合は終了します。

高い次数の項は、その項のサブセットである低い次数の項のすべてもモデルに含まれている場合を除き、どの段階でも追加されません。たとえば、X1X2^2 の両方が既にモデルに含まれている場合を除き、X1:X2^2 という項の追加は試行されません。同様に、高い次数の項がモデルに残っている場合、そのサブセットである低い次数の項は削除されません。たとえば、X1:X2^2 がモデルに残っている場合、X1 または X2^2 の削除は検討されません。

stepwiseglm の既定値は 'Deviance' で、項を追加または削除するための同様の手順に従います。

ほかにもいくつかの基準を使用できます。基準は 'Criterion' 引数を使用して指定できます。赤池情報量基準、ベイズ情報量基準、決定係数、自由度調整済み決定係数の値の変量を、項の追加や削除の基準として使用できます。

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

代替方法

stepwiselm を使用して、ステップワイズの線形モデルを構築することもできます。

fitlm を使用してモデルを構築し、次に stepaddTerms または removeTerms を使用して手動でモデルを調整します。ロバスト回帰には fitlm を使用します。ロバスト回帰とステップワイズ回帰を併用することはできません。

参照

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