メインコンテンツ

stepwiselm

ステップワイズ回帰の実行

説明

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

mdl = stepwiselm(tbl,ResponseVarName) は、応答データが格納された table 変数を指定します。

mdl = stepwiselm(tbl,y) は、tbl の変数を予測子に使用し、y を応答に使用します。

mdl = stepwiselm(X,y) は、データ行列 X 内の予測子変数に対する応答 y の線形モデルを作成します。

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

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

すべて折りたたむ

hald データ セットを読み込みます。これは、セメントの硬化熱に対してセメントの組成が与える影響を測定したデータです。

load hald

このデータ セットには、変数 ingredients および heat が含まれています。行列 ingredients には、セメントに含まれている 4 種類の化学物質の組成率が格納されています。ベクトル heat には、各セメント標本に対する 180 日後の硬化熱の値が格納されています。

ステップワイズ線形回帰モデルをデータに当てはめます。モデルに項を追加する基準のしきい値として 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 の各項を (この順番で) 追加します。これは対応する p 値が PEnter の値 0.06 より小さいためです。その後、stepwiselm は後退消去を使用して x4 をモデルから削除します。これは、x2 がモデル内にあると、PRemove の既定値である 0.1 より x4p 値が大きくなるためです。

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

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

load patients

変数 GenderAgeWeight、および Smoker には、患者の性別、年齢、体重、および喫煙状況のデータが格納されています。

変数を table に格納します。

tbl = table(Gender,Age,Weight,Smoker,VariableNames=["Gender","Age","Weight","Smoker"]);

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

mdl = stepwiselm(tbl,"Weight~1+Smoker",...
ResponseVar="Weight",PredictorVars=["Gender","Age","Smoker"],...
CategoricalVar=["Gender","Smoker"])
1. Adding Gender, FStat = 770.0158, pValue = 6.262758e-48
2. Removing Smoker, FStat = 0.21224, pValue = 0.64605
mdl = 
Linear regression model:
    Weight ~ 1 + Gender

Estimated Coefficients:
                     Estimate      SE       tStat       pValue   
                     ________    ______    _______    ___________

    (Intercept)       180.53     1.2737     141.73    3.3776e-115
    Gender_Female     -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 は追加および削除する項を検索します。最初のステップでは、p 値 6.26e-48 でモデルに Gender が追加されます。その後、Smoker がモデルから削除されます。モデル内に Gender が与えられると、変数 Smoker が重複するためです。stepwiselm の最終的な線形モデルには Gender だけが含まれます。患者の体重は、年齢または喫煙状態に基づいた場合、有意な差異はありません。

標本データ セットを読み込み、予測子の行列を定義します。

load carsmall
X = [Acceleration,Weight];

項行列を使用して、開始モデルと上限モデルを定義します。

T_starting = [0 0 0] % a constant model
T_starting = 1×3

     0     0     0

T_upper = [0 0 0;1 0 0;0 1 0;1 1 0] % a linear model with interactions
T_upper = 4×3

     0     0     0
     1     0     0
     0     1     0
     1     1     0

ステップワイズ回帰を使用して線形回帰モデルを作成します。項行列を使用して、開始モデルと上限のモデルを指定します。評価プロセスおよび各ステップで行われた決定を表示するため、'Verbose' として 2 を指定します。

mdl = stepwiselm(X,MPG,T_starting,'upper',T_upper,'Verbose',2)
   pValue for adding x1 is 4.0973e-06
   pValue for adding x2 is 1.6434e-28
1. Adding x2, FStat = 259.3087, pValue = 1.643351e-28
   pValue for adding x1 is 0.18493
   No candidate terms to remove
mdl = 
Linear regression model:
    y ~ 1 + x2

Estimated Coefficients:
                    Estimate        SE         tStat       pValue  
                   __________    _________    _______    __________

    (Intercept)        49.238       1.6411     30.002    2.7015e-49
    x2             -0.0086119    0.0005348    -16.103    1.6434e-28


Number of observations: 94, Error degrees of freedom: 92
Root Mean Squared Error: 4.13
R-squared: 0.738,  Adjusted R-Squared: 0.735
F-statistic vs. constant model: 259, p-value = 1.64e-28

ステップワイズ回帰を使用して、カテゴリカル予測子がある線形回帰モデルを当てはめます。stepwiselm は、指標変数のグループを一度に追加または削除してカテゴリカル予測子を追加または削除します。この例では、stepwiselm が各指標変数を個別の予測子として扱うようにするため、指標変数を手動で作成して stepwiselm に渡す方法も示します。

carsmall データ セットを読み込み、変数 WeightModel_Year および MPG を使用して table を作成します。

load carsmall
Year = categorical(Model_Year);
tbl1 = table(MPG,Weight,Year);

ステップワイズ回帰を使用して、MPG の線形回帰モデルを当てはめます。開始モデルとして、Weight の関数を指定します。モデルの上限を 'poly21' に設定します。これは、(最大で) 定数と項 WeightWeight^2Year および Weight*Year をモデルに含めることができることを意味します。評価プロセスと、各ステップで行われた決定を表示するため、'Verbose' として 2 を指定します。

mdl1 = stepwiselm(tbl1,'MPG ~ Weight','Upper','poly21','Verbose',2)
   pValue for adding Year is 8.2284e-15
   pValue for adding Weight^2 is 0.15454
1. Adding Year, FStat = 47.5136, pValue = 8.22836e-15
   pValue for adding Weight^2 is 0.0022303
   pValue for adding Weight:Year is 0.0071637
2. Adding Weight^2, FStat = 9.9164, pValue = 0.0022303
   pValue for adding Weight:Year is 0.19519
   pValue for removing Year is 2.9042e-16
mdl1 = 
Linear regression model:
    MPG ~ 1 + Weight + Year + Weight^2

Estimated Coefficients:
                    Estimate         SE         tStat       pValue  
                   __________    __________    _______    __________

    (Intercept)        54.206        4.7117     11.505    2.6648e-19
    Weight          -0.016404     0.0031249    -5.2493    1.0283e-06
    Year_76            2.0887       0.71491     2.9215     0.0044137
    Year_82            8.1864       0.81531     10.041    2.6364e-16
    Weight^2       1.5573e-06    4.9454e-07      3.149     0.0022303


Number of observations: 94, Error degrees of freedom: 89
Root Mean Squared Error: 2.78
R-squared: 0.885,  Adjusted R-Squared: 0.88
F-statistic vs. constant model: 172, p-value = 5.52e-41

Year には 3 つの異なる値が含まれているので、stepwiselm は 2 つの指標変数 Year_76 および Year_82 を作成します。

'Verbose' が 2 なので、stepwiselm は評価プロセスを表示します。

  • stepwiselm は、Weight の関数としてモデルを作成します。

  • stepwiselm は、Year または Weight^2 の追加に対する p 値を計算します。Yearp 値は Weight^2p 値および既定のしきい値 0.05 の両方より小さいので、stepwiselmYear をモデルに追加します。

  • stepwiselm は、Weight:Year または Weight^2 の追加に対する p 値を計算します。Weight^2p 値は Weight:Yearp 値より小さいので、関数 stepwiselmWeight^2 をモデルに追加します。

  • 2 次の項を追加した後で、stepwiselmWeight:Year の追加に対する p 値を再度計算しますが、p 値はしきい値より大きくなっています。したがって、stepwiselm は項をモデルに追加しません。名前と値のペアの引数 'Upper' によって指定された上限のため、stepwiselmWeight^3 の追加を検討しません。

  • stepwiselm は、削除する項を探します。stepwiselm は既に Weight^2 を検討したので、Year の削除に対する p 値のみを計算します。p 値が既定のしきい値 0.10 より小さいので、stepwiselm は項を削除しません。

  • 許容される最大ステップ数は 5 ですが、項の追加または削除を行ってもモデルが改善されないので、stepwiselm は 2 ステップ後に処理を停止します。

stepwiselm は、2 つの指標変数を 1 つの予測子変数として扱い、Year を一度に追加します。2 つの指標変数を 2 つの異なる予測子変数として扱うには、dummyvarを使用して別々のカテゴリカル変数を作成します。

temp_Year = dummyvar(Year);
Year_76 = logical(temp_Year(:,2));
Year_82 = logical(temp_Year(:,3));

MPGWeightYear_76 および Year_82 が含まれている table を作成します。

tbl2 = table(MPG,Weight,Year_76,Year_82);

mdl1 に使用したものと同じ開始モデルから、ステップワイズ線形回帰モデルを作成します。

mdl2 = stepwiselm(tbl2,'MPG ~ Weight','Upper','poly211')
1. Adding Year_82, FStat = 83.1956, pValue = 1.76163e-14
2. Adding Weight:Year_82, FStat = 8.0641, pValue = 0.0055818
3. Adding Year_76, FStat = 8.1284, pValue = 0.0054157
mdl2 = 
Linear regression model:
    MPG ~ 1 + Year_76 + Weight*Year_82

Estimated Coefficients:
                         Estimate         SE         tStat       pValue  
                        __________    __________    _______    __________

    (Intercept)             38.844        1.5294     25.397     1.503e-42
    Weight               -0.006272    0.00042673    -14.698    1.5622e-25
    Year_76_1               2.0395       0.71537      2.851     0.0054157
    Year_82_1               19.607        3.8731     5.0623    2.2163e-06
    Weight:Year_82_1    -0.0046268     0.0014979    -3.0888     0.0026806


Number of observations: 94, Error degrees of freedom: 89
Root Mean Squared Error: 2.79
R-squared: 0.885,  Adjusted R-Squared: 0.88
F-statistic vs. constant model: 171, p-value = 6.54e-41

モデル mdl2 には、mdl1 に含まれていた項 Weight^2 の代わりに交互作用項 Weight:Year_82_1 が含まれています。

入力引数

すべて折りたたむ

予測子変数と応答変数を含む入力データ。table として指定します。予測子変数は、数値、logical、categorical、文字または string にすることができます。応答変数は、数値または logical でなければなりません。

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

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

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

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

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

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

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

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

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

応答として使用する変数の名前。string スカラーまたは文字ベクトルとして指定します。ResponseVarName は、tbl のどの変数に応答データが格納されているかを示します。ResponseVarName を指定する場合、入力引数 tbl も指定しなければなりません。

データ型: char | string

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

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

データ型: single | double

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

データ型: single | double

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

  • モデルの名前を含む文字ベクトルまたは string スカラー。

    モデルの説明
    "constant"定数 (切片) 項のみがモデルに含まれます。
    "linear"切片と各予測子の線形項がモデルに含まれます。
    "interactions"切片、各予測子の線形項、および異なる予測子のペアすべての積がモデルに含まれます (二乗項はありません)。
    "purequadratic"切片項と各予測子の線形項および二乗項がモデルに含まれます。
    "quadratic"切片項、各予測子の線形項、二乗項、および異なる予測子のペアすべての積がモデルに含まれます。
    "polyijk"モデルは多項式であり、1 番目の予測子における次数 i までのすべての項、2 番目の予測子における次数 j までのすべての項が含まれます。3 番目以降の項についても同様です。0 ~ 9 の数値を使用して、各予測子の最大次数を指定します。モデルには交互作用項が含まれますが、各交互作用項の次数は、指定された次数の最大値を超えません。たとえば、"poly13" には、切片、x1x2x22x23x1*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 を使用します。

modelspec を指定する場合、名前と値の引数 PredictorVars を使用して予測子変数を指定することはできません。

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

名前と値の引数

すべて折りたたむ

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

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

例: 'Criterion','aic','Upper','interactions','Verbose',1stepwiselm に対して、赤池情報量基準を使用し、各ステップで実行するアクションを表示し、最大でモデル内の交互作用項を含むように指示します。

カテゴリカル予測子のリスト。table tbl 内のカテゴリカル予測子名が含まれている string 配列または文字ベクトルの cell 配列、またはどの予測子の列がカテゴリカルであるかを示す論理インデックス ベクトルまたは数値インデックス ベクトルとして指定します。

  • 予測子データが table tbl に格納されている場合、既定では、stepwiselm はカテゴリカル値、論理値、文字配列、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'

当てはめから除外する観測値。当てはめから除外する観測値を示す論理インデックス ベクトルまたは数値インデックス ベクトルとして指定します。

たとえば、以下のいずれかの例を使用して、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

項を追加する基準のしきい値。次の表に記載されているスカラー値として指定します。

基準既定値判定
'SSE'0.05F 統計量の p 値が PEnter (入力に対する p 値) より小さい場合、項をモデルに追加します。
'AIC'0モデルの AIC の変化が PEnter より小さい場合、項をモデルに追加します。
'BIC'0モデルの BIC の変化が PEnter より小さい場合、項をモデルに追加します。
'Rsquared'0.1モデルの決定係数値の増加が PEnter より大きい場合、項をモデルに追加します。
'AdjRsquared'0モデルの自由度調整済み決定係数値の増加が PEnter より大きい場合、項をモデルに追加します。

変数増加法のステップワイズ回帰を防ぐには、stepwiselm が達することがない値を PEnter に指定します。

  • Criterion"SSE""AIC"、または "BIC" の場合は、PEnter–Inf として指定します。

  • Criterion"Rsquared" または "AdjRsquared" の場合は、PEnterInf として指定します。

例: PEnter=0.075

当てはめで使用する予測子変数。table tbl に格納されている変数の名前を表す string 配列または文字ベクトルの cell 配列、またはどの列が予測子変数であるかを示す論理インデックス ベクトルまたは数値インデックス ベクトルとして指定します。

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

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

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

PredictorVars を指定する場合、入力引数 modelspec を使用して項の行列を指定することはできません。

例: PredictorVars=[2,3]

例: PredictorVars=logical([0 1 1 0 0 0])

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

項を削除する基準のしきい値。次の表に記載されているスカラー値として指定します。

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

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

変数減少法のステップワイズ回帰を防ぐには、stepwiselm が達することがない値を PRemove に指定します。

  • Criterion"SSE""AIC"、または "BIC" の場合は、PRemoveInf として指定します。

  • Criterion"Rsquared" または "AdjRsquared" の場合は、PRemove–Inf として指定します。

例: PRemove=0.05

当てはめで使用する応答変数。table tbl 内の変数名が格納されている文字ベクトルまたは string スカラー、またはどの列が応答変数であるかを示す論理インデックス ベクトルまたは数値インデックス ベクトルとして指定します。通常、table 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'

変数の名前。X の列名が最初に、応答変数 y の名前が最後に含まれている string 配列または文字ベクトルの cell 配列として指定します。

table の変数には既に名前が設定されているため、VarNames はそれらの変数には適用されません。

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

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

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

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

例: VarNames=["Horsepower","Acceleration","Model_Year","MPG"]

データ型: string | cell

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

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

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

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

例: 'Verbose',2

観測値の重み。非負のスカラー値の n 行 1 列のベクトル (n は観測値の数) として指定します。

データ型: single | double

出力引数

すべて折りたたむ

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

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

詳細

すべて折りたたむ

ヒント

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

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

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

アルゴリズム

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

    関数 stepwiselm は、変数増減法のステップワイズ回帰を使用して、最終的なモデルを決定します。各ステップで、名前と値のペアの引数 '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' を使用して、他の基準を指定できます。たとえば、赤池情報量基準、ベイズ情報量基準、決定係数または自由度調整済み決定係数の値の変化を、項の追加または削除の基準として指定できます。

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

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

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

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

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

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

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

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

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

代替機能

  • fitlm を使用してモデルを構築し、次に stepaddTerms または removeTerms を使用して手動でモデルを調整します。

バージョン履歴

R2013b で導入

すべて展開する