最小二乘法原理、推导和运用

原理部分:

如何理解最小二乘法?   原文查看:https://www.matongxue.com/madocs/818.html

下文是推到部分:

原文:https://blog.csdn.net/marsjohn/article/details/54911788 

在数据的统计分析中,数据之间即变量x与Y之间的相关性研究非常重要,通过在直角坐标系中做散点图的方式我们会发现很多统计数据近似一条直线,它们之间或者正相关或者负相关。虽然这些数据是离散的,不是连续的,我们无法得到一个确定的描述这种相关性的函数方程,但既然在直角坐标系中数据分布接近一条直线,那么我们就可以通过画直线的方式得到一个近似的描述这种关系的直线方程。当然,从前面的描述中不难看出,所有数据都分布在一条直线附近,因此这样的直线可以画出很多条,而我们希望找出其中的一条,能够最好地反映变量之间的关系。换言之,我们要找出一条直线,使这条直线“最贴近”已知的数据点,设此直线方程为:


这里的是为了区分Y的实际值y(这里的实际值就是统计数据的真实值,我们称之为观察值),当x取值(i=1,2,3……n)时,Y的观察值为,近似值为(或者说对应的纵坐标是)。

其中式叫做Y对x的回归直线方程,b叫做回归系数。要想确定回归直线方程,我们只需确定a与回归系数b即可。

 设x,Y的一组观察值为:
   i = 1,2,3……n

其回归直线方程为:


当x取值(i=1,2,3……n)时,Y的观察值为,差刻画了实际观察值与回归直线上相应点纵坐标之间的偏离程度,见下图:


 实际上我们希望这n个离差构成的总离差越小越好,只有如此才能使直线最贴近已知点。换句话说,我们求回归直线方程的过程其实就是求离差最小值的过程。

一个很自然的想法是把各个离差加起来作为总离差。可是,由于离差有正有负,直接相加会互相抵消,如此就无法反映这些数据的贴近程度,即这个总离差不能用n个离差之和来表示,见下图:

 
一般做法是我们用离差的平方和,即:


作为总离差 ,并使之达到最小。这样回归直线就是所有直线中Q取最小值的那一条。由于平方又叫二乘方,所以这种使“离差平方和为最小”的方法,叫做最小二乘法。
用最小二乘法求回归直线方程中的a、b的公式如下:


其中,、为和的均值,a、b的上方加“︿”表示是由观察值按最小二乘法求得的估计值,a、b求出后,回归直线方程也就建立起来了。

当然,我们肯定不能满足于直接得到公式,我们只有理解这个公式怎么来的才能记住它,用好它,因此给出上面两个公式的推导过程更加重要。在给出上述公式的推导过程之前,我们先给出推导过程中用到的两个关键变形公式的推导过程。首先是第一个公式:
 
 
接着是第二个公式:

 
 基本变形公式准备完毕,我们可以开始最小二乘法求回归直线方程公式的推导了:


 
 至此,公式变形部分结束,从最终式子我们可以看到后两项


与a、b无关,属于常数项,我们只需


即可得到最小的Q值,因此:


至此,公式推导完毕。
 

实际应用:

在应用中我们最主要用的还是最后的2个公式

如下,是一段VB写的程序,供参考,后续添加c/c++的

            counter = 0
            denominator = 0
            For i = X10 To X90
                counter += (FRM_Main.data_array_current_soll(i) - Average_X) * (FRM_Main.data_array_optical(i) - Average_Y)
                denominator += (FRM_Main.data_array_current_soll(i) - Average_X) ^ 2
            Next i

            slope = counter / denominator

 

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一元线性回归的目标是找到一条直线来拟合数据,使得拟合线距离数据点的误差最小化。最小二乘法是一种常见的用来求解线性回归参数的方法。 假设我们有一组数据集合 {(x1, y1), (x2, y2), ..., (xn, yn)},其中 xi 是自变量,yi 是因变量。一元线性回归模型可以表示为 y = β0 + β1*x,其中 β0 和 β1 是待求的参数。 最小二乘法的目标是找到使得误差平方和最小化的参数值。我们定义误差 e = y - (β0 + β1*x),其中 e 是实际值与预测值之间的差异。我们将误差平方和定义为损失函数,即 L = ∑(e^2) = ∑((y - (β0 + β1*x))^2)。我们的目标是最小化损失函数 L。 为了求解最小二乘法的参数,我们需要对损失函数 L 进行优化。我们可以通过对 β0 和 β1 分别求导,令导数为 0,从而得到参数的闭式解。 首先对 β0 求导: ∂L/∂β0 = -2∑(y - (β0 + β1*x)) 令导数为 0,得到: ∑y - n*β0 - β1*∑x = 0 解出 β0,得到: β0 = (∑y - β1*∑x)/n 然后对 β1 求导: ∂L/∂β1 = -2∑x(y - (β0 + β1*x)) 令导数为 0,得到: ∑xy - β0*∑x - β1*∑(x^2) = 0 将 β0 的值代入上式,得到: ∑xy - (∑y - β1*∑x)/n * ∑x - β1*∑(x^2) = 0 整理后可得: ∑xy - (∑x*∑y)/n = β1*(∑(x^2) - (∑x)^2/n) 解出 β1,得到: β1 = (∑xy - (∑x*∑y)/n) / (∑(x^2) - (∑x)^2/n) 至此,我们得到了一元线性回归最小二乘法的参数推导
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值