一元回归
建议使用Matlab自带的cftool工具,可以较好的拟合二维和三维数据。
cftool的使用
线性回归
一元线性回归
regress()函数主要用于线性回归,一元以及多元的。它可以提供更多的信息,残差之类的。polyfit()函数是利用多项式拟合。可以是线性也可以是非线性的。
regress函数
[B,BINT,R,RINT,STATS] = regress(Y,X)
参数解释:
- B:回归系数,是个向量(“the vector B of regression coefficients in the linear model Y = X*B”)。
- BINT:回归系数的区间估计(“a matrix BINT of 95% confidence intervals for B”)。
- R:残差( “a vector R of residuals”)。
- RINT:置信区间(“a matrix RINT of intervals that can be used to diagnose outliers”)。
- STATS:用于检验回归模型的统计量。有4个数值:判定系数R^2,F统计量观测值,检验的p的值,误差方差的估计。
ALPHA:显著性水平(缺少时为默认值0.05)。
x=[143 145 146 147 149 150 153 154 155 156 157 158 159 160 162 164]';
X=[ones(16,1) x];
Y = [88 85 88 91 92 93 93 95 96 98 97 96 98 99 100 102]';
[b,bint,r,rint,stats]=regress(Y,X,0.05);
%
b = [-16.0730 ,0.7194]
bint=[-33.7071 1.5612
0.6047 0.8340 ]
stats=[0.9282 180.9531 0.0000 1.7437]
(判定系数R^2,F统计量观测值,检验的p的值,误差方差的估计)
利用rcoplot(r,rint)可以观察残差的分布图。观察所得残差分布图,看到第2个数据的残差置信区间不含零点,此点视为异常点,剔除后重新计算。
删除后重新计算,可以发现置信区间缩小;R2、F变大,所以应该采用修改后的结果。
polyfit函数
[p,s] = polyfit(x,y,degree)即可。
多元线性回归
regress函数
之前所讲是一元的,如果是多元就增加X的行数!
b =regress( Y, X,p )其中:
非线性拟合
nlinfit()
逐步回归
stepwise()