主要内容

最小二乘拟合

简介

曲线拟合工具箱™软件在拟合数据时使用最小二乘方法。拟合需要一个参数模型,该模型将响应数据与具有一个或多个系数的预测数据联系起来。拟合过程的结果是对模型系数的估计。

为了得到系数估计值,最小二乘法使残差的总和平方最小。剩余的我第Th个数据点r<年代ub>我定义为观察到的响应值之间的差值y<年代ub>我和拟合的响应值ŷ<年代ub>我,并被标识为与数据相关的错误。

r y y 剩余=数据 适合

残差的平方和由

年代 1 n r 2 1 n y y 2

在哪里n数据点的数量是否包括在拟合和中年代是误差平方和估计。支持的最万博1manbetx小二乘拟合类型包括:

  • 线性最小二乘

  • 加权线性最小二乘

  • 鲁棒最小二乘

  • 非线性最小二乘

误差分布

当拟合包含随机变化的数据时,通常会对误差做出两个重要假设:

  • 误差只存在于响应数据中,而不存在于预测数据中。

  • 误差是随机的,遵循正态(高斯)分布,均值为零,方差恒定,σ2

第二种假设通常表示为

e r r o r N 0 σ 2

误差被假定为正态分布,因为正态分布通常为许多测量量的分布提供了足够的近似。尽管最小二乘拟合方法在计算参数估计时不假设正态分布误差,但该方法对不包含大量具有极端值的随机误差的数据最有效。正态分布是极端随机误差不常见的概率分布之一。然而,统计结果如置信度和预测界限确实需要正态分布误差来证明其有效性。

如果误差的均值为零,那么这些误差完全是随机的。如果平均值不为零,那么可能是模型对你的数据不是正确的选择,或者错误不纯粹是随机的,包含系统错误。

数据中的常数方差意味着误差的“扩散”是常数。具有相同方差的数据有时被认为是相等的<一个class="indexterm" name="d123e7467">同等的质量.

加权最小二乘回归并不隐含随机误差方差不变的假设。相反,假设拟合过程中提供的权重正确地指示了数据中存在的不同质量水平。然后使用权重将每个数据点对拟合系数估计的影响量调整到适当的水平。

线性最小二乘

曲线拟合工具箱软件使用线性最小二乘法来拟合线性模型到数据。一个<年代p一个nclass="emphasis">线性模型定义为系数为线性的方程。例如,多项式是线性的,而高斯多项式不是。为了说明线性最小二乘拟合过程,假设你有n可以用一阶多项式建模的数据点。

y p 1 x + p 2

解这个方程的未知系数p1而且p2,你写道年代作为一个系统n两个未知数的联立线性方程。如果n大于未知数的数量,那么方程组是<年代p一个nclass="emphasis">多因素决定的.

年代 1 n y p 1 x + p 2 2

因为最小二乘拟合过程使残差的平方和最小,所以系数是通过微分确定的年代对于每个参数,并将结果设为零。

年代 p 1 2 1 n x y p 1 x + p 2 0 年代 p 2 2 1 n y p 1 x + p 2 0

真实参数的估计值通常用b.替换b1而且b2p1而且p2,则前面的方程为

x y b 1 x + b 2 0 y b 1 x + b 2 0

求和是从哪里开始的我= 1到n.的<年代p一个nclass="emphasis">正常的<一个class="indexterm" name="d123e7554">方程定义为

b 1 x 2 + b 2 x x y b 1 x + n b 2 y

b1

b 1 n x y x y n x 2 x 2

b2使用b1价值

b 2 1 n y b 1 x

如你所见,估计系数p1而且p2只需要一些简单的计算。将这个例子扩展到一个更高次的多项式是很简单的,尽管有点乏味。所需要的只是为每个线性项添加一个附加的法向方程。

在矩阵形式下,线性模型由公式给出

y=Xβ+ε

在哪里

  • y是一个n响应的-by-1向量。

  • β是a米-by-1的系数向量。

  • X是n——- - - - - -米为模型设计矩阵。

  • ε是ann-by-1误差向量。

对于一阶多项式n两个未知数下的方程用y,X, β为

y 1 y 2 y 3. y n x 1 1 x 2 1 x 3. 1 x n 1 × p 1 p 2

这个问题的最小二乘解是一个向量b,估计未知的系数向量β。法方程由

X<年代up>TX)b=X<年代up>Ty

在哪里X<年代up>T是设计矩阵的转置吗X.解b,

b= (X<年代up>TX)<年代up>1X<年代up>Ty

使用MATLAB<年代up>®反斜杠运算符(<一个href="//www.tianjin-qmedu.com/it/help/matlab/ref/mldivide.html">mldivide)来解一个未知系数的联立线性方程组。因为反相X<年代up>TX会导致不可接受的舍入错误,反斜杠运算符使用QR旋转分解,这是一种非常稳定的数值算法。指<一个href="//www.tianjin-qmedu.com/it/help/matlab/arithmetic.html" class="a">算术运算有关反斜杠操作符和的详细信息QR分解。

你可以插入b回到模型公式,得到预测响应值,ŷ.

ŷ=Xb=沪元

H=X(X<年代up>TX)<年代up>1X<年代up>T

字母上方的帽子(旋)表示对参数的估计或模型的预测。投影矩阵H叫做帽子矩阵,因为它把帽子戴上了y.

剩余收入由

r=y- - - - - -ŷ= (1 -H)y

加权最小二乘

通常假设响应数据具有相同的质量,因此具有恒定的方差。如果违反此假设,则您的拟合可能会受到质量较差的数据的不适当影响。为了改善拟合,您可以使用加权最小二乘回归,其中在拟合过程中包括一个额外的比例因子(权重)。加权最小二乘回归使误差估计最小化

年代 1 n w y y 2

在哪里w<年代ub>我是重量。权重决定了每个响应值对最终参数估计的影响程度。高质量数据点比低质量数据点对拟合的影响更大。如果权重是已知的,或者有理由认为它们遵循特定的形式,则建议对数据进行加权。

权重修改参数估计的表达式b以以下方式,

b β X T W X 1 X T W y

在哪里W是由权矩阵的对角线元素给出的w.

通常可以通过拟合数据和绘制残差来确定方差是否恒定。在下面的图中,数据包含各种质量的复制数据,假设拟合是正确的。差质量的数据显示在残差图中,残差图具有“漏斗”形状,其中较小的预测值比较大的预测值在响应值中产生更大的散点。

您提供的权重应该将响应方差转换为常数值。如果您知道数据中测量误差的方差,则权重由

w 1 / σ 2

或者,如果你只有每个数据点误差变量的估计值,通常用这些估计值来代替真实方差就足够了。如果您不知道方差,在相对尺度上指定权重就足够了。请注意,即使已经指定了权重,也要估计总体方差项。在本例中,权重定义了拟合中每个点的相对权重,但不用于指定每个点的确切方差。

例如,如果每个数据点是几个独立测量值的平均值,那么使用这些测量值作为权重可能是有意义的。

鲁棒最小二乘

通常假定响应误差服从正态分布,极少有极端值。然而,极端的价值观被称为<年代p一个nclass="emphasis">离群值确实发生了。

最小二乘拟合的主要缺点是对异常值敏感。离群值对拟合有很大的影响,因为残差的平方放大了这些极端数据点的影响。为了最小化异常值的影响,可以使用稳健的最小二乘回归来拟合数据。工具箱提供了以下两个健壮的回归方法:

  • 最小绝对残差(LAR) - LAR方法找到一条曲线,最小化残差的绝对差,而不是差的平方。因此,极值对拟合的影响较小。

  • Bisquare weights -这种方法最小化加权平方和,其中赋予每个数据点的权重取决于该点距离拟合线的距离。靠近直线的点得到全权值。离直线越远的点重量越小。离这条线远的点的权重为零。

    在大多数情况下,双方加权方法比LAR更受欢迎,因为它同时寻求使用通常的最小二乘方法来拟合大量数据的曲线,并且它最小化了异常值的影响。

二方权重的鲁棒拟合使用迭代重加权最小二乘算法,并遵循以下过程:

  1. 用加权最小二乘拟合模型。

  2. 计算<年代p一个nclass="emphasis">调整后的残差并将其标准化。调整后的残差由

    r 一个 d j r 1 h

    r<年代ub>我通常的最小二乘残差和h<年代ub>我是<年代p一个nclass="emphasis">利用通过降低高杠杆数据点的权重来调整残差,这对最小二乘拟合有很大影响。标准化调整残差由

    u r 一个 d j K 年代

    K调优常数是否等于4.685年代鲁棒标准差是疯了/ 0.6745,疯了是残差的绝对偏差中位数。

  3. 作为函数计算鲁棒权值u.二方权值由

    w 1 u 2 2 | u | < 1 0 | u | 1

    请注意,如果您提供自己的回归权重向量,最终权重是稳健权重和回归权重的乘积。

  4. 如果拟合收敛,那么你就完成了。否则,通过返回第一步执行拟合过程的下一次迭代。

  5. 下图比较了常规线性拟合和使用双方权重的稳健拟合。请注意,稳健拟合遵循大量数据,不受异常值的强烈影响。

    您可以标记要从拟合中排除的数据点,而不是使用稳健回归来最小化离群值的影响。指<一个href="//www.tianjin-qmedu.com/it/help/curvefit/removing-outliers.html" class="a">删除离群值获取更多信息。

    非线性最小二乘

    曲线拟合工具箱软件使用非线性最小二乘公式来拟合数据的非线性模型。非线性模型定义为系数为非线性的方程,或系数为线性和非线性的组合。例如,高斯函数、多项式的比值和幂函数都是非线性的。

    在矩阵形式下,由公式给出非线性模型

    y=f(X,β) + ε

    在哪里

    • y是一个n响应的-by-1向量。

    • f是β和的函数X.

    • β是a米-by-1的系数向量。

    • X是n——- - - - - -米为模型设计矩阵。

    • ε是ann-by-1误差向量。

    非线性模型比线性模型更难拟合,因为系数不能用简单的矩阵技术估计。相反,需要遵循以下步骤的迭代方法:

    1. 从每个系数的初始估计开始。对于一些非线性模型,我们提供了一种启发式方法来产生合理的起始值。对于其他模型,提供了区间[0,1]上的随机值。

    2. 生成当前系数集的拟合曲线。拟合响应值ŷ是由

      ŷ=f(X,b)

      的计算<年代p一个nclass="emphasis">雅可比矩阵的f(X、b),定义为对系数求偏导数的矩阵。

    3. 调整系数并确定是否改善拟合。调整的方向和幅度取决于拟合算法。工具箱提供了以下算法:

      • 信任区域——这是默认算法,如果指定系数约束,则必须使用该算法。该算法比现有的Levenberg-Marquardt算法更有效地解决复杂的非线性问题,是对现有Levenberg-Marquardt算法的改进。

      • Levenberg-Marquardt -该算法已使用多年,并已被证明在大多数时间内适用于广泛的非线性模型和起始值。如果信赖域算法不能产生合理的拟合,并且没有系数约束,则应该尝试Levenberg-Marquardt算法。

    4. 通过返回步骤2迭代该过程,直到拟合达到指定的收敛条件。

    您可以对非线性模型使用权重和鲁棒拟合,并相应地修改拟合过程。

    由于近似过程的性质,没有一种算法对所有非线性模型、数据集和起点都是万无一失的。因此,如果使用默认的起始点、算法和收敛标准不能达到合理的拟合,则应该尝试不同的选项。指<一个href="//www.tianjin-qmedu.com/it/help/curvefit/parametric-fitting.html" class="a">指定合适的选项和优化的起始点有关如何修改默认选项的说明。因为非线性模型可能对起始点特别敏感,所以这应该是您修改的第一个拟合选项。

    健壮的拟合

    这个例子展示了如何比较排除异常值和稳健拟合的效果。该示例展示了如何在与模型的任意距离大于1.5个标准差时排除异常值。然后,这些步骤将删除异常值与指定一个健壮的拟合进行比较,后者给予异常值较低的权重。

    创建一个基线正弦信号:

    Xdata = (0:0.1:2*pi)';Y0 = sin(xdata);

    向方差非恒定的信号中加入噪声。

    %响应相关的高斯噪声Gnoise = y0.*randn(size(y0));<年代p一个n年代tyle="color:#228B22">椒盐味的噪音Spnoise = 0 (size(y0));P = randperm(length(y0));点= p(1:圆(长度(p)/5));Spnoise (sppoints) = 5*符号(y0(sppoints));Ydata = y0 + gnoise + spnoise;

    用基线正弦模型拟合噪声数据,并指定3个输出参数,得到包含残差的拟合信息。

    F = fittype(<年代p一个n年代tyle="color:#A020F0">“* sin (b * x)”);[fit1,gof,fitinfo] = fit(xdata,ydata,f,<年代p一个n年代tyle="color:#A020F0">曾经繁荣的[1]);

    检查fitinfo结构中的信息。

    fitinfo
    fitinfo =<年代p一个nclass="emphasis">带字段的结构:numobs: 63 numparam: 2 residuals: [63x1 double] Jacobian: [63x2 double] exitflag: 3 firstorderopt: 0.0883 iterations: 5 funcCount: 18 cgiterations: 0 algorithm: 'trust- area -reflective' stepsize: 4.1539e-04 message: '成功,但拟合停止,因为残差的变化小于公差(TolFun)。'

    从fitinfo结构中获取残差。

    残差= fitinfo.residuals;

    将“异常值”识别为与基线模型之间的距离大于1.5个标准差的任意点,并将排除的异常值重新改装数据。

    I = abs(残差)> 1.5 * std(残差);异常值= excludedata(xdata,ydata,<年代p一个n年代tyle="color:#A020F0">“指标”,我);Fit2 = fit(xdata,ydata,f,<年代p一个n年代tyle="color:#A020F0">曾经繁荣的[1],<年代p一个n年代tyle="color:#0000FF">...“排除”、异常值);

    比较排除异常值的效果与在稳健拟合中给予它们较低的二方权重的效果。

    Fit3 = fit(xdata,ydata,f,<年代p一个n年代tyle="color:#A020F0">曾经繁荣的[1],<年代p一个n年代tyle="color:#A020F0">“稳健”,<年代p一个n年代tyle="color:#A020F0">“上”);

    绘制数据、异常值和拟合结果。指定一个有信息的图例。

    情节(fit1<年代p一个n年代tyle="color:#A020F0">的r -xdata ydata,<年代p一个n年代tyle="color:#A020F0">“k”。离群值,<年代p一个n年代tyle="color:#A020F0">“m *”)举行<年代p一个n年代tyle="color:#A020F0">在情节(fit2<年代p一个n年代tyle="color:#A020F0">“c——”)情节(fit3<年代p一个n年代tyle="color:#A020F0">”乙:“xlim([0 2*pi])<年代p一个n年代tyle="color:#A020F0">“数据”,<年代p一个n年代tyle="color:#A020F0">“第二次合身数据排除”,<年代p一个n年代tyle="color:#A020F0">“原来适合”,<年代p一个n年代tyle="color:#0000FF">...“符合分数排除”,<年代p一个n年代tyle="color:#A020F0">健壮的适合的)举行<年代p一个n年代tyle="color:#A020F0">从

    图中包含一个轴对象。axis对象包含5个line类型的对象。这些对象表示数据、第二次拟合排除的数据、原始拟合、剔除点的拟合、稳健拟合。

    绘制考虑异常值的两个拟合的残差:

    图绘制(fit2 xdata ydata,<年代p一个n年代tyle="color:#A020F0">“有限公司”,<年代p一个n年代tyle="color:#A020F0">“残差”)举行<年代p一个n年代tyle="color:#A020F0">在情节(fit3 xdata ydata,<年代p一个n年代tyle="color:#A020F0">“软”,<年代p一个n年代tyle="color:#A020F0">“残差”)举行<年代p一个n年代tyle="color:#A020F0">从

    图中包含一个轴对象。axis对象包含4个line类型的对象。这些对象表示数据,零线。