最小二乘法原理、推导和运用
原理部分:
如何理解最小二乘法?? ?原文查看: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 = 0denominator = 0For i = X10 To X90counter += (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) ^ 2Next islope = counter / denominator?
總結
以上是生活随笔為你收集整理的最小二乘法原理、推导和运用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用 Windows 脚本文件 (.ws
- 下一篇: [装机必备] Microsoft To