回归模型
回归分析(regressionanalysis)
- 是确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法;
- 在大数据分析中,回归分析是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关系。这种技术通常用于预测分析,时间序列模型以及发现变量之间的因果关系。
- 按照自变量的多少,可分为一元回归分析和多元回归分析;
- 按照自变量和因变量的关系类型,可分为线性回归分析和非线性回归分析;
回归分析主要解决的问题:
- 通过分析大量的样本数据,确定变量之间的数学关系式,即回归函数f(x);
- 对所确定的数学关系式的可信程度进行各种统计检验,并区分出对某一特定变量影响较为显著的变量和影响不显著的变量;
- 利用所确定的数学关系式,根据一个或几个变量的值来预测或控制另一个特定变量的取值,并给出这种预测或控制的精确度;
回归分析的主要步骤
- 根据自变量与因变量的现有数据以及关系,初步设定回归方程;
- 求出合理的回归系数;
- 进行相关性检验,确定相关系数;
- 在符合相关性要求后,即可根据已得的回归方程与具体条件相结合,来确定事物的未来状况,并计算预测值的置信区间;
线性回归
- 在统计学中,线性回归是利用线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析;
- 回归函数是一个或多个回归系数的模型参数的线性组合:
y=W.*X+b - 线性回归模型通常使用最小二乘逼近来拟合。
MATLAB线性回归函数
b=regress(y,X)
- 返回向量b,其中包含向量y中响应对矩阵X中的预测变量的多元线性回归的系数估计值;
- 如果要计算具有常数项(截距)模型的系数估计值,需要在矩阵X中包含一个由1构成的列。
[b,bint]=regress(y,X)
- 进一步返回系数估计值的95%置信区间的矩阵bint。
[b,bint,r,rint,stats]=regress(y,X)
- 返回由残差组成的向量r,矩阵rint(包含可用于诊断离群值的区间),返回向量stats(包含R2统计量、F统计量及其p值,以及误差方差的估计值);
- 矩阵X必须包含一个由1组成的列,以便软件正确计算模型统计量;
[___]=regress(y,X,alpha)
- 使用l00*(l-alpha)%置信水平来计算bint和rint.
- 可以指定上述任一语法中的输出参数组合。
概念介绍
残差:
实际观察值与估计值(拟合值)之间的差。
离群值:
又称为逸出值,指的是数据中一个或几个数值与其他数值相比差异较大,或者具有明显的不同特征;
统计量:
统计理论中用来对数据进行分析、检验的变量。R2表示:决定系数,反应因变量的全部变异能通过回归关系被自变量解释的比例。
例题:
例:近10年来,某市社会商品零售总额与职工工资总额(单位:亿元)的数据如下表所示,请建立社会商品零售总额与职工工资总额数据的回归模型。
职工工资总额 | 23.8 | 27.6 | 31.6 | 32.4 | 33.7 | 34.9 | 43.2 | 52.8 | 63.8 | 73.4 |
商品零售总额 | 41.4 | 51.8 | 61.7 | 67.9 | 68.7 | 77.5 | 95.9 | 137.4 | 155.0 | 175.0 |
x=[23.8 27.6 31.6 32.4 33.7 34.9 43.2 52.8 63.8 73.4];
y=[41.4 51.8 61.7 67.9 68.7 77.5 95.9 137.4 155.0 175.0];figure;
plot(x,y,'o');
xlabel('职工工资总额');
ylabel('社会商品零售总额');Y=y';
X=[ones(size(x,2),1),x'];
[b,bint,r,rint,stats]=regress(Y,X)fprintf('回归方程:y=%.2f+%.2fx\n',b(1),b(2));
fprintf('R2=%.2f\n',stats(1));hold on;
plot(x,b(1)+b(2).*x,'r-');
plot(x,b(1)+b(2).*x+bint(1,2),'-b');
plot(x,b(1)+b(2).*x-bint(1,2),'-b');
legend('拟合曲线','置信区间','残差','Location','SouthEast');
例题:已知8年来洞庭湖湖水中污染物实测值Y与影响因素湖区工业产值x1、总人口数x2、捕鱼量x3、降水量x4资料表如下所示,建立污染物Y的水质分析模型。
x1 | 1.376 | 1.375 | 1.387 | 1.401 | 1.412 | 1.428 | 1.445 | 1.477 |
x2 | 0.450 | 0.475 | 0.485 | 0.5 | 0.535 | 0.545 | 0.55 | 0.575 |
x3 | 2.17 | 2.554 | 2.676 | 2.713 | 2.823 | 3.088 | 3.122 | 3.262 |
x4 | 0.8922 | 1.161 | 0.5346 | 0.9589 | 1.0239 | 1.0499 | 1.1065 | 1.1387 |
Y | 5.19 | 5.3 | 5.6 | 5.82 | 6 | 6.06 | 6.45 | 6.95 |
x1=[1.376 1.375 1.387 1.401 1.412 1.428 1.445 1.477];
x2=[0.450 0.475 0.485 0.5 0.535 0.545 0.55 0.575];
x3=[2.17 2.554 2.676 2.713 2.823 3.088 3.122 3.262];
x4=[0.8922 1.161 0.5346 0.9589 1.0239 1.0499 1.1065 1.1387];
y=[5.19 5.3 5.6 5.82 6 6.06 6.45 6.95];Y=y';
X=[ones(size(x1')),x1',x2',x3',x4'];
[b,bint,r,rint,stats]=regress(Y,X)fprintf('回归方程:Y=%.2f+%.2fx1+%.2fx2+%.2fx3+%.2fx4\n',b(1),b(2),b(3),b(4),b(5));
fprintf('R2=%.2f\n',stats(1));hold on;
plot(x1,b(1)+b(2).*x1+b(3).*x2+b(4).*x3+b(5).*x4,'r-');
plot(x1,b(1)+b(2).*x1+b(3).*x2+b(4).*x3+b(5).*x4+bint(1,2),'-b');
plot(x1,b(1)+b(2).*x1+b(3).*x2+b(4).*x3+b(5).*x4-bint(1,2),'-b');
legend('拟合曲线','置信区间','残差','Location','SouthEast');
其他函数
- 逐步回归:stepwise
- logistic回归:fitlm
- 非线性回归:nlinfit、nlparci、nlpredci、nlintool
- 偏最小二乘回归分析:plsregress
- 线性拟合工具箱:LinearModel