LinearModel
線形回帰モデル
説明
LinearModel
は、当てはめ済みの線形回帰モデル オブジェクトです。回帰モデルは、応答と予測子の間の関係を説明します。線形回帰モデルにおける線形性は、予測子の係数の線形性を意味します。
当てはめた線形回帰モデルを調べるには、LinearModel
オブジェクトのプロパティを使用します。オブジェクト プロパティには、係数推定値、要約統計量、当てはめ手法および入力データに関する情報が含まれています。オブジェクト関数を使用して、応答の予測と、線形回帰モデルの修正、評価および可視化を行います。
作成
LinearModel
オブジェクトの作成には、fitlm
または stepwiselm
を使用します。
fitlm
は、固定されたモデル仕様を使用して、線形回帰モデルをデータに当てはめます。モデルに対して項を追加または削除するには、addTerms
、removeTerms
または step
を使用します。あるいは、stepwiselm
でステップワイズ線形回帰を使用してモデルを当てはめます。
プロパティ
係数推定値
CoefficientCovariance
— 係数推定値の共分散行列
数値行列
この プロパティ は読み取り専用です。
係数推定値の共分散行列。p 行 p 列の数値の行列を指定します。p は、当てはめたモデルの係数の個数で、NumCoefficients
で与えられます。
詳細については、係数の標準誤差と信頼区間を参照してください。
データ型: single
| double
CoefficientNames
— 係数の名前
文字ベクトルの cell 配列
この プロパティ は読み取り専用です。
係数の名前。対応する項の名前が含まれている文字ベクトルの cell 配列を指定します。
データ型: cell
Coefficients
— 係数の値
table
この プロパティ は読み取り専用です。
係数の値。table を指定します。Coefficients
には、各係数に対応する 1 つずつの行と次の列が格納されます。
Estimate
— 推定される係数値SE
— 推定の標準誤差tStat
— 係数がゼロであるという帰無仮説をもつ両側検定の t 統計量pValue
— t 統計量の p 値
係数に対する他の検定を実行するには、anova
(線形回帰モデルの場合のみ) または coefTest
を使用します。係数推定値の信頼区間を求めるには、coefCI
を使用します。
ベクトルとしてこれらの列のいずれかを取得するには、ドット表記を使ってプロパティにインデックスを付けます。たとえば、モデル mdl
内の推定された係数ベクトルを取得するには、次のようにします。
beta = mdl.Coefficients.Estimate
データ型: table
NumCoefficients
— モデルの係数の数
正の整数
この プロパティ は読み取り専用です。
モデルの係数の個数。正の整数を指定します。NumCoefficients
には、モデルの項がランク落ちとなる場合にゼロに設定される係数が含まれます。
データ型: double
NumEstimatedCoefficients
— 推定された係数の数
正の整数
この プロパティ は読み取り専用です。
モデル内の推定された係数の個数。正の整数を指定します。NumEstimatedCoefficients
には、モデルの項がランク落ちとなる場合にゼロに設定される係数は含まれません。NumEstimatedCoefficients
は回帰の自由度です。
データ型: double
要約統計量
DFE
— 誤差に対する自由度
正の整数
この プロパティ は読み取り専用です。
誤差 (残差) の自由度。推定された係数の個数を観測値の個数から減算した値に等しくなります。正の整数を指定します。
データ型: double
Diagnostics
— 観測値の診断情報
table
この プロパティ は読み取り専用です。
観測値の診断情報。各観測値に対応する 1 つずつの行と次の表で説明されている列がある table を指定します。
列 | 意味 | 説明 |
---|---|---|
Leverage | HatMatrix の対角要素 | 各観測値の Leverage は、観測された予測子の値によってどの程度まで当てはめが決定されるかを示します。1 に近い値は、当てはめの大部分がその観測値によって決定され、他の観測値からの寄与は少ないことを示します。0 に近い値は、当てはめの大部分が他の観測値によって決定されることを示します。係数 P と観測 N のあるモデルの場合、Leverage の平均値は P/N です。2*P/N より大きい Leverage の値は、高いてこ比を示します。 |
CooksDistance | クックの距離 | CooksDistance は、当てはめた値におけるスケーリングされた変化の測定です。平均のクックの距離の 3 倍より CooksDistance が大きい観測値は、外れ値である可能性があります。 |
Dffits | 当てはめた値のスケーリングされた Delete-1 差分 | Dffits は、各観測値を当てはめから除外することによって生じる近似値の変化をスケーリングした値です。絶対値が 2*sqrt(P/N) より大きい値は、影響力が大きいと考えることができます。 |
S2_i | 1 標本を取り除いたときの分散 | S2_i は各観測を順に削除することによって取得した一連の残差分散推定値です。これらの推定値は、MSE プロパティに格納される平均二乗誤差 (MSE) の値と比較できます。 |
CovRatio | 共分散の行列式の Delete-1 比 | CovRatio は、各観測値を順番に削除した、完全なモデルの共分散行列の行列式に対する係数の共分散行列の行列式の比率です。1 + 3*P/N より大きい値と 1 – 3*P/N より小さい値は、影響力が大きい点を示します。 |
Dfbetas | 係数推定値のスケーリングされた Delete-1 差分 | Dfbetas は、各観測値を順番に除外することによって生じる係数推定値の変化をスケーリングした値が格納されている、N 行 P 列の行列です。絶対値が 3/sqrt(N) より大きい値は、対応する係数に対して観測値が有意な影響を与えることを示します。 |
HatMatrix | 観測された応答から fitted を計算するための射影行列 | HatMatrix は、Fitted = HatMatrix*Y となる N 行 N 列の行列です。ここで、Y は応答ベクトル、Fitted は応答の当てはめた値のベクトルです。 |
Diagnostics
には、外れ値と影響力が大きい観測値を特定するために役立つ情報が格納されます。Delete-1 診断は、各観測値を順番に当てはめから除外することによって生じる変化を取得します。詳細については、ハット行列とてこ比、クックの距離および1 標本を取り除いたときの統計を参照してください。
観測値の診断情報をプロットするには、plotDiagnostics
を使用します。
欠損値 (ObservationInfo.Missing
内) または除外された値 (ObservationInfo.Excluded
内) が原因で当てはめに使用されなかった行では、CooksDistance
、Dffits
、S2_i
および CovRatio
列に NaN
値が、Leverage
、Dfbetas
、および HatMatrix
列にゼロが格納されます。
これらの列のいずれかを配列として取得するには、ドット表記を使用してプロパティのインデックスを指定します。たとえば、モデル mdl
内の Delete-1 分散ベクトルを取得するには、次のようにします。
S2i = mdl.Diagnostics.S2_i;
データ型: table
Fitted
— 入力データを基に当てはめを行った応答値
数値ベクトル
この プロパティ は読み取り専用です。
入力データに基づいて当てはめた (予測した) 応答値。n 行 1 列の数値ベクトルを指定します。n は入力データ内の観測値の個数です。predict
を使用して、他の予測子の値の予測を計算するか、Fitted
で信頼限界を計算します。
データ型: single
| double
LogLikelihood
— 対数尤度
数値
この プロパティ は読み取り専用です。
応答値の対数尤度。数値を指定します。各応答値が正規分布に従うという仮定に基づきます。正規分布の平均は当てはめた (予測した) 応答値、分散は MSE
です。
データ型: single
| double
ModelCriterion
— モデルの比較基準
構造体
この プロパティ は読み取り専用です。
モデルの比較基準。次のフィールドがある構造体を指定します。
AIC
— 赤池情報量基準。AIC = –2*logL + 2*m
であり、ここでlogL
は対数尤度、m
は推定パラメーターの数です。AICc
— 標本サイズについて修正された赤池情報量基準。AICc = AIC + (2*m*(m + 1))/(n – m – 1)
であり、ここでn
は観測値の数です。BIC
— ベイズ情報量基準。BIC = –2*logL + m*log(n)
です。CAIC
— 一貫した赤池情報量基準。CAIC = –2*logL + m*(log(n) + 1)
です。
情報量基準は、同じデータに当てはめた複数のモデルを比較するために使用できるモデル選択ツールです。これらの基準は、尤度に基づくモデル近似の尺度であり、複雑度 (特にパラメーター数) に対するペナルティが含まれています。情報量基準が異なるとペナルティの形式が異なります。
複数のモデルを比較した場合に、情報量基準の値が最も小さいモデルが最良近似モデルです。最良近似モデルは、モデルの比較に使用する基準によって変化する可能性があります。
これらの基準値のいずれかをスカラーとして取得するには、ドット表記を使用してプロパティのインデックスを指定します。たとえば、モデル mdl
の AIC 値 aic
を取得するには、次のようにします。
aic = mdl.ModelCriterion.AIC
データ型: struct
ModelFitVsNullModel
— 回帰モデルの F 統計量
構造体
この プロパティ は読み取り専用です。
回帰モデルの F 統計量。構造体を指定します。ModelFitVsNullModel
構造体には次のフィールドが含まれます。
Fstats
— 当てはめたモデルとヌル モデルの F 統計量Pvalue
— F 統計量の p 値NullModel
— ヌル モデル タイプ
データ型: struct
MSE
— 平均二乗誤差
数値
この プロパティ は読み取り専用です。
平均二乗誤差 (残差)。数値を指定します。
MSE = SSE / DFE,
MSE は平均二乗誤差、SSE は残差平方和、DFE は自由度です。
データ型: single
| double
Residuals
— 当てはめたモデルの残差
table
この プロパティ は読み取り専用です。
当てはめたモデルの残差。各観測値に対する 1 つずつの行と次の表に記載されている列が含まれている table を指定します。
列 | 説明 |
---|---|
Raw | 観測した値から当てはめた値を減算した値 |
Pearson | 生の残差を平方根平均二乗誤差 (RMSE) で除算した値 |
Standardized | 推定標準偏差で除算した生の残差 |
Studentized | 生の残差を残差標準偏差の独立した推定値で除算した値。観測値 i の残差が、観測値 i を除くすべての観測値に基づく誤差標準偏差の推定値によって除算されます。 |
残差のプロットを作成するには、plotResiduals
を使用します。詳細については、残差を参照してください。
欠損値 (ObservationInfo.Missing
内) または除外された値 (ObservationInfo.Excluded
内) が原因で当てはめに使用されなかった行には、NaN
値が格納されます。
ベクトルとしてこれらの列のいずれかを取得するには、ドット表記を使ってプロパティにインデックスを付けます。たとえば、モデル mdl
内の生の残差のベクトル r
を取得するには、次のようにします。
r = mdl.Residuals.Raw
データ型: table
RMSE
— 平方根平均二乗誤差
数値
この プロパティ は読み取り専用です。
平方根平均二乗誤差 (残差)。数値を指定します。
RMSE = sqrt(MSE),
RMSE は平方根平均二乗誤差、MSE は平均二乗誤差です。
データ型: single
| double
Rsquared
— モデルの決定係数の値
構造体
この プロパティ は読み取り専用です。
モデルの決定係数の値。2 つのフィールドがある構造体を指定します。
Ordinary
— 通常の (自由度未調整) 決定係数Adjusted
— 係数の数に対する自由度調整済み決定係数
決定係数の値は、モデルによって説明される二乗総和の比率です。通常の決定係数の値は、SSR
プロパティおよび SST
プロパティに関連します。
Rsquared = SSR/SST
,
ここで、SST
は二乗総和、SSR
は回帰二乗和です。
詳細については、決定係数 (R-squared)を参照してください。
これらの値のいずれかをスカラーとして取得するには、ドット表記を使用してプロパティのインデックスを指定します。たとえば、モデル mdl
の自由度調整済み決定係数の値を取得するには、次のようにします。
r2 = mdl.Rsquared.Adjusted
データ型: struct
SSE
— 誤差の二乗和
数値
この プロパティ は読み取り専用です。
誤差 (残差) の二乗和。数値を指定します。観測値の重みを使用して学習させたモデルの場合、SSE
の計算の二乗和は重み付き二乗和です。
切片をもつ線形モデルでは、ピタゴラスの定理により、次のようになります。
SST = SSE + SSR
,
SST
は二乗総和、SSE
は残差平方和、SSR
は回帰二乗和です。
ロバスト線形モデルにおける SST
の計算の詳細については、SST
を参照してください。
データ型: single
| double
SSR
— 回帰二乗和
数値
この プロパティ は読み取り専用です。
回帰二乗和。数値を指定します。SSR
は、当てはめた値と応答の平均の間における偏差の二乗和に等しい値です。観測値の重みを使用して学習させたモデルの場合、SSR
の計算の二乗和は重み付き二乗和です。
切片をもつ線形モデルでは、ピタゴラスの定理により、次のようになります。
SST = SSE + SSR
,
SST
は二乗総和、SSE
は残差平方和、SSR
は回帰二乗和です。
ロバスト線形モデルにおける SST
の計算の詳細については、SST
を参照してください。
データ型: single
| double
SST
— 二乗の総和
数値
この プロパティ は読み取り専用です。
二乗の総和。数値を指定します。SST
は、mean(y)
に対する応答ベクトル y
の偏差二乗和に等しい値です。観測値の重みを使用して学習させたモデルの場合、SST
の計算の二乗和は重み付き二乗和です。
切片をもつ線形モデルでは、ピタゴラスの定理により、次のようになります。
SST = SSE + SSR
,
SST
は二乗総和、SSE
は残差平方和、SSR
は回帰二乗和です。
ロバスト線形モデルの場合、SST
は、mean(y)
に対する応答ベクトル y
の偏差二乗和として計算されません。SST = SSE + SSR
のように計算されます。
データ型: single
| double
近似法
Robust
— ロバスト近似の情報
構造体
この プロパティ は読み取り専用です。
ロバスト近似の情報。次の表で説明されているフィールドをもつ構造体を指定します。
フィールド | 説明 |
---|---|
WgtFun | 'bisquare' などのロバストな重み付け関数 ('RobustOpts' を参照) |
Tune | 調整定数。WgtFun が 'ols' である場合、または、WgtFun が、既定の調整定数が 1 であるカスタム重み関数の関数ハンドルである場合、このフィールドは空 ([] ) です。 |
Weights | ロバスト近似の最後の反復で使用された重みのベクトル。CompactLinearModel オブジェクトの場合、このフィールドは空です。 |
ロバスト回帰を使用してモデルを当てはめた場合を除き、この構造体は空です。
データ型: struct
Steps
— ステップワイズ近似の情報
構造体
この プロパティ は読み取り専用です。
ステップワイズ近似の情報。次の表で説明されているフィールドをもつ構造体を指定します。
フィールド | 説明 |
---|---|
Start | 開始モデルを表す式 |
Lower | 下限モデルを表す式。Lower 内の項は必ずモデルに残ります。 |
Upper | 上限モデルを表す式。Upper より多い項をモデルに含めることはできません。 |
Criterion | 'sse' などのステップワイズ アルゴリズムに使用された基準 |
PEnter | Criterion が項を追加するためのしきい値 |
PRemove | Criterion が項を削除するためのしきい値 |
History | 近似で実行されたステップを表すテーブル |
table History
には、初期の当てはめを含む各ステップに対応する 1 つずつの行と、次の表で説明されている列が含まれています。
列 | 説明 |
---|---|
Action | そのステップで行われたアクション
|
TermName |
|
Terms | 項の行列内のモデル仕様 |
DF | そのステップの後の回帰自由度 |
delDF | 前のステップに対する回帰自由度の変化 (項を削除するステップの場合は負) |
Deviance | (一般化線形回帰モデルの場合のみ) そのステップにおける逸脱度 (残差二乗和) |
FStat | そのステップに導いた F 統計量 |
PValue | F 統計量の p 値 |
ステップワイズ回帰を使用してモデルを当てはめた場合を除き、この構造体は空です。
データ型: struct
入力データ
Formula
— モデルの情報
LinearFormula
オブジェクト
この プロパティ は読み取り専用です。
モデルの情報。LinearFormula
オブジェクトを指定します。
ドット表記を使用して、当てはめたモデル mdl
の式を表示します。
mdl.Formula
NumObservations
— 観測値の数
正の整数
この プロパティ は読み取り専用です。
近似関数が当てはめで使用した観測値の個数。正の整数を指定します。NumObservations
は、元の table、データセットまたは行列で指定された観測値の個数から、除外する行数 (名前と値のペアの引数 'Exclude'
で設定) または欠損値が含まれている行数を減算した値です。
データ型: double
NumPredictors
— 予測子変数の数
正の整数
この プロパティ は読み取り専用です。
モデルの当てはめに使用した予測子変数の個数。正の整数を指定します。
データ型: double
NumVariables
— 変数の数
正の整数
この プロパティ は読み取り専用です。
入力データに含まれている変数の個数。正の整数を指定します。NumVariables
は、元の table またはデータセットに含まれている変数の個数、または予測子行列と応答ベクトルの列の総数です。
NumVariables
には、予測子または応答としてモデルの当てはめに使用される変数ではないものも含まれます。
データ型: double
ObservationInfo
— 観測値の情報
table
この プロパティ は読み取り専用です。
観測値の情報。n 行 4 列の table として指定します。n は入力データの行数に等しくなります。ObservationInfo
には、次の表で説明されている列が含まれます。
列 | 説明 |
---|---|
Weights | 観測値の重み。数値として指定します。既定値は 1 です。 |
Excluded | 除外する観測値のインジケーター。logical 値として指定します。名前と値のペアの引数 'Exclude' を使用して観測値を当てはめから除外した場合、値は true です。 |
Missing | 欠損観測値のインジケーター。logical 値として指定します。観測値が欠損値である場合、値は true です。 |
Subset | 近似関数が観測値を使用するかどうかのインジケーター。logical 値として指定します。観測値が除外されず、欠損値でもない場合、つまり、近似関数が観測値を使用する場合、値は true です。 |
ベクトルとしてこれらの列のいずれかを取得するには、ドット表記を使ってプロパティにインデックスを付けます。たとえば、モデル mdl
の重みベクトル w
を取得するには、次のようにします。
w = mdl.ObservationInfo.Weights
データ型: table
ObservationNames
— 観測値の名前
文字ベクトルの cell 配列
この プロパティ は読み取り専用です。
観測値の名前。当てはめで使用した観測値の名前が含まれている文字ベクトルの cell 配列を指定します。
近似が観測名を含むテーブルまたはデータセットに基づいている場合、
ObservationNames
はそれらの名前を使用します。それ以外の場合、
ObservationNames
は空の cell 配列になります。
データ型: cell
PredictorNames
— モデルの当てはめに使用した予測子の名前
文字ベクトルの cell 配列
この プロパティ は読み取り専用です。
モデルの当てはめに使用した予測子の名前。文字ベクトルの cell 配列を指定します。
データ型: cell
ResponseName
— 応答変数名
文字ベクトル
この プロパティ は読み取り専用です。
応答変数名。文字ベクトルを指定します。
データ型: char
VariableInfo
— 変数に関する情報
table
この プロパティ は読み取り専用です。
Variables
に格納されている入力変数に関する情報。各変数に対応する 1 つずつの行と次の表で説明されている列がある table を指定します。
列 | 説明 |
---|---|
Class | 変数のクラス。'double' や 'categorical' などの文字ベクトルによる cell 配列を指定します。 |
Range | 変数の範囲。ベクトルの cell 配列を指定します。
|
InModel | 当てはめたモデルにどの変数が含まれているかを示すインジケーター。logical ベクトルを指定します。モデルに変数が含まれている場合、値は true です。 |
IsCategorical | カテゴリカル変数のインジケーター。logical ベクトルを指定します。変数がカテゴリカルである場合、値は true です。 |
VariableInfo
には、予測子または応答としてモデルの当てはめに使用される変数ではないものも含まれます。
データ型: table
VariableNames
— 変数の名前
文字ベクトルの cell 配列
この プロパティ は読み取り専用です。
変数の名前。文字ベクトルの cell 配列を指定します。
当てはめが table またはデータセットに基づいている場合、このプロパティはその table またはデータセット内の変数の名前を与えます。
当てはめが予測行列と応答ベクトルに基づいている場合、近似メソッドの名前と値のペアの引数
'VarNames'
によって指定された値がVariableNames
に格納されます。'VarNames'
の既定値は{'x1','x2',...,'xn','y'}
です。
VariableNames
には、予測子または応答としてモデルの当てはめに使用される変数ではないものも含まれます。
データ型: cell
Variables
— 入力データ
table
この プロパティ は読み取り専用です。
入力データ。table を指定します。Variables
には予測子と応答の両方の値が格納されます。当てはめが table またはデータセット配列に基づいている場合、Variables
にはその table またはデータセット配列のデータがすべて格納されます。それ以外の場合、Variables
は入力データ行列 X
と応答ベクトル y
から作成された table です。
Variables
には、予測子または応答としてモデルの当てはめに使用される変数ではないものも含まれます。
データ型: table
オブジェクト関数
CompactLinearModel
の作成
compact | コンパクトな線形回帰モデル |
線形モデルの項の追加または削除
addTerms | 線形回帰モデルへの項の追加 |
removeTerms | 線形回帰モデルからの項の削除 |
step | 項の追加または削除による線形回帰モデルの改良 |
応答予測
線形モデルの評価
anova | 線形回帰モデルの分散分析 |
coefCI | 線形回帰モデルの係数推定値の信頼区間 |
coefTest | 線形回帰モデルの係数に対する線形仮説検定 |
dwtest | 線形回帰モデル オブジェクトによるダービン・ワトソン検定 |
partialDependence | 部分依存の計算 |
線形モデルと要約統計量の可視化
plot | 線形回帰モデルの散布図または追加変数プロット |
plotAdded | 線形回帰モデルの追加変数プロット |
plotAdjustedResponse | 線形回帰モデルの調整応答プロット |
plotDiagnostics | 線形回帰モデルの観測値の診断情報をプロット |
plotEffects | 線形回帰モデルの予測子の主効果をプロット |
plotInteraction | 線形回帰モデルの 2 つの予測子の交互作用効果のプロット |
plotPartialDependence | 部分依存プロット (PDP) および個別条件付き期待値 (ICE) プロットの作成 |
plotResiduals | 線形回帰モデルの残差プロット |
plotSlice | 当てはめた線形回帰面を通るスライスのプロット |
線形モデルのプロパティの収集
gather | GPU からの Statistics and Machine Learning Toolbox オブジェクトのプロパティの収集 |
例
行列内のデータを使用した線形回帰の当てはめ
行列入力データ セットを使用して線形回帰モデルを当てはめます。
行列入力データ セットである carsmall
データ セットを読み込みます。
load carsmall
X = [Weight,Horsepower,Acceleration];
fitlm
を使用して、線形回帰モデルを当てはめます。
mdl = fitlm(X,MPG)
mdl = Linear regression model: y ~ 1 + x1 + x2 + x3 Estimated Coefficients: Estimate SE tStat pValue __________ _________ _________ __________ (Intercept) 47.977 3.8785 12.37 4.8957e-21 x1 -0.0065416 0.0011274 -5.8023 9.8742e-08 x2 -0.042943 0.024313 -1.7663 0.08078 x3 -0.011583 0.19333 -0.059913 0.95236 Number of observations: 93, Error degrees of freedom: 89 Root Mean Squared Error: 4.09 R-squared: 0.752, Adjusted R-Squared: 0.744 F-statistic vs. constant model: 90, p-value = 7.38e-27
モデルの表示には、モデル式、推定された係数、およびモデルの要約統計量が含まれています。
この表示のモデル式 y ~ 1 + x1 + x2 + x3
は、 に対応します。
モデルの表示には、Coefficients
プロパティに格納されている、推定された係数の情報も示されています。Coefficients
プロパティを表示します。
mdl.Coefficients
ans=4×4 table
Estimate SE tStat pValue
__________ _________ _________ __________
(Intercept) 47.977 3.8785 12.37 4.8957e-21
x1 -0.0065416 0.0011274 -5.8023 9.8742e-08
x2 -0.042943 0.024313 -1.7663 0.08078
x3 -0.011583 0.19333 -0.059913 0.95236
Coefficient
プロパティには、以下の列が含まれています。
Estimate
— モデル内の対応する各項の係数推定値。たとえば、定数項 (intercept
) の推定値は 47.977 です。SE
— 係数の標準誤差。tStat
— 各係数の t 統計量。モデル内の他の予測子が与えられた場合に、対応する係数が 0 ではないという対立仮説に対して係数が 0 であるという帰無仮説を検定するために使用します。tStat = Estimate/SE
であることに注意してください。たとえば、切片の t 統計量は 47.977/3.8785 = 12.37 です。pValue
— 両側仮説検定の "t" 統計量に対する "p" 値。たとえば、x2
の t 統計量の p 値は 0.05 より大きいので、この項はモデル内の他の項に対して 5% の有意水準では有意ではありません。
モデルの要約統計量は以下のとおりです。
Number of observations
—NaN
値が含まれていない行の数。この例では、X
とMPG
の行数が 100 であり、異なる観測値についてデータ ベクトルMPG
には 6 つのNaN
値、データ ベクトルHorsepower
には 1 つのNaN
値があるので、Number of observations
は 93 です。Error degrees of freedom
— n – p。ここで、n は観測値の個数、p はモデル内の係数の個数 (切片を含む) です。たとえば、モデルには 4 つの予測子があるため、Error degrees of freedom
は 93 – 4 = 89 となります。Root mean squared error
— 平均二乗誤差の平方根。誤差分布の標準偏差の推定に使用します。R-squared
およびAdjusted R-squared
— それぞれ決定係数および調整後の決定係数。たとえば、R-squared
値からは、応答変数MPG
のばらつきの約 75% をこのモデルで説明できることがわかります。F-statistic vs. constant model
— 回帰モデルに対する F 検定の検定統計量。この検定では、定数項のみから構成される縮退したモデルより回帰モデルの方が有意に優れているかどうかを検定します。p-value
— モデルに対する F 検定の p 値。たとえば、p 値が 7.3816e-27 なので、このモデルは有意です。
これらの統計量はモデルのプロパティ (NumObservations
、DFE
、RMSE
および Rsquared
) に含まれており、関数 anova
を使用して取得できます。
anova(mdl,'summary')
ans=3×5 table
SumSq DF MeanSq F pValue
______ __ ______ ______ __________
Total 6004.8 92 65.269
Model 4516 3 1505.3 89.987 7.3816e-27
Residual 1488.8 89 16.728
plot
を使用して、定数 (切片) 項を除くモデル全体に対する追加変数プロット (偏回帰のてこ比のプロット) を作成します。
plot(mdl)
カテゴリカル予測子がある線形回帰
カテゴリカル予測子が含まれている線形回帰モデルを当てはめます。モデルの基準水準を制御するため、カテゴリカル予測子のカテゴリの順序を並べ替えます。次に、anova
を使用してカテゴリカル変数の有意性を検定します。
カテゴリカル予測子をもつモデル
carsmall
データ セットを読み込み、Model_Year
の関数として MPG
の線形回帰モデルを作成します。数値ベクトル Model_Year
をカテゴリカル変数として扱うため、名前と値のペアの引数 'CategoricalVars'
を使用して予測子を指定します。
load carsmall mdl = fitlm(Model_Year,MPG,'CategoricalVars',1,'VarNames',{'Model_Year','MPG'})
mdl = Linear regression model: MPG ~ 1 + Model_Year Estimated Coefficients: Estimate SE tStat pValue ________ ______ ______ __________ (Intercept) 17.69 1.0328 17.127 3.2371e-30 Model_Year_76 3.8839 1.4059 2.7625 0.0069402 Model_Year_82 14.02 1.4369 9.7571 8.2164e-16 Number of observations: 94, Error degrees of freedom: 91 Root Mean Squared Error: 5.56 R-squared: 0.531, Adjusted R-Squared: 0.521 F-statistic vs. constant model: 51.6, p-value = 1.07e-15
この表示のモデル式 MPG ~ 1 + Model_Year
は、次の式に対応します。
,
と は指標変数であり、それぞれ Model_Year
の値が 76 および 82 である場合に値が 1 になります。変数 Model_Year
には 3 種類の値が格納されます。これは、関数 unique
を使用してチェックできます。
unique(Model_Year)
ans = 3×1
70
76
82
fitlm
は、基準水準として Model_Year
の最小値 ('70'
) を選択し、2 つの指標変数 および を作成します。3 つの指標変数 (各水準について 1 つ) と切片項をモデルに含めると計画行列がランク落ちとなるので、このモデルには 2 つの指標変数のみが含まれています。
すべての指標変数をもつモデル
mdl
のモデル式は、3 つの指標変数があり切片項はない次のようなモデルとして解釈できます。
.
または、手動で指標変数を作成しモデル式を指定することにより、3 つの指標変数があり切片項はないモデルを作成できます。
temp_Year = dummyvar(categorical(Model_Year));
Model_Year_70 = temp_Year(:,1);
Model_Year_76 = temp_Year(:,2);
Model_Year_82 = temp_Year(:,3);
tbl = table(Model_Year_70,Model_Year_76,Model_Year_82,MPG);
mdl = fitlm(tbl,'MPG ~ Model_Year_70 + Model_Year_76 + Model_Year_82 - 1')
mdl = Linear regression model: MPG ~ Model_Year_70 + Model_Year_76 + Model_Year_82 Estimated Coefficients: Estimate SE tStat pValue ________ _______ ______ __________ Model_Year_70 17.69 1.0328 17.127 3.2371e-30 Model_Year_76 21.574 0.95387 22.617 4.0156e-39 Model_Year_82 31.71 0.99896 31.743 5.2234e-51 Number of observations: 94, Error degrees of freedom: 91 Root Mean Squared Error: 5.56
モデルの基準水準の選択
カテゴリカル変数のカテゴリの順序を変更することにより、基準水準を選択できます。まず、カテゴリカル変数 Year
を作成します。
Year = categorical(Model_Year);
関数categories
を使用して、カテゴリの順序をチェックします。
categories(Year)
ans = 3x1 cell
{'70'}
{'76'}
{'82'}
Year
を予測子変数として使用する場合、fitlm
は 1 番目のカテゴリ '70'
を基準水準として選択します。関数reordercats
を使用して Year
を並べ替えます。
Year_reordered = reordercats(Year,{'76','70','82'}); categories(Year_reordered)
ans = 3x1 cell
{'76'}
{'70'}
{'82'}
Year_reordered
の 1 番目のカテゴリは '76'
です。Year_reordered
の関数として MPG
の線形回帰モデルを作成します。
mdl2 = fitlm(Year_reordered,MPG,'VarNames',{'Model_Year','MPG'})
mdl2 = Linear regression model: MPG ~ 1 + Model_Year Estimated Coefficients: Estimate SE tStat pValue ________ _______ _______ __________ (Intercept) 21.574 0.95387 22.617 4.0156e-39 Model_Year_70 -3.8839 1.4059 -2.7625 0.0069402 Model_Year_82 10.136 1.3812 7.3385 8.7634e-11 Number of observations: 94, Error degrees of freedom: 91 Root Mean Squared Error: 5.56 R-squared: 0.531, Adjusted R-Squared: 0.521 F-statistic vs. constant model: 51.6, p-value = 1.07e-15
mdl2
は、'76'
を基準水準として使用し、2 つの指標変数 および を含めます。
カテゴリカル予測子の評価
mdl2
のモデル表示には、対応する係数がゼロに等しいかどうかをテストするための p 値が各項について含まれています。各 p 値は各指標変数を検定します。カテゴリカル変数 Model_Year
を指標変数のグループとして調べるには、anova
を使用します。定数項を除くモデル内の各変数の ANOVA 統計量が含まれている成分 ANOVA 表を返すため、'components'
(既定の設定) オプションを使用します。
anova(mdl2,'components')
ans=2×5 table
SumSq DF MeanSq F pValue
______ __ ______ _____ __________
Model_Year 3190.1 2 1595.1 51.56 1.0694e-15
Error 2815.2 91 30.936
成分 ANOVA 表には変数 Model_Year
の p 値が含まれており、指標変数の p 値より小さくなっています。
ロバスト線形回帰モデルの当てはめ
hald
データ セットを読み込みます。これは、セメントの硬化熱に対してセメントの組成が与える影響を測定したデータです。
load hald
このデータ セットには、変数 ingredients
および heat
が含まれています。行列 ingredients
には、セメントに含まれている 4 種類の化学物質の組成率が格納されています。ベクトル heat
には、各セメント標本に対する 180 日後の硬化熱の値が格納されています。
ロバスト線形回帰モデルをデータに当てはめます。
mdl = fitlm(ingredients,heat,'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
詳細については、ロバスト近似と標準的な最小二乗近似の結果を比較しているロバスト回帰を使用した外れ値の影響の低減のトピックを参照してください。
ステップワイズ回帰の使用による線形モデルの当てはめ
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
は前方選択を実行し、x4
、x1
および x2
の各項を (この順番で) 追加します。これは対応する p 値が PEnter
の値 0.06 より小さいためです。その後、stepwiselm
は後退消去を使用して x4
をモデルから削除します。これは、x2
がモデル内にあると、PRemove
の既定値である 0.1 より x4
の p 値が大きくなるためです。
詳細
項の行列
項行列 T
は、モデル内の項を指定する t 行 (p + 1) 列の行列です。t は項の数、p は予測子変数の数であり、+1 は応答変数に相当します。T(i,j)
の値は、項 i
の変数 j
の指数です。
たとえば、3つの予測子変数 x1
、x2
、x3
と応答変数 y
が x1
、x2
、x3
、y
という順序で入力に含まれていると仮定します。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
を含めなければなりません。
代替機能
高次元データ セットに対する計算時間を短縮するには、関数
fitrlinear
を使用して線形回帰モデルを当てはめます。回帰を正則化するには、
fitrlinear
、lasso
、ridge
またはplsregress
を使用します。fitrlinear
は、LASSO またはリッジ回帰を使用して、高次元データの回帰を正則化します。lasso
は、LASSO または Elastic Net を使用して、線形回帰の冗長な予測子を削除します。ridge
は、リッジ回帰を使用して、相関する項がある回帰を正則化します。plsregress
は、部分最小二乗を使用して、相関する項がある回帰を正則化します。
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
GPU 配列
Parallel Computing Toolbox™ を使用してグラフィックス処理装置 (GPU) 上で実行することにより、コードを高速化します。
使用上の注意事項および制限事項:
LinearModel
モデルのオブジェクト関数は GPU 配列を完全にサポートしています。
詳細は、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2012a で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)