Main Content

regress

説明

b = regress(y,X) は、行列 X 内の予測子に対するベクトル y 内の応答についての多重線形回帰の係数推定値が格納されているベクトル b を返します。定数項 (切片) があるモデルの係数推定を計算するには、1 の列を行列 X に含めます。

[b,bint] = regress(y,X) は、係数推定値の 95% 信頼区間が格納されている行列 bint も返します。

[b,bint,r] = regress(y,X) は、さらに残差のベクトル r も返します。

[b,bint,r,rint] = regress(y,X) は、外れ値の診断に使用できる区間の行列 rint も返します。

[b,bint,r,rint,stats] = regress(y,X) は、R2 統計量、F 統計量とその p 値、および誤差分散の推定値が格納されているベクトル stats も返します。行列 X には、ソフトウェアがモデルの統計量を正しく計算するために、1 から構成される列が含まれていなければなりません。

[___] = regress(y,X,alpha) は、100*(1-alpha)% の信頼水準を使用して bintrint を計算します。前の構文におけるいずれかの出力引数の組み合わせを指定します。

すべて折りたたむ

carsmall データ セットを読み込みます。予測子として重量と馬力を、応答として燃費を指定します。

load carsmall
x1 = Weight;
x2 = Horsepower;    % Contains NaN data
y = MPG;

交互作用項で線形モデルの回帰係数を計算します。

X = [ones(size(x1)) x1 x2 x1.*x2];
b = regress(y,X)    % Removes NaN data
b = 4×1

   60.7104
   -0.0102
   -0.1882
    0.0000

データとモデルをプロットします。

scatter3(x1,x2,y,'filled')
hold on
x1fit = min(x1):100:max(x1);
x2fit = min(x2):10:max(x2);
[X1FIT,X2FIT] = meshgrid(x1fit,x2fit);
YFIT = b(1) + b(2)*X1FIT + b(3)*X2FIT + b(4)*X1FIT.*X2FIT;
mesh(X1FIT,X2FIT,YFIT)
xlabel('Weight')
ylabel('Horsepower')
zlabel('MPG')
view(50,10)
hold off

Figure contains an axes object. The axes object with xlabel Weight, ylabel Horsepower contains 2 objects of type scatter, surface.

examgrades データ セットを読み込みます。

load examgrades

最後の試験点数を応答データとして、最初の 2 つの試験点数を予測子データとして使用します。

y = grades(:,5);
X = [ones(size(grades(:,1))) grades(:,1:2)];

alpha = 0.01 を使用して多重線形回帰を実行します。

[~,~,r,rint] = regress(y,X,0.01);

0 が含まれていない残差区間 rint を求めることにより、外れ値を診断します。

contain0 = (rint(:,1)<0 & rint(:,2)>0);
idx = find(contain0==false)
idx = 2×1

    53
    54

観測値 53 および 54 は外れ値の可能性があります。

残差の散布図を作成します。外れ値に対応する点を塗りつぶします。

hold on
scatter(y,r)
scatter(y(idx),r(idx),'b','filled')
xlabel("Last Exam Grades")
ylabel("Residuals")
hold off

Figure contains an axes object. The axes object with xlabel Last Exam Grades, ylabel Residuals contains 2 objects of type scatter.

hald データ セットを読み込みます。応答変数として heat を、予測子データとして ingredients を使用します。

load hald
y = heat;
X1 = ingredients;
x1 = ones(size(X1,1),1);
X = [x1 X1];    % Includes column of ones

多重線形回帰を実行し、モデルの統計量を生成します。

[~,~,~,~,stats] = regress(y,X)
stats = 1×4

    0.9824  111.4792    0.0000    5.9830

R2 の値 0.9824 が 1 に近く、p0.0000 が既定の有意水準 0.05 より小さいので、応答 yX 内の予測子変数の間には有意な線形回帰関係があります。

入力引数

すべて折りたたむ

応答データ。n 行 1 列の数値ベクトルを指定します。y の各行は異なる観測値に対応します。y の行数は X と同じでなければなりません。

データ型: single | double

予測子データ。n 行 p 列の数値行列を指定します。X の行は観測値に、列は予測子変数に対応します。X の行数は y と同じでなければなりません。

データ型: single | double

有意水準。正のスカラーを指定します。alpha は 0 と 1 の間でなければなりません。

データ型: single | double

出力引数

すべて折りたたむ

多重線形回帰の係数推定値。数値ベクトルとして返されます。b は p 行 1 列のベクトルです。p は X 内の予測子の個数です。X の列が線形従属である場合、regressb の要素の最大数をゼロに設定します。

データ型: double

係数推定値の信頼限界の下限と上限。数値行列として返されます。bint は p 行 2 列の行列です。p は X 内の予測子の個数です。bint の 1 列目には、各係数推定値の信頼限界の下限が格納されます。2 列目には、信頼限界の上限が格納されます。X の列が線形従属の場合、regressb のゼロ要素に対応する bint の要素のゼロを返します。

データ型: double

残差。数値ベクトルとして返されます。r は n 行 1 列のベクトルです。n は X 内の観測値の数、つまり行数です。

データ型: single | double

外れ値を診断するための区間。数値行列として返されます。rint は n 行 2 列の行列です。n は X 内の観測値の数、つまり行数です。観測値 i の区間 rint(i,:) にゼロが含まれない場合、対応する残差は新しい観測値の 100*(1-alpha)% で予期される値より大きくなるので、外れ値であると考えられます。詳細は、アルゴリズムを参照してください。

データ型: single | double

モデルの統計量。R2 統計量、F 統計量とその p 値、および誤差分散の推定値が格納されている数値ベクトルとして返されます。

  • モデルに定数項を含めるため、X には 1 から構成される列が含まれていなければなりません。F 統計量と p 値は、この仮定に基づいて計算され、定数がないモデルについては正確ではありません。

  • F 統計量は、回帰モデルに対する F 検定の検定統計量です。F 検定は、応答変数と予測子変数の間に有意な線形回帰関係があるかどうかを調べます。

  • R2 統計量は、定数がないモデルの場合は負になる可能性があります。これは、モデルがデータに適していないことを示します。

データ型: single | double

ヒント

  • regress は、X または y 内の NaN 値を欠損値として扱います。regress は、欠損値がある観測値を回帰近似から省略します。

アルゴリズム

すべて折りたたむ

残差区間

線形モデルにおいて、y の観測値およびその残差は確率変数です。残差はゼロ平均を伴う正規分布ですが、予測子値によって分散が異なります。残差を比較可能なスケールにするため、regress は残差を "スチューデント化" します。つまり regress は、残差の値に依存しない標準偏差の推定値で残差を除算します。スチューデント化残差は、既知の自由度をもつ t 分布に従います。rint に返される区間は、これらの t 分布の 100*(1-alpha)% 信頼区間を残差を中心にしてシフトしたものです。

代替機能

regress は、関数の出力引数のみが必要である場合と、ループ内でモデルの当てはめを複数回繰り返す場合に便利です。当てはめた回帰モデルをさらに調べる必要がある場合は、fitlm または stepwiselm を使用して線形回帰モデル オブジェクト LinearModel を作成します。LinearModel オブジェクトは、regress より多くの機能を提供します。

  • 当てはめた線形回帰モデルを調べるには、LinearModel のプロパティを使用します。オブジェクト プロパティには、係数推定値、要約統計量、近似法および入力データに関する情報が含まれています。

  • 応答の予測と、線形回帰モデルの修正、評価および可視化を行うには、LinearModel のオブジェクト関数を使用します。

  • regress と異なり、関数 fitlm では入力データに 1 の列が必要ありません。名前と値のペアの引数 'Intercept' を使用して切片項を含めないように指定しない限り、fitlm で作成したモデルには常に切片項が含まれます。

  • regress の出力に含まれる情報は、LinearModel のプロパティとオブジェクト関数を使用して取得できます。

    regress の出力LinearModel の同等の値
    bCoefficients プロパティの Estimate 列を参照してください。
    bint関数 coefCI を使用します。
    rResiduals プロパティの Raw 列を参照してください。
    rintサポートされません。代わりに、スチューデント化残差 (Residuals プロパティ) と観測値の診断情報 (Diagnostics プロパティ) を使用して外れ値を検出します。
    statsコマンド ウィンドウのモデル表示を参照してください。統計量はモデルのプロパティ (MSERsquared) に含まれており、関数 anova を使用して取得できます。

参照

[1] Chatterjee, S., and A. S. Hadi. “Influential Observations, High Leverage Points, and Outliers in Linear Regression.” Statistical Science. Vol. 1, 1986, pp. 379–416.

拡張機能

バージョン履歴

R2006a より前に導入