ドキュメンテーション

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

fitlm

線形回帰モデルの作成

fitlmLinearModel オブジェクトを作成します。作成したオブジェクトはワークスペースに表示できます。オブジェクトをクリックすると、含まれているすべてのプロパティを確認できます。plotplotResidualsplotDiagnostics などのメソッドを使用すると、プロットの作成や詳細な診断分析を行うことができます。LinearModel のメソッドの一覧については、「メソッド」を参照してください。

構文

mdl = fitlm(tbl)
mdl = fitlm(tbl,modelspec)
mdl = fitlm(X,y)
mdl = fitlm(X,y,modelspec)
mdl = fitlm(___,Name,Value)

説明

mdl = fitlm(tbl) は、テーブルまたはデータセット配列 tbl の変数に線形モデルの近似を返します。既定では、fitlm は最後の変数を応答変数として取ります。

mdl = fitlm(tbl,modelspec) は、テーブルまたはデータセット配列 tbl の変数に近似するため、modelspec で指定した線形モデルを返します。

mdl = fitlm(X,y) はデータ行列 X に、応答 y の線形モデルの近似を返します。

mdl = fitlm(X,y,modelspec) は、データ行列 X に近似する線形モデル (応答 ymodelspec で指定したタイプ) を返します。

mdl = fitlm(___,Name,Value) は、1 つまたは複数の Name,Value のペアの引数によって指定された追加オプションを使用して線形モデルを返します。

たとえば、カテゴリカルである変数、ロバスト回帰を実行する変数または観測値の重みを使用する変数を指定できます。

すべて折りたたむ

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

load carsmall

変数をテーブルに格納します。

tbl = table(Weight,Acceleration,MPG,'VariableNames',{'Weight','Acceleration','MPG'});

テーブルの最初の 5 行を表示します。

tbl(1:5,:)
ans =

  5x3 table

    Weight    Acceleration    MPG
    ______    ____________    ___

     3504           12        18 
     3693         11.5        15 
     3436           11        18 
     3433           12        16 
     3449         10.5        17 

ガロンあたりの走行マイル数 (MPG) に対して線形回帰モデルを近似させます。

lm = fitlm(tbl,'MPG~Weight+Acceleration')
lm = 


Linear regression model:
    MPG ~ 1 + Weight + Acceleration

Estimated Coefficients:
                     Estimate         SE         tStat       pValue  
                    __________    __________    _______    __________

    (Intercept)         45.155        3.4659     13.028    1.6266e-22
    Weight          -0.0082475    0.00059836    -13.783    5.3165e-24
    Acceleration       0.19694       0.14743     1.3359       0.18493


Number of observations: 94, Error degrees of freedom: 91
Root Mean Squared Error: 4.12
R-squared: 0.743,  Adjusted R-Squared 0.738
F-statistic vs. constant model: 132, p-value = 1.38e-27

この構文では、ウィルキンソンの表記法を使用して modelspec を指定しています。

この例の 'MPG~Weight+Acceleration' というモデルは、modelspec'linear' を使用してモデルをあてはめた場合と同じになります。例えば、

lm2 = fitlm(tbl,'linear');

modelspec に文字ベクトルを使用し、応答変数を指定しなかった場合、既定により fitlm では tbl の最後の変数が応答変数として、他の変数が予測子変数として受け入れられます。カテゴリカル変数がある場合に 'linear'modelspec として指定するには、名前と値のペアの引数 CategoricalVars を使用して、それらの変数がカテゴリカル変数であることを明示的に指定しなければなりません。

ウィルキンソンの表記法で指定したモデル式を使用して線形回帰モデルをあてはめます。

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

load carsmall

変数をテーブルに格納します。

tbl = table(Weight,Acceleration,Model_Year,MPG,'VariableNames',{'Weight','Acceleration','Model_Year','MPG'});

重量と加速度を予測子変数として使用して、ガロンあたりの走行マイル数 (MPG) に線形回帰モデルをあてはめます。

lm = fitlm(tbl,'MPG~Weight+Acceleration')
lm = 


Linear regression model:
    MPG ~ 1 + Weight + Acceleration

Estimated Coefficients:
                     Estimate         SE         tStat       pValue  
                    __________    __________    _______    __________

    (Intercept)         45.155        3.4659     13.028    1.6266e-22
    Weight          -0.0082475    0.00059836    -13.783    5.3165e-24
    Acceleration       0.19694       0.14743     1.3359       0.18493


Number of observations: 94, Error degrees of freedom: 91
Root Mean Squared Error: 4.12
R-squared: 0.743,  Adjusted R-Squared 0.738
F-statistic vs. constant model: 132, p-value = 1.38e-27

値は 0.18493 なので、AccelerationMPG に有意な影響を与えていないことがわかります。

Acceleration をモデルから削除し、予測子変数 Model_Year を追加することによりモデルの改善を試します。まず、Model_Year をカテゴリカル変数として定義します。

tbl.Model_Year = categorical(tbl.Model_Year);
lm = fitlm(tbl,'MPG~Weight+Model_Year')
lm = 


Linear regression model:
    MPG ~ 1 + Weight + Model_Year

Estimated Coefficients:
                      Estimate         SE         tStat       pValue  
                     __________    __________    _______    __________

    (Intercept)           40.11        1.5418     26.016    1.2024e-43
    Weight           -0.0066475    0.00042802    -15.531    3.3639e-27
    Model_Year_76        1.9291       0.74761     2.5804      0.011488
    Model_Year_82        7.9093       0.84975     9.3078    7.8681e-15


Number of observations: 94, Error degrees of freedom: 90
Root Mean Squared Error: 2.92
R-squared: 0.873,  Adjusted R-Squared 0.868
F-statistic vs. constant model: 206, p-value = 3.83e-40

ウィルキンソンの表記法を使用して modelspec を指定すると、計画行列を変更せずにモデルを更新できます。fitlm は、式で指定されている変数のみを使用します。また、カテゴリカル変数 Model_Year に必要な 2 つのダミーの指標変数も作成します。

カテゴリカル予測子を含むテーブルのモデルをあてはめます。

carsmall データを読み込みます。

load carsmall

連続予測子変数 Weight、ノミナル予測子変数 Year および応答変数 MPG を含むテーブルを構築します。

tbl = table(MPG,Weight);
tbl.Year = nominal(Model_Year);

YearWeight および Weight^2 の関数として MPG の近似モデルを作成します。WeightWeight^2 より次数が低い項なので明示的に式に含める必要はなく、自動的に含まれます。

mdl = fitlm(tbl,'MPG ~ Year + Weight^2')
mdl = 
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

fitlm は、ノミナル変量 Year のダミー (インジケーター) 変数を 2 つ作成します。ダミー変数 Year_76 は、モデル年度が 1976 の場合に値 1 を取り、そうでない場合に値 0 を取ります。ダミー変数 Year_82 は、モデル年度が 1982 の場合に値 1 を取り、そうでない場合に値 0 を取ります。1970 年が基準の年となります。対応するモデルは以下のとおりです。

線形回帰モデルを標本データにあてはめます。応答変数と予測子変数を指定し、対になっている交互作用項のみをモデルに含めます。

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

load hospital

交互作用項をもつ線形モデルをデータに近似させます。体重を応答変数として、性別、年齢および喫煙状況を予測子変数として指定します。また、性別と喫煙状況はカテゴリカル変数であることを指定します。

mdl = fitlm(hospital,'interactions','ResponseVar','Weight',...
    'PredictorVars',{'Sex','Age','Smoker'},...
    'CategoricalVar',{'Sex','Smoker'})
mdl = 
Linear regression model:
    Weight ~ 1 + Sex*Age + Sex*Smoker + Age*Smoker

Estimated Coefficients:
                         Estimate      SE        tStat        pValue  
                         ________    _______    ________    __________

    (Intercept)             118.7     7.0718      16.785     6.821e-30
    Sex_Male               68.336     9.7153      7.0339    3.3386e-10
    Age                   0.31068    0.18531      1.6765      0.096991
    Smoker_1               3.0425     10.446     0.29127       0.77149
    Sex_Male:Age         -0.49094    0.24764     -1.9825      0.050377
    Sex_Male:Smoker_1      0.9509     3.8031     0.25003       0.80312
    Age:Smoker_1         -0.07288    0.26275    -0.27737       0.78211


Number of observations: 100, Error degrees of freedom: 93
Root Mean Squared Error: 8.75
R-squared: 0.898,  Adjusted R-Squared 0.892
F-statistic vs. constant model: 137, p-value = 6.91e-44

5% の有意水準では、年齢、喫煙状況、またはこれらの因子と患者の性別の交互作用によって患者の体重に有意な差が生じることはないようです。

ロバスト近似法を使用して線形回帰モデルをあてはめます。

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

load hald

hald は、セメントの硬化熱に対してセメントの組成が与える影響を測定したデータです。行列 ingredients には、セメントに含まれている 4 種類の化学物質の組成率が格納されています。配列 heat には、各セメント標本について 180 日後の硬化熱が格納されています。

データをロバスト線形モデルで近似します。

mdl = fitlm(ingredients,heat,'linear','RobustOpts','on')
mdl = 
Linear regression model (robust fit):
    y ~ 1 + x1 + x2 + x3 + x4

Estimated Coefficients:
                   Estimate      SE        tStat       pValue 
                   ________    _______    ________    ________

    (Intercept)       60.09     75.818     0.79256      0.4509
    x1               1.5753    0.80585      1.9548    0.086346
    x2               0.5322    0.78315     0.67957     0.51596
    x3              0.13346     0.8166     0.16343     0.87424
    x4             -0.12052     0.7672    -0.15709     0.87906


Number of observations: 13, Error degrees of freedom: 8
Root Mean Squared Error: 2.65
R-squared: 0.979,  Adjusted R-Squared 0.969
F-statistic vs. constant model: 94.6, p-value = 9.03e-07

入力引数

すべて折りたたむ

入力データ。テーブルまたはデータセット配列として指定します。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 の二乗の項を含んでいます。
  • モデル内に含める項を指定する t 行 (p + 1) 列の行列。つまり項行列であり、t は項の数、p は予測子変数の数、+ 1 は応答変数を示します。

  • 'Y ~ terms'

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

例: 'quadratic'

例: 'y ~ X1 + X2^2 + X1:X2'

名前と値のペアの引数

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

例: 'Intercept',false,'PredictorVars',[1,3],'ResponseVar',5,'RobustOpts','logistic' は定数項のないロバスト回帰モデルを指定します。ここで、アルゴリズムは既定の調整定数が指定されたロジスティック重み関数を使用し、1 番目と 3 番目の変数は予測子変数であり、5 番目の変数は応答変数です。

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

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

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

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

例: 'CategoricalVars',[2,3]

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

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

近似から除外する観測値。'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

あてはめで使用する予測子変数。'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

あてはめで使用する応答変数。'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

使用するロバスト近似タイプのインジケーター。'RobustOpts' と以下のいずれかで構成されるコンマ区切りのペアとして指定します。

  • 'off' — ロバスト近似を使用しない。fitlm は通常の最小二乗を使用します。

  • 'on' — ロバスト近似を使用する。ロバスト近似を使用する場合は、重み関数 'bisquare' が既定です。

  • 文字ベクトルまたは string スカラー — 以下の表に記載されているロバスト近似重み関数の名前。fitlm は、表内の対応する既定の調整定数を使用します。

  • 以下の表に記載されているロバスト近似重み関数の名前が含まれている文字ベクトルまたは string スカラー RobustWgtFun とオプションのスカラー フィールド Tune をもつ構造体 — fitlm は、この構造体の重み関数 RobustWgtFun と調整定数 Tune を使用します。このテーブルからロバスト近似重み関数の名前を選択できます。Tune フィールドを指定しない場合、近似関数は対応する既定の調整定数を使用します。

    重み関数既定の設定の調整定数
    'andrews'w = (abs(r)<pi) .* sin(r) ./ r1.339
    'bisquare' (既定の設定)w = (abs(r)<1) .* (1 - r.^2).^24.685
    'cauchy'w = 1 ./ (1 + r.^2)2.385
    'fair'w = 1 ./ (1 + abs(r))1.400
    'huber'w = 1 ./ max(1, abs(r))1.345
    'logistic'w = tanh(r) ./ r1.205
    'ols'通常最小二乗 (重み関数なし)なし
    'talwar'w = 1 * (abs(r)<1)2.795
    'welsch'w = exp(-(r.^2))2.985

    重み関数の値 r は次のようになります。

    r = resid/(tune*s*sqrt(1-h))

    resid は、以前の反復の残差のベクトル、h は最小二乗近似のてこ比値のベクトル、s は以下によって与えられる誤差項目の標準偏差の推定です。

    s = MAD/0.6745

    MAD は、それらの中央値からの残差の中央絶対偏差です。定数 0.6745 は、推定を正規分布に対して不偏にします。X に p 個の列がある場合、中央値を計算する際に小さいほうから p 個の絶対偏差は除外されます。

    応答が外れ値のない正規分布をもつ場合、既定の設定の調整定数は、通常最小二乗推定のように統計的に効率の良い約 95% の係数推定を出力します。調整定数を小さくすると、大きな残差に割り当てられる重みの削減量が増え、調整定数を大きくすると、大きな残差に割り当てられる重みの削減量が減ります。

  • 関数ハンドル RobustWgtFun とオプションのスカラー Tune フィールドをもつ構造体 — カスタムの重み関数を指定できます。fitlm は、重み関数 RobustWgtFun と構造体から取得した調整定数 Tune を使用します。残差のベクトルを受け付ける関数ハンドルとして RobustWgtFun を指定すると、同じサイズの重みのベクトルが返されます。近似関数は残差をスケーリングし、調整定数 (既定の設定は、1) と誤差の標準偏差の推定値で割った後、重み関数を呼び出します。

例: 'RobustOpts','andrews'

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

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

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

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

データ型: string | cell

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

データ型: single | double

出力引数

すべて折りたたむ

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

名前と値のペア 'RobustOpts' の値が [] または 'ols' でない場合、このモデルは最小二乗近似ではありませんが、ロバスト近似関数を使用します。

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

詳細

すべて折りたたむ

項の行列

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

T(i,j) の値は、項 i の変数 j の指数です。ABC の 3 つの予測子変数があると仮定します。

[0 0 0 0] % Constant term or intercept
[0 1 0 0] % B; equivalently, A^0 * B^1 * C^0
[1 0 1 0] % A*C
[2 0 0 0] % A^2
[0 1 2 0] % B*(C^2)
各項の最後の 0 は、応答変数を表します。一般に、以下のようになります。

  • テーブルまたはデータセット配列に変数がある場合、応答変数の位置に応じて 0 で応答変数を表さなければなりません。以下の例では、テーブルを使用してこれを示します。

    標本データを読み込み、テーブルを定義します。

    load hospital
    dsa = table(hospital.Sex,hospital.BloodPressure(:,1), ...
    hospital.Age,hospital.Smoker,'VariableNames', ...
    {'Sex','BloodPressure','Age','Smoker'});

    線形モデル 'BloodPressure ~ 1 + Sex + Age + Smoker' を項行列で表します。応答変数はテーブルの 2 列目にあるので、項行列の 2 列目は応答変数を示す 0 の列でなければなりません。

    T = [0 0 0 0;1 0 0 0;0 0 1 0;0 0 0 1]
    
    T =
    
         0     0     0     0
         1     0     0     0
         0     0     1     0
         0     0     0     1

    テーブルを再定義します。

    dsa = table(hospital.BloodPressure(:,1),hospital.Sex, ...
    hospital.Age,hospital.Smoker,'VariableNames', ...
    {'BloodPressure','Sex','Age','Smoker'});
    

    これで、応答変数はテーブルの最初の項になりました。項行列を使用して、同じ線形モデル 'BloodPressure ~ 1 + Sex + Age + Smoker' を指定します。

    T = [0 0 0 0;0 1 0 0;0 0 1 0;0 0 0 1]
    T =
    
         0     0     0     0
         0     1     0     0
         0     0     1     0
         0     0     0     1
  • 行列および列ベクトルに予測子と応答変数がある場合、各項の最後に応答変数を示す 0 がなければなりません。次の例はこれを説明します。

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

    load carsmall
    X = [Acceleration,Weight];
    

    項行列を使用してモデル 'MPG ~ Acceleration + Weight + Acceleration:Weight + Weight^2' を指定し、このモデルをデータにあてはめます。このモデルには、変数 Acceleration および Weight の主効果および 2 次交互作用項、変数 Weight の 2 次の項が含まれます。

    T = [0 0 0;1 0 0;0 1 0;1 1 0;0 2 0]
    
    T =
    
         0     0     0
         1     0     0
         0     1     0
         1     1     0
         0     2     0
    

    線形モデルを近似します。

    mdl = fitlm(X,MPG,T)
    mdl = 
    
    Linear regression model:
        y ~ 1 + x1*x2 + x2^2
    
    Estimated Coefficients:
                       Estimate       SE            tStat      pValue    
        (Intercept)         48.906        12.589     3.8847    0.00019665
        x1                 0.54418       0.57125    0.95261       0.34337
        x2               -0.012781     0.0060312    -2.1192      0.036857
        x1:x2          -0.00010892    0.00017925    -0.6076         0.545
        x2^2            9.7518e-07    7.5389e-07     1.2935       0.19917
    
    Number of observations: 94, Error degrees of freedom: 89
    Root Mean Squared Error: 4.1
    R-squared: 0.751,  Adjusted R-Squared 0.739
    F-statistic vs. constant model: 67, p-value = 4.99e-26

    変数 Weight に対応する切片および x2 の項のみが 5% の有意水準を示しています。

    ここで、定数モデルを開始モデルとし、交互作用項をもつ線形モデルを上位モデルとして、ステップワイズ回帰を実行します。

    T = [0 0 0;1 0 0;0 1 0;1 1 0];
    mdl = stepwiselm(X,MPG,[0 0 0],'upper',T)
    1. Adding x2, FStat = 259.3087, pValue = 1.643351e-28
    
    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

    ステップワイズ回帰の結果は、前の手順の fitlm の結果と整合性があります。

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

ここで、

  • Y は応答名です。

  • terms 次が含まれます

    • 変数名

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

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

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

    • * は、交互作用とすべての低い順序の項を定義します

    • ^ は、* で繰り返されるとおりに予測子をべき乗にし、^ は低い次数の項も含みます

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

メモ

式には既定で定数 (切片) 項が含まれます。モデルから定数項を除外するには、式に -1 を含めます。

例えば、

'Y ~ A + B + C' は切片がある 3 変数線形モデルを意味します。
'Y ~ A + B + C - 1' は切片がない 3 変数線形モデルです。
'Y ~ A + B + C + B^2' は切片と B^2 項がある 3 変数モデルです。
'Y ~ A + B^2 + C' は、B^2B 項が含まれるので、前の例と同じです。
'Y ~ A + B + C + A:B' には A*B 項が含まれます。
'Y ~ A*B + C' は、A*B = A + B + A:B なので、前の例と同じです。
'Y ~ A*B*C - A:B:C' には、3 次交互作用を除く ABC 間のすべての交互作用があります。
'Y ~ A*(B + C + D)' には、すべての線形項に加えて、他の各変数と A との積があります。

ウィルキンソンの表記法

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

ウィルキンソンの表記法標準表記の因子
1定数 (切片) 項
A^kk は正の整数AA2、...、Ak
A + BAB
A*BABA*B
A:BA*B のみ
-BB は含めない
A*B + CABCA*B
A + B + C + A:BABCA*B
A*B*C - A:B:CABCA*BA*CB*C
A*(B + C)ABCA*BA*C

Statistics and Machine Learning Toolbox™ 表記は、-1 を使用して項を明示的に削除しない限り、常に定数項を含みます。

ヒント

  • LinearModel オブジェクト mdl のモデル プロパティにアクセスするには、ドット表記を使用できます。たとえば mdl.Residuals は、モデルの生の残差、ピアソン残差、スチューデント化残差および標準化残差の値が含まれているテーブルを返します。

  • fitlm を使用して LinearModel モデル オブジェクトに学習をさせた後で、関数 predict と学習済みのモデル オブジェクトを使用して、新しいデータについて応答を予測する C コードを生成します。詳細については、コード生成を参照してください。

拡張機能

R2013b で導入