ドキュメンテーション

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

regress

構文

b = regress(y,X)
[b,bint] = regress(y,X)
[b,bint,r] = regress(y,X)
[b,bint,r,rint] = regress(y,X)
[b,bint,r,rint,stats] = regress(y,X)
[___] = regress(y,X,alpha)

説明

b = regress(y,X) は、行列 X 内の予測子に対するベクトル y 内の応答についての多重線形回帰の係数推定値が格納されているベクトル b を返します。行列 X には、1 から構成される列が含まれていなければなりません。

[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 も返します。

[___] = 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

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

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

値の 0.9824が 1 に近く、p 値の 0.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 は p 行 1 列のベクトルです。p は X 内の予測子の個数です。

データ型: single | double

外れ値を診断するための区間。数値行列として返されます。rint は p 行 2 列の行列です。p は 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)% 信頼区間を残差を中心にしてシフトしたものです。

参照

[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 より前に導入