首先介绍一下一元多项式回归。Matlab内置的方程为:
polyfit(x,y,n) %自变量为x,因变量为y,多项式的阶数为n,拟合的方法是最小二乘
polyval(p,x) %假设多项式的系数向量已知,为p。这个方程返回的是在x点的多项式的值。
例子:
- >>t=[0 0.3 0.8 1.1 1.6 2.3]; %定义自变量
- >>y=[0.6 0.67 1.01 1.35 1.47 1.25];%定义因变量
- >>plot(t,y,’o’) %图示数据
- >>p=polyfit(t,y,2) %拟合一个二阶多项式回归
- 可以图形化拟合的结果,就是将拟合的方程和数据一起呈现在图上。
- >>t2=0:0.1:2.8; %给定拟合函数的拟合范围
- >>y2=polyval(p,t2); %计算拟合的多项式的值
- >>figure %重新生成一个图形对话框,不会覆盖原来的图形。
- >>plot(t,y,’o’,t2,y2) %将拟合的方程和数据一起画图,可以直观的看一下所估计的方程的拟合度。
- >>y2=polyval(p,t); %原始数据的拟合值。
- >>res=y-y2; %计算残差
- >>figure,plot(t,res,’+’) %将残差表示在图上
残差的图形显示存在某种趋势,说明二阶多项式的拟合并不合适。事实上,5阶的多项式拟合更好一些,但是在经济分析中,用5阶的多项式是否有意义还是需要考虑的。
多项式拟合也可以算是1元回归,因为只有一个自变量。当自变量的个数大于等于2时,就要用到多元回归。回归的方法是最小二乘。
假设有两个自变量x1和x2,因变量y:
- >>x1=[.2 .5 .6 .8 1.0 1.1]’;
- >>x2=[.1 .3 .4 .9 1.1 1.4]’;
- >>y=[.17 .26 .28 .23 .27 .24]’;
构建一个数据矩阵:
- >>X=[ones(size(x1)) x1 x2];%包含截距项
- >>a=X\y; %这一步可以直接得出参数的最小二乘估计。
这样计算出来的结果与用a=(X’X)-1X’y的结果是相同的。这是因为 “\ ” 是matlab中的一个内置运算子。对于方程A*x=B,Matlab中求解的命令语句为:
>>x=A\B
其中矩阵A和B的行数必须相等。如果矩阵A是一个的行数和列数不相等,则A\B是按照最小二乘方法来估计x的。