Main Content

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

stepwiseglm

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

説明

mdl = stepwiseglm(tbl) は、定数モデルから開始し、ステップワイズ回帰を使用して予測子を追加または削除することにより、table またはデータセット配列 tbl の一般化線形モデルを作成します。stepwiseglm は、tbl の最後の変数を応答変数として使用します。stepwiseglm は、変数増減法のステップワイズ回帰を使用して、最終的なモデルを決定します。各ステップで、引数 'Criterion' の値に基づいて、モデルに対して追加または削除する項が探索されます。

mdl = stepwiseglm(X,y) はデータ行列 X に対する応答 y の一般化線形モデルを作成します。

mdl = stepwiseglm(___,modelspec) は、前の構文におけるいずれかの入力引数の組み合わせを使用して、開始モデル modelspec を指定します。

mdl = stepwiseglm(___,modelspec,Name,Value) では、1 つ以上の名前と値のペアの引数を使用して追加オプションを指定します。たとえば、カテゴリカル変数、モデルで使用する最小または最大の項集合、実行する最大ステップ数、stepwiseglm が項の追加または削除に使用する基準などを指定できます。

すべて折りたたむ

20 個の予測子の 3 つだけを使って応答データを作成し、正しい予測子だけを使用しているかどうかを確認するために、一般化線形モデルをステップワイズ アルゴリズムを使って作成します。

20 個の予測子でデータを作成し、そのうちの 3 つのみの予測子と 1 つの定数を使ってポアソン応答を作成します。

rng('default') % for reproducibility
X = randn(100,20);
mu = exp(X(:,[5 10 15])*[.4;.2;.3] + 1);
y = poissrnd(mu);

ポアソン分布を使用して一般化線形モデルを当てはめます。

mdl =  stepwiseglm(X,y,...
    'constant','upper','linear','Distribution','poisson')
1. Adding x5, Deviance = 134.439, Chi2Stat = 52.24814, PValue = 4.891229e-13
2. Adding x15, Deviance = 106.285, Chi2Stat = 28.15393, PValue = 1.1204e-07
3. Adding x10, Deviance = 95.0207, Chi2Stat = 11.2644, PValue = 0.000790094
mdl = 
Generalized linear regression model:
    log(y) ~ 1 + x5 + x10 + x15
    Distribution = Poisson

Estimated Coefficients:
                   Estimate       SE       tStat       pValue  
                   ________    ________    ______    __________

    (Intercept)     1.0115     0.064275    15.737    8.4217e-56
    x5             0.39508     0.066665    5.9263    3.0977e-09
    x10            0.18863      0.05534    3.4085     0.0006532
    x15            0.29295     0.053269    5.4995    3.8089e-08


100 observations, 96 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 91.7, p-value = 9.61e-20

開始モデルは、定数モデルです。stepwiseglm は既定でモデルの逸脱度を基準として使用します。最初に、x5 がモデルに追加されます。これは、検定統計量である逸脱度 (2 つのモデルの逸脱度の違い) に対する p 値が既定のしきい値 0.05 より小さいためです。次に、x15 が追加されます。これは、x5 がモデル内に存在していると、x15 を追加した場合にカイ二乗検定の p 値が 0.05 より小さくなるためです。次に、x10 が追加されます。これは、x5x15 がモデル内に存在していると、x10 を追加した場合にカイ二乗検定の p 値が再び 0.05 より小さくなるためです。

入力引数

すべて折りたたむ

予測子変数と応答変数を含む入力データ。テーブルまたはデータセット配列として指定します。予測子変数と応答変数は、数値、logical、categorical、文字または string にすることができます。応答変数のデータ型を数値以外にすることができるのは、'Distribution''binomial' である場合だけです。

  • 既定では、stepwiseglm は最後の変数を応答変数として、それ以外の変数を予測子変数として取ります。

  • 応答変数として異なる列を設定するには、名前と値のペア引数 ResponseVar を使用します。

  • 列のサブセットを予測子として使用するには、名前と値のペア引数 PredictorVars を使用します。

  • モデル仕様を定義するには、式または項行列を使用して引数 modelspec を設定します。式または項行列は、予測子または応答変数として使用する列を指定します。

table の変数名は、有効な MATLAB® 識別子である必要はありませんが、先頭または末尾に空白を含んではなりません。名前が有効でない場合、モデルの当てはめや調整の際に式を使用することはできません。以下に例を示します。

  • 式を使用して modelspec を指定することはできません。

  • 関数 addTerms または関数 removeTerms をそれぞれ使用するときに、式を使用して追加または削除する項を指定することはできません。

  • 名前と値のペアの引数 'Lower''Upper' を使用して関数 step または関数 stepwiseglm をそれぞれ使用するときに、式を使用してモデルの下限と上限を指定することはできません。

関数 isvarname を使用して tbl の変数名を検証できます。変数名が有効でない場合、関数 matlab.lang.makeValidName を使用してそれらを変換できます。

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

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

データ型: single | double

応答変数。ベクトルまたは行列として指定します。

  • 'Distribution''binomial' ではない場合、y は、n 行 1 列のベクトルでなければなりません。ここで、n は観測値の数です。y の各エントリは X の対応する行に対する応答です。データ型は single または double でなければなりません。

  • 'Distribution''binomial' である場合、y は n 行 1 列のベクトル、または列 1 にカウントを、列 2 に BinomialSize をもつ n 行 2 列の行列とすることができます。

データ型: single | double | logical | categorical

以下のいずれかとして指定される、stepwiseglm の開始モデル。

  • モデルを指定する文字ベクトルまたは string スカラー。

    モデル タイプ
    'constant'モデルは定数 (切片) 項だけを含みます。
    'linear'切片と各予測子の線形項がモデルに含まれます。
    'interactions'切片、各予測子の線形項、および異なる予測子のペアすべての積がモデルに含まれます (二乗項はありません)。
    'purequadratic'切片項と各予測子の線形項および二乗項がモデルに含まれます。
    'quadratic'切片項、各予測子の線形項、二乗項、および異なる予測子のペアすべての積がモデルに含まれます。
    'polyijk'モデルは多項式であり、1 番目の予測子における次数 i までのすべての項、2 番目の予測子における次数 j までのすべての項が含まれます。3 番目以降の項についても同様です。0 ~ 9 の数値を使用して、各予測子の最大次数を指定します。モデルには交互作用項が含まれますが、各交互作用項の次数は、指定された次数の最大値を超えません。たとえば、'poly13' には、切片、x1、x2、x22、x23、x1*x2 および x1*x22 の各項が含まれます。x1 および x2 はそれぞれ 1 番目および 2 番目の予測子です。
  • モデル内の項を指定する t 行 (p + 1) 列の行列、つまり項の行列。t は項の個数、p は予測子変数の個数であり、+1 は応答変数に相当します。項行列は、予測子の個数が多いときに項をプログラムで生成する場合に便利です。

  • 次の形式の文字ベクトルまたは string スカラー

    'y ~ terms',

    ここで、termsウィルキンソンの表記法で表されます。式の変数名は tbl の変数名または Varnames によって指定された変数名でなければなりません。また、変数名は有効な MATLAB 識別子でなければなりません。

    tbl または X の項の順序によって、当てはめたモデルの項の順序が決定されます。そのため、モデルの項の順序は、指定した式での項の順序とは異なる場合があります。

stepwiselm で近似するモデルに含まれている最小または最大の項の集合を指定するには、名前と値のペアの引数 Lower および Upper を使用します。

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

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後ろにする必要がありますが、ペアの順序は関係ありません。

R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みます。

例: 'Criterion','aic','Distribution','poisson','Upper','interactions' は、モデルに変数を追加または削除する基準として赤池情報量基準を、応答変数の分布としてポアソン分布を、近似を考慮する最大モデルとして、可能性のあるすべての交互作用をもつモデルを指定します。

二項分布の試行回数、つまり標本サイズ。'BinomialSize'tbl の変数名、数値スカラー、または応答と同じ長さの数値ベクトルで構成されるコンマ区切りのペアとして指定します。これは近似した二項分布のための n パラメーターです。BinomialSize は、Distribution パラメーターが 'binomial' であるときにだけ適用されます。

BinomialSize がスカラー値の場合は、すべての観測が同じ試行回数であることを意味します。

BinomialSize の代替法として、列 1 にカウント、列 2 に BinomialSize をもつ 2 列の行列として応答を指定できます。

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

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

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

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

たとえば、以下のいずれかを使用して、6 つのうちの 2 番目と 3 番目の変数をカテゴリカルとして指定できます。

例: 'CategoricalVars',[2,3]

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

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

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

  • 'Deviance' — 項の追加または削除によって生じる逸脱度の変化に対する F 検定またはカイ二乗検定の p 値。F 検定では単一のモデルを検定し、カイ二乗検定では 2 つの異なるモデルを比較します。

  • 'sse' — 項の追加または削除によって生じる二乗誤差の和の変化に対する F 検定の p 値。

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

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

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

  • 'adjrsquared' — 自由度調整済み R2 の値の増加

例: 'Criterion','bic'

'binomial' および 'poisson' 分布の分散パラメーターを計算するインジケーター。'DispersionFlag' と以下のいずれかで構成されるコンマ区切りのペアとして指定します。

true標準誤差を計算するときに分散パラメーターを推定します。分散パラメーターの推定値は、ピアソン残差の二乗和を誤差の自由度 (DFE) で除算した値です。
false既定の設定。標準誤差を計算するときに理論値 1 を使用します。

近似関数は常に他の分布の分散を予測します。

例: 'DispersionFlag',true

応答変数の分布。'Distribution' と以下のいずれかで構成されるコンマ区切りのペアとして指定します。

'normal'正規分布
'binomial'二項分布
'poisson'ポアソン分布
'gamma'ガンマ分布
'inverse gaussian'逆ガウス分布

例: 'Distribution','gamma'

近似から除外する観測値。'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' と正の整数から構成されるコンマ区切りのペアとして指定します。

例: 'NSteps',5

データ型: single | double

近似のオフセット変数。'Offset' と、tbl に含まれる変数名または応答と同じ長さの数値ベクトルで構成されるコンマ区切りのペアとして指定します。

stepwiseglm は、係数値を 1 で固定した追加の予測子として Offset を使用します。つまり、当てはめの式は次のようになります。

f(μ) = Offset + X*b,

ここで、f はリンク関数、μ は平均応答、X*b は予測子 X の線形結合です。予測子 Offset の係数は 1 です。

たとえば、ポアソン回帰モデルを検討してください。カウントの数が理論上の理由により予測子 A に対して比例していることがわかっていると仮定します。log リンク関数を使用し、オフセットに log(A) を指定することにより、この理論上の制約を満たすことをモデルに強制できます。

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

項を追加する基準のしきい値。'PEnter' と次の表に記載されているスカラー値から構成されるコンマ区切りのペアとして指定します。

規範既定値判定
'Deviance'0.05F 統計量またはカイ二乗統計量の p 値が PEnter (入力に対する p 値) 未満である場合、項をモデルに追加します。
'SSE'0.05F 統計量の p 値が 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' と次の表に記載されているスカラー値から構成されるコンマ区切りのペアとして指定します。

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

各ステップで、関数 stepwiseglm は項が現在のモデル内の他の項に対して冗長 (線形従属) であるかどうかもチェックします。項が現在のモデル内の他の項に線形従属している場合、関数 stepwiseglm は従属する項を基準値に関係なく削除します。

詳細は、名前と値のペアの引数 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' はこれらの配列には適用されません。

変数名は、有効な MATLAB 識別子である必要はありませんが、先頭または末尾に空白を含んではなりません。名前が有効でない場合、モデルの当てはめや調整の際に式を使用することはできません。以下に例を示します。

  • 関数 addTerms または関数 removeTerms をそれぞれ使用するときに、式を使用して追加または削除する項を指定することはできません。

  • 名前と値のペアの引数 'Lower''Upper' を使用して関数 step または関数 stepwiseglm をそれぞれ使用するときに、式を使用してモデルの下限と上限を指定することはできません。

'VarNames',varNames を指定する前に、関数 isvarname を使用して varNames の変数名を検証できます。変数名が有効でない場合、関数 matlab.lang.makeValidName を使用してそれらを変換できます。

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

データ型: string | cell

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

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

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

  • 2 — 評価プロセスと、各ステップで実行されるアクションを表示します。

例: 'Verbose',2

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

データ型: single | double

出力引数

すべて折りたたむ

一般化線形回帰モデル。fitglm または stepwiseglm を使用して作成した GeneralizedLinearModel オブジェクトとして指定します。

詳細

すべて折りたたむ

項の行列

項行列 T は、モデル内の項を指定する t 行 (p + 1) 列の行列です。t は項の数、p は予測子変数の数であり、+1 は応答変数に相当します。T(i,j) の値は、項 i の変数 j の指数です。

たとえば、3つの予測子変数 x1x2x3 と応答変数 yx1x2x3y という順序で入力に含まれていると仮定します。T の各行は 1 つの項を表します。

  • [0 0 0 0] — 定数項 (切片)

  • [0 1 0 0]x2 (x1^0 * x2^1 * x3^0 と等価)

  • [1 0 1 0]x1*x3

  • [2 0 0 0]x1^2

  • [0 1 2 0]x2*(x3^2)

各項の最後の 0 は、応答変数を表します。一般に、項行列内のゼロの列ベクトルは、応答変数の位置を表します。行列と列ベクトルに予測子と応答変数がある場合、各行の最後の列に応答変数を示す 0 を含めなければなりません。

モデル仕様の式は 'y ~ terms' という形式の文字ベクトルまたは string スカラーです。

  • y は応答名です。

  • terms は、ウィルキンソンの表記法を使用してモデル内の予測子の項を表します。

予測子と応答変数を表現するには、table 入力 tbl の変数名、または VarNames を使用して指定された変数名を使用します。VarNames の既定値は {'x1','x2',...,'xn','y'} です。

以下に例を示します。

  • 'y ~ x1 + x2 + x3' は、切片がある 3 変数の線形モデルを指定します。

  • 'y ~ x1 + x2 + x3 – 1' は、切片がない 3 変数の線形モデルを指定します。既定では式に定数 (切片) 項が含まれることに注意してください。モデルから定数項を除外するには、–1 を式に含めなければなりません。

–1 を使用して項を明示的に削除しない限り、式は定数項を含みます。

ウィルキンソンの表記法

ウィルキンソンの表記法は、モデルに存在する項を記述します。この表記法は、モデルに存在する項に関係するものであり、それらの項の乗数 (係数) に関係するものではありません。

ウィルキンソンの表記法では、以下の記号を使用します。

  • + は、次の変数を含むことを意味します。

  • は、次の変数を含まないことを意味します。

  • : は、項の積である交互作用を定義します。

  • * は、交互作用と、より低い次数の項すべてを定義します。

  • ^ は、* を繰り返した場合とまったく同じ方法で予測子をべき乗にします。このため、^ には、より低い次数の項も含まれます。

  • () は、項をグループ化します。

次の表に、ウィルキンソンの表記法の代表的な例を示します。

ウィルキンソンの表記法標準表記の項
1定数 (切片) 項
x1^kk は正の整数x1, x12, ..., x1k
x1 + x2x1, x2
x1*x2x1, x2, x1*x2
x1:x2x1*x2 のみ
–x2x2 は含めない
x1*x2 + x3x1, x2, x3, x1*x2
x1 + x2 + x3 + x1:x2x1, x2, x3, x1*x2
x1*x2*x3 – x1:x2:x3x1, x2, x3, x1*x2, x1*x3, x2*x3
x1*(x2 + x3)x1, x2, x3, x1*x2, x1*x3

詳細は、ウィルキンソンの表記法を参照してください。

正準関数

一般化線形モデルの既定のリンク関数は、"正準リンク関数" です。

分布正準リンク関数名リンク関数平均 (逆) 関数
'normal''identity'f(μ) = μμ = Xb
'binomial''logit'f(μ) = log(μ/(1 – μ))μ = exp(Xb) / (1 + exp(Xb))
'poisson''log'f(μ) = log(μ)μ = exp(Xb)
'gamma'-1f(μ) = 1/μμ = 1/(Xb)
'inverse gaussian'-2f(μ) = 1/μ2μ = (Xb)–1/2

ヒント

  • 正則化された線形モデル mdl は、別途 Distribution 名前と値のペアで指定しない限り、標準線形モデルです。

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

  • モデルに学習をさせた後で、新しいデータについて応答を予測する C/C++ コードを生成できます。C/C++ コードの生成には MATLAB Coder™ が必要です。詳細については、コード生成の紹介を参照してください。

アルゴリズム

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

    関数 stepwiseglm は、変数増減法のステップワイズ回帰を使用して、最終的なモデルを決定します。各ステップで、名前と値のペアの引数 'Criterion' の値に基づいて、モデルに追加する項またはモデルから削除する項が探索されます。

    線形回帰モデルでは、'Criterion' の既定値は 'sse' です。この場合、LinearModelstepstepwiselm は、各ステップで F 統計量の p 値を使用して、ある項が存在する場合と存在しない場合のモデルを検定します。ある項が現在はモデルにない場合、帰無仮説は、項がモデルに追加された場合に係数ゼロをもつということです。帰無仮説を棄却する十分な証拠がある場合、その項がモデルに追加されます。逆に、ある項がモデルに現在ある場合、帰無仮説は、その項が係数ゼロをもつことです。帰無仮説を棄却する十分な証拠がない場合、その項がモデルから削除されます。

    'Criterion''sse' である場合、ステップワイズ回帰では以下のステップが実行されます。

    1. 初期モデルを当てはめます。

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

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

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

    一般化線形モデルでは、'Criterion' の既定値は 'Deviance' です。GeneralizedLinearModelstepstepwiseglm は、同様の手順に従って項を追加または削除します。

    名前と値のペアの引数 'Criterion' を使用して、他の基準を指定できます。たとえば、赤池情報量基準、ベイズ情報量基準、決定係数または自由度調整済み決定係数の値の変化を、項の追加または削除の基準として指定できます。

    初期モデルに含まれている項と、項の追加および削除を行う順序によって、同じ一連の項から異なるモデルが構築される可能性があります。どのステップでもモデルが改良されなくなると、この関数は終了します。ただし、異なる初期モデルまたはステップの順序を使用しても、近似が向上するという保証はありません。この意味において、ステップワイズ モデルは、局所的には最適でも大域的には最適ではないことがあります。

  • stepwiseglm では、カテゴリカル予測子が次のように扱われます。

    • L 個の水準 (カテゴリ) があるカテゴリカル予測子をもつモデルには、L – 1 個の指標変数が含まれています。1 番目のカテゴリが基準水準として使用されるので、基準水準に対する指標変数はモデルに含まれません。カテゴリカル予測子のデータ型が categorical である場合、categories を使用してカテゴリの順序をチェックし、reordercats を使用してカテゴリを並べ替えることにより、基準水準をカスタマイズできます。指標変数の作成の詳細については、ダミー変数の自動作成を参照してください。

    • stepwiseglm は、L – 1 個の指標変数のグループを単一の変数として扱います。指標変数を個別の予測子変数として扱うには、dummyvar を使用して指標変数を手動で作成します。そして、モデルを当てはめるときに、カテゴリカル変数の基準水準に対応するものを除く指標変数を使用します。カテゴリカル予測子 X について dummyvar(X) のすべての列と切片項を予測子として指定した場合、計画行列はランク落ちとなります。

    • L 個の水準をもつカテゴリカル予測子と連続予測子の間の交互作用項は、L – 1 個の指標変数と連続予測子の要素単位の積から構成されます。

    • L 個の水準をもつカテゴリカル予測子と M 個の水準をもつカテゴリカル予測子の間の交互作用項は、2 つのカテゴリカル予測子の水準について可能なすべての組み合わせを含めるため、(L – 1)*(M – 1) 個の指標変数から構成されます。

    • 指標の二乗はそれ自体に等しいので、より次数が高い項をカテゴリカル予測子に対して指定することはできません。

    したがって、stepwiseglm がカテゴリカル予測子を追加または削除する場合、実際には指標変数のグループが一度に追加または削除されます。同様に、カテゴリカル予測子が含まれている交互作用項を stepwiseglm が追加または削除する場合、実際には、カテゴリカル予測子が含まれている交互作用項のグループが追加または削除されます。

  • stepwiseglm は、tblX および Y に含まれている NaN'' (空の文字ベクトル)、"" (空の string)、<missing>、および <undefined> 値を欠損値と見なします。stepwiseglm は、欠損値がある観測値を当てはめで使用しません。当てはめたモデルの ObservationInfo プロパティは、stepwiseglm が各観測値を当てはめで使用したかどうかを示します。

代替方法

  • fitglm を使用して、固定された仕様のモデルを作成します。stepaddTerms または removeTerms を使用して近似モデルを調整します。

参照

[1] Collett, D. Modeling Binary Data. New York: Chapman & Hall, 2002.

[2] Dobson, A. J. An Introduction to Generalized Linear Models. New York: Chapman & Hall, 1990.

[3] McCullagh, P., and J. A. Nelder. Generalized Linear Models. New York: Chapman & Hall, 1990.

バージョン履歴

R2013b で導入