ドキュメンテーション

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

LinearModel.fit

クラス: LinearModel

線形回帰モデルの作成

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

構文

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

説明

mdl = LinearModel.fit(tbl) はテーブルまたはデータセット配列 tbl の線形モデルを作成します。

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

mdl = LinearModel.fit(___,modelspec) は、前の構文のいずれかを使用して、modelspec で指定されたタイプの線形モデルを作成します。

mdl = LinearModel.fit(___,Name,Value) または mdl = LinearModel.fit(___,modelspec,Name,Value) は、1 つまたは複数の Name,Value の引数のペアによって指定された追加オプションを使用して線形モデルを作成します。たとえば、近似に含める予測子変数を指定したり、観測値に重みを与えることができます。

入力引数

すべて展開する

入力データ。テーブルまたはデータセット配列として指定します。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 のように、複数の名前と値のペアの引数を任意の順序で指定できます。

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

  • データがテーブルまたはデータセット配列 tbl に格納されている場合の既定では、LinearModel.fit はカテゴリカル値、論理値、文字配列、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' でない場合、このモデルは最小二乗近似ではありませんが、ロバスト近似関数を使用します。

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

すべて展開する

Hald データの線形モデルで近似する

データを読み込みます。

load hald
X = ingredients; % Predictor variables
y = heat; % Response

既定の線形モデルをデータにあてはめる

mdl = fitlm(X,y)
mdl = 
Linear regression model:
    y ~ 1 + x1 + x2 + x3 + x4

Estimated Coefficients:
                   Estimate      SE        tStat       pValue 
                   ________    _______    ________    ________

    (Intercept)      62.405     70.071      0.8906     0.39913
    x1               1.5511    0.74477      2.0827    0.070822
    x2              0.51017    0.72379     0.70486      0.5009
    x3              0.10191    0.75471     0.13503     0.89592
    x4             -0.14406    0.70905    -0.20317     0.84407


Number of observations: 13, Error degrees of freedom: 8
Root Mean Squared Error: 2.45
R-squared: 0.982,  Adjusted R-Squared 0.974
F-statistic vs. constant model: 111, p-value = 4.76e-07

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

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

load carsmall

連続予測子変数 Weight、カテゴリカル予測子変数 Year および応答変数 MPG が含まれている table を構築します。

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

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

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

詳細

すべて展開する

ヒント

  • 外れ値の効果を自動的に減らすために、ロバスト近似 (RobustOpts 名前と値のペア) を使用します。

  • step を使用して後でモデルを調整する場合は、ロバスト近似は使用しないでください。

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

アルゴリズム

主な近似アルゴリズムは QR 分解です。ロバスト近似の場合、アルゴリズムは robustfit です。

代替方法

fitlm を使用して線形モデルを構築することもできます。

stepwiselm を使用して、可能なモデルの範囲にモデルを構築できすま。ただし、ロバスト回帰とステップワイズ回帰を一緒に使用することはできません。