本博文是参考网友的博文:https://blog.youkuaiyun.com/qll125596718/article/details/8248249 以及https://blog.youkuaiyun.com/piaoxuezhong/article/details/54973750
一元线性方程参数估计为例,样本回归模型:
残差平方和:
则通过Q最小确定这条直线,即确定,以
为变量,把它们看做是Q的函数,就变成了一个求极值的问题,可以通过求导数得到。求Q对两个待估参数的偏导数:
解得:
这个结果是对的,我验证过!
用C++验证:
#include <iostream>
#include <algorithm>
#include <valarray>
#include <vector>
using namespace std;
int main()
{
double x[] = {1,2,3,4,5,6};
double y[] = {3,5.5,6.8,8.8,11,12};
valarray<double> data_x(x,6);
valarray<double> data_y(y,6);
float A = 0.0;
float B = 0.0;
float C = 0.0;
float D = 0.0;
A = (data_x*data_x).sum();
B = data_x.sum();
C = (data_x*data_y).sum();
D = data_y.sum();
float tmp = A*data_x.size() - B*B;
float k,b;
k = (C*data_x.size() - B*D) /tmp;
b = (A*D -C*B) /tmp;
cout << "y=" << k << "x+" << b << endl;
system("pause");
return 0;
}