主要内容

线性回归

介绍

一个数据模型明确地描述了之间的关系预测响应变量。线性回归拟合的数据模型是线性的模型系数。最常见的线性回归类型是最小二乘匹配,它可以拟合直线和多项式,以及其他线性模型。

在对数量之间的关系建模之前,最好先进行相关分析,以确定这些数量之间是否存在线性关系。要知道变量可能具有非线性关系,这是相关分析无法检测到的。有关更多信息,请参见线性相关

MATLAB®基本拟合UI帮助您拟合数据,因此您可以计算模型系数并在数据上绘制模型。例如,请参见示例:使用基本装配UI.你也可以使用MATLABpolyfitpolyval函数使你的数据符合系数为线性的模型。例如,请参见编程拟合

如果你需要用非线性模型来拟合数据,那么转换变量使关系线性化。或者,尝试直接使用统计学和机器学习工具箱来拟合非线性函数nlinfit函数,优化工具箱™lsqcurvefit函数,或在曲线拟合工具箱™中应用函数。

本主题说明如何:

  • 执行简单的线性回归使用操作符。

  • 使用相关分析来确定两个量是否相关以证明数据的拟合。

  • 用线性模型拟合数据。

  • 通过绘制残差和寻找模式来评估拟合的优度。

  • 计算拟合优度的度量R2R和调整2

简单线性回归

这个例子展示了如何使用事故数据集。该示例还向您展示了如何计算确定系数 R 2 来评估回归。的事故数据集包含美国各州致命交通事故的数据。

线性回归模型建立了一个相关变量或响应变量之间的关系 y 一个或多个独立的,或预测变量 x 1 x n .简单线性回归只考虑使用关系的一个自变量

y β 0 + β 1 x + ϵ

在哪里 β 0 是y轴截距, β 1 是斜率(或回归系数),和 ϵ 为误差项。

从一组开始 n 观测值的 x y 给出的 x 1 y 1 x 2 y 2 、…… x n y n .利用简单的线性回归关系,这些值形成一个线性方程组。用矩阵形式表示这些方程为

y 1 y 2 y n 1 x 1 1 x 2 1 x n β 0 β 1

Y y 1 y 2 y n X 1 x 1 1 x 2 1 x n B β 0 β 1

关系现在是 Y X B

在MATLAB中,你可以找到 B 使用mldivide运营商是B = X、Y

从数据集事故,载入事故数据y和州人口数据x.找出线性回归关系 y β 1 x 一个州的事故数量和这个州的人口数量之间操作符。的运算符执行最小二乘回归。

负载事故x = hwydata (: 14);%的人口国家: y = hwydata (4);%事故/状态格式b1 y = x \
b1 = 1.372716735564871 e-04

b1为斜率或回归系数。线性关系是 y β 1 x 0 0 0 0 1 3. 7 2 x

计算每个州的事故yCalcx使用的关系。通过绘制实际值来可视化回归y计算值yCalc

yCalc1 = b1 * x;散射(x, y)情节(x, yCalc1)包含(国家的人口) ylabel (“每个州的致命交通事故”)标题(“事故与人口的线性回归关系”网格)

图中包含一个坐标轴。以“事故与人口之间的线性回归关系”为标题的坐标轴包含散点、直线两个对象。

通过包含y轴截距来改善配合 β 0 在你的模型中 y β 0 + β 1 x .计算 β 0 通过填充x一列1,用操作符。

X = [ones(length(X),1) X];b = X、y
b =2×1102×1.427120171726538 - 0.000001256394274

这个结果代表了这个关系 y β 0 + β 1 x 1 4 2 7 1 2 0 + 0 0 0 0 1 2 5 6 x

通过在同一个图形上画出它们的关系来形象化。

yCalc2 = X * b;情节(x, yCalc2,“——”)传说(“数据”“坡”的斜率和拦截“位置”“最佳”);

图中包含一个坐标轴。以“事故与人口之间的线性回归关系”为标题的坐标轴包含散点、直线三个对象。这些对象代表数据、斜率、斜率和截距。

从图上看,这两件衣服看起来很相似。找到更合适的方法之一是计算决定系数, R 2 R 2 这是一个衡量模型预测数据好坏的指标吗 0 1 .价值越高 R 2 ,模型对数据的预测就越好。

在哪里 y ˆ 的计算值 y y 的平均值 y R 2 被定义为

R 2 1 - 1 n y - y ˆ 2 1 n y - y 2

通过比较的值,找到两个拟合的更好的拟合 R 2 .随着 R 2 值表明,包含y截距的第二次拟合更好。

Rsq1 = 1 - sum ((y - yCalc1) ^ 2) /笔((y -意味着(y)) ^ 2)。
Rsq1 = 0.822235650485566
Rsq2 = 1 - sum ((y - yCalc2) ^ 2) /笔((y -意味着(y)) ^ 2)。
Rsq2 = 0.838210531103428

残差与拟合优度

残差是观察到的响应(因变量)值和模型值预测.当您拟合一个适合您的数据的模型时,残差近似于独立随机误差。也就是说,残差的分布不应该呈现出明显的模式。

使用线性模型进行拟合需要最小化残差的平方和。这种最小化产生了所谓的最小二乘拟合。你可以通过观察残差图来洞察匹配的“优劣”。如果残差图有一个模式(即残差数据点没有出现随机散点),随机性表明模型没有适当地拟合数据。

在你的数据背景下评估你的每一个匹配度。例如,如果您拟合数据的目标是提取具有物理意义的系数,那么您的模型必须反映数据的物理性质。在评估拟合优度时,了解数据代表什么、如何测量它以及如何建模非常重要。

适合度的一个衡量标准是确定系数,或R2(发音r平方)。这个统计数字表明你从模型拟合中得到的值与模型要预测的因变量的匹配程度有多接近。统计学家通常定义R2使用拟合模型的残差:

R2= 1 - ss渣油/党卫军总计

党卫军渣油是回归的残差平方和。党卫军总计为因变量(总平方和).都是正的标量。

学习如何计算R2当您使用基本装配工具时,请参见R2,决定系数.学习更多关于计算R的知识2统计和它的多元泛化,继续阅读这里。

例如:计算R2从多项式适合

你可以推出R2从多项式回归系数来确定有多少方差y一个线性模型解释,如下面的例子所描述:

  1. 创建两个变量,xy的前两列变量count.dat

    Load count.dat x = count(:,1);y = count (:, 2);

  2. 使用polyfit计算一个线性回归来预测yx

    P = polyfit(x,y,1

    (1页)为斜率(2页)为线性预测器的截距。您还可以使用基本拟合界面

  3. 调用polyval使用p预测y,调用结果yfit

    yfit = polyval (p (x);

    使用polyval节省了你自己输入适合度方程的时间,在本例中是这样的:

    Yfit = p(1) * x + p(2);
  4. 以带符号数向量的形式计算剩余值:

    Yresid = y - yfit;

  5. 将残差平方求和,得到残差平方和:

    SSresid =总和(yresid。^ 2);

  6. 计算的总平方和y乘以的方差y除以观测次数减去1

    SStotal = (length(y)-1) * var(y);

  7. 计算R2利用本课题导言中给出的公式:

    rsq = 1 - SSresid/SStotal rsq = 0.8707
    这证明了线性方程1.5229 * x -2.1911预测变量方差的87%y

计算R调整2对多项式回归

你通常可以通过拟合高次多项式来减少模型中的残差。当你增加更多项时,你增加了决定系数,R2.你可以更接近数据,但代价是一个更复杂的模型,对于R2不能解释。然而,对这一统计数据的改进,调整R2,确实包括了对模型中术语数量的惩罚。调整R2,因此,更适合于比较不同的模型如何适合相同的数据。调整R2被定义为:

R2调整= 1 - (ss渣油/党卫军总计) * ((n1) / (n-d1))

在哪里n你的数据中观察到的数量,和d是多项式的次数。(线性拟合的次数为1,二次拟合的次数为2,三次拟合的次数为3,以此类推。)

下面的示例重复了前一个示例的步骤,例如:用多项式拟合计算R2,但执行立方(3度)拟合,而不是线性(1度)拟合。根据立方拟合,可以计算简单的和调整后的R2值来评估额外条款是否提高预测能力:

  1. 创建两个变量,xy的前两列变量count.dat

    Load count.dat x = count(:,1);y = count (:, 2);

  2. 调用polyfit生成一个立方拟合来预测yx

    P = polyfit(x,y,3) P = -0.0003 0.0390 0.2233 6.2779

    (4页)为三次预测器的截距。您还可以使用基本拟合界面

  3. 调用polyval用这些系数p预测y,为结果命名yfit

    yfit = polyval (p (x);

    polyval计算你可以手动输入的显式方程:

    yfit = p (1) * x。^ 3 + p (2) * x。^ 2 + x + p p (3) * (4);

  4. 以带符号数向量的形式计算剩余值:

    Yresid = y - yfit;

  5. 将残差平方求和,得到残差平方和:

    SSresid =总和(yresid。^ 2);

  6. 计算的总平方和y乘以的方差y除以观测次数减去1

    SStotal = (length(y)-1) * var(y);

  7. 计算简单R2对于使用本主题介绍中给出的公式进行三次拟合:

    rsq = 1 - SSresid/SStotal

  8. 最后,计算调整后的R2考虑自由度:

    rsq_adj = 1 - SStotal * (length(y)-1)/(length(y)-length(p))
    调整R2, 0.8945,小于简单R2, .9083。它为多项式模型的预测能力提供了更可靠的估计。

在许多多项式回归模型中,向方程中添加项会增加两个R2R和调整2.在前面的例子中,与线性拟合相比,使用立方拟合增加了两个统计量。(可以计算调整后的R2为你自己的线性拟合证明它有一个较低的值)然而,线性拟合并不总是比高阶拟合差:更复杂的拟合可以有更低的调整R2这表明增加的复杂性是不合理的。同时,R2对于基本拟合工具生成的多项式回归模型,调整后的R,总是在0和1之间变化2对于某些模型可能是负面的,表示一个模型有太多的项。

相关性并不意味着因果关系。总是要谨慎地解释相关系数和决定系数。系数只是量化了被拟合模型去除的因变量的方差。这样的测量方法并不能描述你的模型——或者你选择的独立变量——在解释模型所预测的变量的行为方面有多合适。

拟合数据曲线拟合工具箱功能

曲线拟合工具箱软件通过启用以下数据拟合功能扩展了MATLAB的核心功能:

  • 线性和非线性参数拟合,包括标准线性最小二乘,非线性最小二乘,加权最小二乘,约束最小二乘,稳健的拟合程序

  • 非参数拟合

  • 用于确定拟合优度的统计学

  • 外推、微分和积分

  • 对话框,方便数据切片和平滑

  • 保存适合的结果在各种格式,包括MATLAB代码文件,mat文件,和工作空间变量

有关更多信息,请参见曲线拟合工具箱文档。