MATLAB数学建模(三):回归

1.一元回归

   (1)一元线性回归

[ 例1 ] 近 10 年来,某市社会商品零售总额与职工工资总额(单位:亿元)的数据见表1,请建立社会商品零售总额与职工工资总额数据的回归模型。

                  

该问题是典型的一元回归问题,但先要确定是线性还是非线性,然后就可以利用对应的回归方法建立他们之间的回归模型了,具体实现的 MATLAB 代码如下:

(1)输入数据

clc, clear all, close all

x=[23.80,27.60,31.60,32.40,33.70,34.90,43.20,52.80,63.80,73.40];

y=[41.4,51.8,61.70,67.90,68.70,77.50,95.90,137.40,155.0,175.0];

(2)采用最小二乘回归

Figure

plot(x,y,'r*')                         %作散点图

xlabel('x(职工工资总额)','fontsize', 12)           %横坐标名

ylabel('y(商品零售总额)', 'fontsize',12)           %纵坐标名

set(gca,'linewidth',2);

% 采用最小二乘拟合

Lxx=sum((x-mean(x)).^2);

Lxy=sum((x-mean(x)).*(y-mean(y)));

b1=Lxy/Lxx;

b0=mean(y)-b1*mean(x);

y1=b1*x+b0;

hold on

 

plot(x, y1,'linewidth',2);

运行本节程序,会得到如图 1 所示的回归图形。在用最小二乘回归之前,先绘制了数据的散点图,这样就可以从图形上判断这些数据是否近似成线性关系。当发现它们的确近似在一条线上后,再用线性回归的方法进行回归,这样也更符合我们分析数据的一般思路。

                         

                                                                                                    图1

(3)采用 LinearModel.fit 函数进行线性回归

m2 = LinearModel.fit(x,y)

运行结果如下:

m2 =

Linear regression model:

    y ~ 1 + x1
Estimated Coefficients:

               Estimate      SE       tStat       pValue 

    (Intercept)    -23.549      5.1028    -4.615     0.0017215

    x1           2.7991     0.11456    24.435    8.4014e-09

R-squared: 0.987,  Adjusted R-Squared 0.985

F-statistic vs. constant model: 597, p-value = 8.4e-09

如下图,我们只需记住-23.594是一次函数的中x的系数,2.7991是一次函数中的常数项即可,其它的不用理会。

4)采用 regress 函数进行回归

Y=y';

X=[ones(size(x,2),1),x'];

[b, bint, r, rint, s] = regress(Y, X)

运行结果如下:

b =

  -23.5493

    2.7991

我们只需记住-23.594是一次函数的中x的系数,2.7991是一次函数中的常数项即可,其它的不用理会。