(非推奨) 線形回帰モデルを作成
関数 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
)
は、1 つまたは複数の mdl
= LinearModel.fit(___,modelspec
,Name,Value
)Name,Value
の引数のペアによって指定された追加オプションを使用して線形モデルを作成します。たとえば、近似に含める予測子変数を指定したり、観測値に重みを与えることができます。
tbl
— 入力データ予測子変数と応答変数を含む入力データ。テーブルまたはデータセット配列として指定します。予測子変数は、数値、logical、categorical、文字または string にすることができます。応答変数は、数値または logical でなければなりません。
既定では、LinearModel.fit
は最後の変数を応答変数として、それ以外の変数を予測子変数として取ります。
応答変数として異なる列を設定するには、名前と値のペア引数 ResponseVar
を使用します。
列のサブセットを予測子として使用するには、名前と値のペア引数 PredictorVars
を使用します。
モデル仕様を定義するには、式または項行列を使用して引数 modelspec
を設定します。式または項行列は、予測子または応答変数として使用する列を指定します。
テーブルの変数名は、有効な MATLAB® 識別子である必要はありません。ただし、名前が有効ではない場合、モデルをあてはめるまたは調整するときに式を使用することはできません。以下に例を示します。
式を使用して modelspec
を指定することはできません。
関数 addTerms
または関数 removeTerms
をそれぞれ使用するときに、式を使用して追加または削除する項を指定することはできません。
名前と値のペアの引数 'Lower'
と 'Upper'
を使用して関数 step
または関数 stepwiselm
をそれぞれ使用するときに、式を使用してモデルの下限と上限を指定することはできません。
関数 isvarname
を使用して tbl
の変数名を検証できます。次のコードは、有効な変数名をもつ各変数の logical 1
(true
) を返します。
cellfun(@isvarname,tbl.Properties.VariableNames)
tbl
の変数名が有効ではない場合、関数 matlab.lang.makeValidName
を使用してそれらを変換します。tbl.Properties.VariableNames = matlab.lang.makeValidName(tbl.Properties.VariableNames);
X
— 予測子変数n 行 p 列の行列として指定される予測子変数。ここで、n は観測値の数、p は予測子変数の数です。X
の各列が 1 つの変数を表し、各行が 1 つの観測値を表します。
既定では、明示的に削除しない限り、モデルには定数項があるので、1 の列を X
に含めないでください。
データ型: single
| double
y
— 応答変数n 行 1 列のベクトルとして指定される応答変数。ここで、n は観測値の数です。y
の各エントリは X
の対応する行に対する応答です。
データ型: single
| double
| logical
modelspec
— モデル仕様'linear'
(既定値) | モデルを指定する文字ベクトルまたは string スカラー | t 行 (p + 1) 列の項行列 | 'Y ~ terms'
という形式の文字ベクトルまたは string スカラー式モデル仕様。以下のいずれかとして指定します。
モデルを指定する文字ベクトルまたは string スカラー。
値 | モデル タイプ |
---|---|
'constant' | モデルは定数 (切片) 項だけを含みます。 |
'linear' | 切片と各予測子の線形項がモデルに含まれます。 |
'interactions' | 切片、各予測子の線形項、および異なる予測子のペアすべての積がモデルに含まれます (二乗項はありません)。 |
'purequadratic' | 切片項と各予測子の線形項および二乗項がモデルに含まれます。 |
'quadratic' | 切片項、各予測子の線形項、二乗項、および異なる予測子のペアすべての積がモデルに含まれます。 |
'poly | モデルは多項式であり、1 番目の予測子における次数 i までのすべての項、2 番目の予測子における次数 j までのすべての項が含まれます。3 番目以降の項についても同様です。0 ~ 9 の数値を使用して、各予測子の最大次数を指定します。モデルには交互作用項が含まれますが、各交互作用項の次数は、指定された次数の最大値を超えません。たとえば、'poly13' には、切片、x1、x2、x22、x23、x1*x2 および x1*x22 の各項が含まれます。x1 および x2 はそれぞれ 1 番目および 2 番目の予測子です。 |
モデル内に含める項を指定する t 行 (p + 1) 列の行列。つまり項行列であり、t は項の数、p は予測子変数の数、+ 1 は応答変数を示します。
'Y ~ terms'
terms
はウィルキンソンの表記法を使用して指定されます。例: 'quadratic'
例: 'y ~ X1 + X2^2 + X1:X2'
オプションの Name,Value
引数のコンマ区切りペアを指定します。Name
は引数名で、Value
は対応する値です。Name
は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN
のように、複数の名前と値のペアの引数を、任意の順番で指定できます。
'CategoricalVars'
— カテゴリカル変数のリストカテゴリカル変数のリスト。'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'
— 除外する観測値近似から除外する観測値。'Exclude'
と、近似から除外する観測値を示す論理インデックス ベクトルまたは数値インデックス ベクトルで構成されるコンマ区切りのペアとして指定します。
たとえば、以下のいずれかの例を使用して、6 つの観測値のうち観測値 2 および 3 を除外できます。
例: 'Exclude',[2,3]
例: 'Exclude',logical([0 1 1 0 0 0])
データ型: single
| double
| logical
'Intercept'
— 定数項のインジケーターtrue
(既定値) | false
あてはめにおける定数項 (切片) のインジケーター。'Intercept'
と、モデルに定数項を含める true
またはモデルから定数項を削除する false
で構成されるコンマ区切りのペアとして指定します。
式または行列ではなく文字ベクトルまたは string スカラーを使用してモデルを指定する場合のみ、'Intercept'
を使用します。
例: 'Intercept',false
'PredictorVars'
— 予測子変数あてはめで使用する予測子変数。'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 スカラー | 論理インデックス ベクトルまたは数値インデックス ベクトルあてはめで使用する応答変数。'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'
(既定値) | 'on'
| 文字ベクトル | string スカラー | 構造体使用するロバスト近似タイプのインジケーター。'RobustOpts'
と次のいずれかの値から構成されるコンマ区切りのペアとして指定します。
'off'
— ロバスト近似を使用しない。LinearModel.fit
は通常の最小二乗を使用します。
'on'
— 既定の調整定数で 'bisquare'
重み関数を使用するロバスト近似。
文字ベクトルまたは string スカラー — 以下の表に記載されているロバスト近似重み関数の名前。LinearModel.fit
は、表で指定されている、対応する既定の調整定数を使用します。
RobustWgtFun
および Tune
という 2 つのフィールドをもつ構造体。
RobustWgtFun
フィールドには、次の表に記載されているロバスト近似重み関数の名前、またはカスタム重み関数の関数ハンドルを格納します。
Tune
フィールドには、調整定数を格納します。Tune
フィールドを設定しない場合、LinearModel.fit
は対応する既定の調整定数を使用します。
重み関数 | 説明 | 既定の設定の調整定数 |
---|---|---|
'andrews' | w = (abs(r)<pi) .* sin(r) ./ r | 1.339 |
'bisquare' | w = (abs(r)<1) .* (1 - r.^2).^2 (biweight とも呼ばれます) | 4.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) ./ r | 1.205 |
'ols' | 通常最小二乗 (重み関数なし) | なし |
'talwar' | w = 1 * (abs(r)<1) | 2.795 |
'welsch' | w = exp(-(r.^2)) | 2.985 |
関数ハンドル | スケーリングされた残差のベクトル r を受け入れ、r と同じサイズの重みのベクトルを返す、カスタム重み関数 | 1 |
応答が正規分布に従っており、外れ値がない場合、組み込み重み関数の既定の調整定数を使用すると、統計的な効率が通常の最小二乗推定の約 95% である係数推定値が得られます。調整定数を小さくすると、大きな残差に割り当てられる重みの削減量が増え、調整定数を大きくすると、大きな残差に割り当てられる重みの削減量が減ります。
重み関数の値 r は次のようになります。
r = resid/(tune*s*sqrt(1–h))
,
resid
は前回の反復の残差のベクトル、tune
は調整定数、h
は最小二乗近似のてこ比値のベクトル、s
は以下によって与えられる誤差項の標準偏差の推定値です。
s = MAD/0.6745
.
MAD
は、残差の中央値に対する残差の中央絶対偏差です。定数 0.6745 は、推定を正規分布に対して不偏にします。X
に p 個の列がある場合、中央値を計算するときに、最小のものから p 個の絶対偏差が除外されます。
ロバスト近似の場合、LinearModel.fit
は M 推定を使用して推定式を定式化し、反復的に再重み付けした最小二乗 (IRLS) 法を使用してこの式を解きます。
例: 'RobustOpts','andrews'
'VarNames'
— 変数の名前{'x1','x2',...,'xn','y'}
(既定値) | string 配列 | 文字ベクトルの cell 配列変数の名前。'VarNames'
と、X
の列名が最初に、応答変数 y
の名前が最後に含まれている文字ベクトルの cell 配列または string 配列から構成されるコンマ区切りのペアとして指定します。
テーブルまたはデータセット配列の変数には既に名前が設定されているため、'VarNames'
はこれらの配列には適用されません。
変数名は、有効な MATLAB 識別子である必要はありません。ただし、名前が有効ではない場合、モデルをあてはめるまたは調整するときに式を使用することはできません。以下に例を示します。
関数 addTerms
または関数 removeTerms
をそれぞれ使用するときに、式を使用して追加または削除する項を指定することはできません。
名前と値のペアの引数 'Lower'
と 'Upper'
を使用して関数 step
または関数 stepwiselm
をそれぞれ使用するときに、式を使用してモデルの下限と上限を指定することはできません。
'VarNames',varNames
を指定する前に、関数 isvarname
を使用して varNames
の変数名を検証できます。次のコードは、有効な変数名をもつ各変数の logical 1
(true
) を返します。
cellfun(@isvarname,varNames)
varNames
の変数名が有効ではない場合、関数 matlab.lang.makeValidName
を使用してそれらを変換します。varNames = matlab.lang.makeValidName(varNames);
例: 'VarNames',{'Horsepower','Acceleration','Model_Year','MPG'}
データ型: string
| cell
'Weights'
— 観測値の重みones(n,1)
(既定値) | 非負のスカラー値の n 行 1 列のベクトル観測値の重み。'Weights'
と、非負のスカラー値の n 行 1 列のベクトル (n は観測値の数) で構成されるコンマ区切りのペアとして指定します。
データ型: single
| double
mdl
— 線形モデルLinearModel
オブジェクトデータに対する応答の最小二乗近似を表す線形モデル。LinearModel
オブジェクトとして返されます。
名前と値のペア 'RobustOpts'
の値が []
または 'ols'
でない場合、このモデルは最小二乗近似ではありませんが、ロバスト近似関数を使用します。
線形モデル オブジェクトのプロパティとメソッドについては、LinearModel
クラスのページを参照してください。
行列入力データセットを使用して線形回帰モデルをあてはめます。
行列入力データセットである 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
— 対応する係数が 0 であるかどうかについての仮説検定の 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
カテゴリカル予測子が含まれている線形回帰モデルをあてはめます。モデルの基準レベルを制御するため、カテゴリカル予測子のカテゴリの順序を並べ替えます。次に、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 値より小さくなっています。
線形回帰モデルを標本データにあてはめます。応答変数と予測子変数を指定し、対になっている交互作用項のみをモデルに含めます。
標本データを読み込みます。
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% の有意水準では、年齢、喫煙状況、またはこれらの因子と患者の性別の交互作用によって患者の体重に有意な差が生じることはないようです。
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
詳細については、ロバスト近似と標準的な最小二乗近似の結果を比較しているロバスト回帰を使用した外れ値の影響の低減のトピックを参照してください。
項行列 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
を含めなければなりません。
モデル仕様の式は '
という形式の文字ベクトルまたは string スカラーです。y
~ terms
'
y
は応答名です。
terms
は、ウィルキンソンの表記法を使用してモデル内の予測子の項を表します。
予測子と応答変数を表現するには、table 入力 tbl
の変数名、または VarNames
を使用して指定された変数名を使用します。VarNames
の既定値は {'x1','x2',...,'xn','y'}
です。
以下に例を示します。
'y ~ x1 + x2 + x3'
は、切片がある 3 変数の線形モデルを指定します。
'y ~ x1 + x2 + x3 – 1'
は、切片がない 3 変数の線形モデルを指定します。既定では式に定数 (切片) 項が含まれることに注意してください。モデルから定数項を除外するには、–1
を式に含めなければなりません。
–1
を使用して項を明示的に削除しない限り、式は定数項を含みます。
ウィルキンソンの表記法は、モデルに存在する項を記述します。この表記法は、モデルに存在する項に関係するものであり、それらの項の乗数 (係数) に関係するものではありません。
ウィルキンソンの表記法では、以下の記号を使用します。
+
は、次の変数を含むことを意味します。
–
は、次の変数を含まないことを意味します。
:
は、項の積である交互作用を定義します。
*
は、交互作用と、より低い次数の項すべてを定義します。
^
は、*
を繰り返した場合とまったく同じ方法で予測子をべき乗にします。このため、^
には、より低い次数の項も含まれます。
()
は、項をグループ化します。
次の表に、ウィルキンソンの表記法の代表的な例を示します。
ウィルキンソンの表記法 | 標準表記の項 |
---|---|
1 | 定数 (切片) 項 |
x1^k 、k は正の整数 | x1 , x12 , ..., x1k |
x1 + x2 | x1 , x2 |
x1*x2 | x1 , x2 , x1*x2 |
x1:x2 | x1*x2 のみ |
–x2 | x2 は含めない |
x1*x2 + x3 | x1 , x2 , x3 , x1*x2 |
x1 + x2 + x3 + x1:x2 | x1 , x2 , x3 , x1*x2 |
x1*x2*x3 – x1:x2:x3 | x1 , x2 , x3 , x1*x2 , x1*x3 , x2*x3 |
x1*(x2 + x3) | x1 , x2 , x3 , x1*x2 , x1*x3 |
詳細は、ウィルキンソンの表記法を参照してください。
外れ値の効果を自動的に減らすために、ロバスト近似 (RobustOpts
名前と値のペア) を使用します。
step
を使用して後でモデルを調整する場合は、ロバスト近似は使用しないでください。
他のメソッドや、LinearModel
オブジェクトのプロパティについては、LinearModel
を参照してください。
主な近似アルゴリズムは QR 分解です。ロバスト近似の場合、アルゴリズムは robustfit
です。
fitlm
を使用して線形モデルを構築することもできます。
stepwiselm
を使用して、可能なモデルの範囲にモデルを構築できすま。ただし、ロバスト回帰とステップワイズ回帰を一緒に使用することはできません。
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
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: .
Select web siteYou can also select a web site from the following list:
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.