第一:用所給樣本求出兩個(gè)相關(guān)變量的(算術(shù))平均值
第二:分別計(jì)算分子和分母:(兩個(gè)公式任選其一)分子
第三:計(jì)算b:b=分子/分母
用最小二乘法估計(jì)參數(shù)b,設(shè)服從正態(tài)分布,分別求對(duì)a、b的偏導(dǎo)數(shù)并令它們等于零。
先求x,y的平均值X,Y,再用公式代入求解:
后把x,y的平均數(shù)X,Y代入a=Y-bX
求出a并代入總的公式y(tǒng)=bx+a得到線性回歸方程
(X為xi的平均數(shù),Y為yi的平均數(shù))
#include
#include
void main()
{
float x[8] = {300.0 , 400.0 , 400.0 , 550.0 , 720.0 , 850.0 , 900.0 , 950.0};
float y[8] = {300.0 , 350.0 , 490.0 , 500.0 , 600.0 , 610.0 , 700.0 , 660.0};
int i;
int n;
float x_ave, y_ave, a, b, b1, mxy, sum_x, sum_y, lxy, xiSubSqr;
n = sizeof(x) / sizeof(x[0]);
a = b = mxy = sum_x = sum_y = lxy = xiSubSqr = 0.0;
for (i = 0; i < n; i++)
{
sum_x += x[i];
sum_y += y[i];
}
x_ave = sum_x / n;
y_ave = sum_y / n;
for (i = 0; i != n; i++)
{
lxy += (x[i] - x_ave) * (y[i] - y_ave);
xiSubSqr += (x[i] - x_ave) * (x[i] - x_ave);
}
b = lxy / xiSubSqr;
a = y_ave - b * x_ave;
printf("y=%0.2fx+%0.2f\n", b, a);
system("pause");
}
運(yùn)行代碼如下:
-
算法
+關(guān)注
關(guān)注
23文章
4613瀏覽量
92957 -
C語(yǔ)言
+關(guān)注
關(guān)注
180文章
7605瀏覽量
136932 -
線性回歸
+關(guān)注
關(guān)注
0文章
41瀏覽量
4308
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論