本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

regress

多元线性回归

说明

示例

b = regress(y,X) 返回向量 b,其中包含向量 y 中的响应对矩阵 X 中的预测变量的多元线性回归的系数估计值。要计算具有常数项(截距)的模型的系数估计值,请在矩阵 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) 还返回向量 stats,其中包含 R2 统计量、F 统计量及其 p 值,以及误差方差的估计值。矩阵 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

加载 examgrades 数据集。

load examgrades

使用最后一次考试分数作为响应数据,前两次考试分数作为预测变量数据。

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

观测值 5354 是可能的离群值。

创建残差的散点图。填充与离群值对应的点。

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

由于 R20.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 的列是线性相关的,regress 会将 b 的最大元素数设置为零。

数据类型: double

系数估计值的置信边界下限和置信边界上限,以数值矩阵形式返回。bint 是 p×2 矩阵,其中 p 是 X 中预测变量的数目。bint 的第一列包含每个系数估计值的置信边界下限;第二列包含置信边界上限。如果 X 的列是线性相关的,则 regressbint 中对应于 b 中零元素的元素返回零。

数据类型: double

残差,以数值向量形式返回。r 是 p×1 向量,其中 p 是 X 中预测变量的数目。

数据类型: single | double

用于诊断离群值的区间,以数值矩阵形式返回。rint 是 p×2 矩阵,其中 p 是 X 中预测变量的数目。如果观测值 irint(i,:) 区间不包含零,则对应的残差大于 100*(1-alpha)% 的新观测值的预期残差,即表明存在离群值。有关详细信息,请参阅算法

数据类型: single | double

模型统计量,以数值向量形式返回,包括 R2 统计量、F 统计量及其 p 值,以及误差方差的估计值。

  • X 必须包含一个由 1 组成的列,以便在模型中包含常数项。F 统计量及其 p 值是在此假设下计算的,对于没有常量的模型则不正确。

  • F 统计量是对回归模型的 F 检验的检验统计量。F 检验寻找响应变量和预测变量之间的显著线性回归关系。

  • 对于没有常量的模型,R2 统计量可能是负数,表明模型不适用于数据。

数据类型: single | double

提示

  • regressXy 中的 NaN 值视为缺失值。regress 在回归拟合中忽略具有缺失值的观测值。

算法

全部折叠

残差区间

在线性模型中,观测到的 y 的值及其残差是随机变量。残差呈现具有零均值的正态分布,但视预测变量值的不同而具有不同方差。为了将残差放在可比较的尺度上,regress 将残差 Student 化。也就是说,regress 将残差除以独立于其值的标准差估计值。Student 化残差具有已知自由度的 t 分布。rint 返回的各个区间是这些 t 分布的 100*(1-alpha)% 置信区间移至以残差为中心的结果。

替代功能

在您只需要函数的输出参数以及要在循环中多次重复拟合模型时,regress 非常有用。如果您需要进一步研究拟合后的回归模型,请使用 fitlmstepwiselm 创建线性回归模型对象 LinearModelLinearModel 对象提供的功能比 regress 更多。

  • 使用 LinearModel 的属性来研究拟合线性回归模型。对象属性包括关于系数估计值、汇总统计量、拟合方法和输入数据的信息。

  • 使用 LinearModel 的对象函数来预测响应以及修改、计算和可视化线性回归模型。

  • regress 不同,fitlm 函数不要求输入数据包含一个由 1 组成的列。由 fitlm 创建的模型始终包含截距项,除非您使用 'Intercept' 名称-值对组参数指定不包含它。

  • 使用 LinearModel 的属性和对象函数,您可以在 regress 的输出中找到信息。

    regress 的输出LinearModel 中的等效值
    b请查看 Coefficients 属性的 Estimate 列。
    bint请使用 coefCI 函数。
    r请查看 Residuals 属性的 Raw 列。
    rint不支持。在这种情况下,请使用 Student 化残差(Residuals 属性)和观测值诊断(Diagnostics 属性)来查找离群值。
    stats请查看命令行窗口中的模型显示。您可以使用 anova 函数以及在模型属性(MSERsquared)中找到这些统计量。

参考

[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 之前推出