Main Content

addTerms

線形回帰モデルへの項の追加

説明

NewMdl = addTerms(mdl,terms) は、mdl の入力データおよび設定を使用し、terms の項を追加して、当てはめた線形回帰モデルを返します。

すべて折りたたむ

交互作用がない carsmall データ セットの線形回帰モデルを作成してから、交互作用項を追加します。

carsmall データ セットを読み込み、重量およびモデル年の関数として MPG のモデルを作成します。

load carsmall
tbl = table(MPG,Weight);
tbl.Year = categorical(Model_Year);
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

このモデルには、InterceptWeightYear_76Year_82Weight^2 という 5 つの項が含まれています。Year_76Year_82 は、3 つの異なる値をもつカテゴリカル変数 Year の指標変数です。

変数 Year と変数 Weight の間の交互作用項を mdl に追加します。

terms = 'Year*Weight';
NewMdl = addTerms(mdl,terms)
NewMdl = 
Linear regression model:
    MPG ~ 1 + Weight*Year + Weight^2

Estimated Coefficients:
                       Estimate          SE         tStat        pValue  
                      ___________    __________    ________    __________

    (Intercept)            48.045         6.779      7.0874    3.3967e-10
    Weight              -0.012624     0.0041455     -3.0454     0.0030751
    Year_76                2.7768        3.0538     0.90931        0.3657
    Year_82                16.416        4.9802      3.2962     0.0014196
    Weight:Year_76    -0.00020693    0.00092403    -0.22394       0.82333
    Weight:Year_82     -0.0032574     0.0018919     -1.7217      0.088673
    Weight^2           1.0121e-06      6.12e-07      1.6538       0.10177


Number of observations: 94, Error degrees of freedom: 87
Root Mean Squared Error: 2.76
R-squared: 0.89,  Adjusted R-Squared: 0.882
F-statistic vs. constant model: 117, p-value = 1.88e-39

NewMdl には、Weight*Year_76 および Weight*Year_82 という 2 つの項が追加されています。

入力引数

すべて折りたたむ

線形回帰モデル。fitlm または stepwiselm を使用して作成した LinearModel オブジェクトとして指定します。

回帰モデル mdl に追加する項。次のいずれかを指定します。

  • 1 つ以上の項を表す、ウィルキンソンの表記法による文字ベクトルまたは string スカラー式。式の変数名は、有効な MATLAB® 識別子でなければなりません。

  • t 行 p 列の項行列 T。t は項の個数、p は mdl 内の予測子変数の個数です。T(i,j) の値は、項 i の変数 j の指数です。

    たとえば、AB および C という 3 つの変数がこの順序で mdl に含まれているとします。T の各行は 1 つの項を表します。

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

    • [0 1 0]B (A^0 * B^1 * C^0 と等価)

    • [1 0 1]A*C

    • [2 0 0]A^2

    • [0 1 2]B*(C^2)

addTerms は、カテゴリカル予測子の指標変数のグループを単一の変数として扱います。したがって、モデルに追加する指標変数を指定することはできません。モデルに追加するカテゴリカル予測子が指定された場合、addTerms は予測子の指標変数のグループを一度に追加します。指標変数を手動で作成してそれぞれを独立した変数として扱う方法を説明した例については、step の使用による線形回帰モデルの修正を参照してください。

出力引数

すべて折りたたむ

項が追加された線形回帰モデル。LinearModel オブジェクトとして返されます。NewMdl は、mdl の入力データと設定を使用し、terms で指定された項を追加して新しく当てはめたモデルです。

入力引数 mdl を上書きするには、新しく当てはめたモデルを mdl に代入します。

mdl = addTerms(mdl,terms);

詳細

すべて折りたたむ

ウィルキンソンの表記法

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

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

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

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

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

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

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

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

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

ウィルキンソンの表記法標準表記の項
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

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

アルゴリズム

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

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

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

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

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

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

代替機能

  • stepwiselm を使用して開始モデルの項を指定し、項の追加や削除が有益ではなくなるまでモデルの改善を続けます。

  • 特定の項をモデルから削除するには、removeTerms を使用します。

  • 項の追加または削除によってモデルを最適に改善するには、step を使用します。

拡張機能

バージョン履歴

R2012a で導入