演算法積累NO1 最小二乘法C實現

2021-09-25 05:35:01 字數 1818 閱讀 8749

最小二乘估計法,又稱最小平方法,是一種數學優化技術。它通過最小化誤差的平方和尋找資料的最佳函式匹配。利用最小二乘估計法可以簡便地求得未知的資料,並使得這些求得的資料與實際資料之間誤差的平方和為最小。

計量經濟學研究的直接目的是確定總體回歸函式yi=b1+b2xi+ui,然而能夠得到的只是來自總體的若干樣本的觀測值,要用樣本資訊建立的樣本回歸函式盡可能「接近」地去估計總體回歸函式。為此,可以以從不同的角度去確定建立樣本回歸函式的準則,也就有了估計回歸模型引數的多種方法。

最小二乘估計法用來確定函式y(x) = b1x + b0 中b1和b0的估計值。

y(x)是n個點(x0,y0) , ... (xn-1 , yn-1)的最佳擬合線。

b1 = (n * sigma(xi * yi) - singma(xi)*singma(yi) ) / (n*singma(pow(xi)) - pow((singma(xi))) ;

b0 = (sigma(yi) - b1 * singma(xi)) / n ; 

將值b0和b1求出後可代入y(x) = b1 + b0 求出相應的值。

接下來寫乙個例子:

#include #include #include #include #define nr(x) sizeof(x)/sizeof(x[0])

//最小二乘法實現

void lsqe(const double *x, const double *y, int n, double *b1, double *b0)

//根據公式求解b1和b0的值

*b1 = (sumxy - ((sumx * sumy)/(double)n)) / (sumx2-(pow(sumx,2.0)/(double)n));

*b0 = (sumy - ((*b1) * sumx)) / (double)n;

return;}

int main(void)

; double y = ;

double b0 , b1 ;

lsqe(x,y,nr(x),&b0,&b1);

printf("%lf,%lf\n",b0,b1);

return 0 ;

}

注:

1.pow(x,y);//其作用是計算x的y次方。

2.singma,應該是sigma,相當於

數學符號

σ。原文: 

① 一次函式線性擬合使用polyfit(x,y,1)

②多項式函式線性擬合使用 polyfit(x,y,n),n為次數

擬合曲線

x=[0.5,1.0,1.5,2.0,2.5,3.0],

y=[1.75,2.45,3.81,4.80,7.00,8.60]。

解:matlab程式如下:

x=[0.5,1.0,1.5,2.0,2.5,3.0];

y=[1.75,2.45,3.81,4.80,7.00,8.60];

p=polyfit(x,y,2)

x1=0.5:0.5:3.0;

y1=polyval(p,x1);

plot(x,y,'*r',x1,y1,'-b')

計算結果為:

p =0.5614 0.8287 1.1560

即所得多項式為y=0.5614x^2+0.8287x+1.15560

③非線性函式使用

lsqcurvefit(fun,x0,x,y)

a=nlinfit(x,y,fun,b0)

最小二乘法及其C 實現

監督學習中,如果 的變數是離散的,我們稱其為分類 如決策樹,支援向量機等 如果 的變數是連續的,我們稱其為回歸。回歸分析中,如果只包括乙個自變數和乙個因變數,且二者的關係可用一條直線近似表示,這種回歸分析稱為一元線性回歸分析。如果回歸分析中包括兩個或兩個以上的自變數,且因變數和自變數之間是線性關係,...

最小二乘法

include stdafx.h include include const int n 2 const int m 5 int sgn double x void lss double g n 1 int xm,int xn,double x m double p,double w m lss函式...

最小二乘法

在研究兩個變數之間的關係時,可以用回歸分析的方法進行分析。當確定了描述兩個變數之間的回歸模型後,就可以使用最小二乘法估計模型中的引數,進而建立經驗方程.簡單地說,最小二乘的思想就是要使得觀測點和估計點的距離的平方和達到最小.這裡的 二乘 指的是用平方來度量觀測點與估計點的遠近 在古漢語中 平方 稱為...