目录
1.回归分析定义
因变量受自变量的关联性(非因果性)的影响,并且存在众多随机因素,难以用机理分析方法找出它们之间的关系;需要建立这些变量的数学模型,使得能够根据自变量的数值预测因变量的大小,或者解释因变量的变化。
换句话说:回归分析是一种类相关性分析,就是通过分析已知数据和其造成的影响,来预测未知数据造成的影响。
2.回归分析的步骤
- 收集一组包含因变量和自变量的数据 选定因变量与自变量之间的模型,利用数据按照最小二乘准则计算模型中的系数;
- 利用统计分析方法对不同的模型进行比较,找出与数据拟合得最好的模型;
- 判断得到的模型是否适合于这组数据, 诊断有无不适合回归模型的异常数据;
- 利用模型对因变量作出预测或解释。
3.线性回归
3.1一元线性回归
模型结构:
模型假设
- 独立:对于不同的x , y x,yx,y相互独立
- 线性:y yy的期望是x xx的线性函数
- 齐次:对于不同的x , y x,yx,y的方差是常数
- 正态:对于给定的x , y x,yx,y服从正态分布
最小二乘法估计回归系数
得到结果:
是不是相当熟悉,没错这就是我们高中学习的回归方程的由来!
误差方差的估计
其中n表示样本数据的数量,Q表示模型所包含的参数的数量
回归系数的区间估计和假设检验
有效性检验
利用一元线性回归模型进行预测
matlab实现
b=regress(y,X)
[b,bint,r,rint,s]=regress(y,X,alpha)
- B:回归系数,
- BINT:
(置信区间:当给出某个估计值的95%置信区间为[a, b]时,可以理解为我们有95%的信心可以说样本的平均值介于a到b之间,而发生错误的概率为5%)
- R:残差(残差是指观测值与预测值(拟合值)之间的差,即是实际观察值与回归估计值的差)
- RINT:残差的置信区间。
- STATS:用于检验回归模型的统计量。有4个数值:1.判定系数R ^2(度量拟合优度的统计量,R²的值越接近1,说明回归直线对观测值的拟合程度越好),2.F统计量观测值,3.检验的p的值(p < 0.05时回归模型成立),4.误差方差的估计。
- y:因变量(列向量)
- X:1与自变量组成的矩阵
- alpha:显著性水平(若无值,则设为0.05)
3.2多元线性回归
模型结构
保证X^TX可逆只需要保证X满秩即可,n > m是因为观测y与变量x是有区别的,不然容易混淆。
误差方差计算
回归系数区间估计和假设检验
模型有效性检验
预测
例子
多元线性回归模型:已知某湖八年来湖水中COD浓度实测值(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.500, 0.535, 0.545, 0.550, 0.575]
x3=[2.170 ,2.554, 2.676, 2.713, 2.823, 3.088, 3.122, 3.262]
x4=[0.8922, 1.1610 ,0.5346, 0.9589, 1.0239, 1.0499, 1.1065, 1.1387]
y=[5.19, 5.30, 5.60,5.82,6.00, 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.500, 0.535, 0.545, 0.550, 0.575]
x3=[2.170 ,2.554, 2.676, 2.713, 2.823, 3.088, 3.122, 3.262]
x4=[0.8922, 1.1610 ,0.5346, 0.9589, 1.0239, 1.0499, 1.1065, 1.1387]
y=[5.19, 5.30, 5.60,5.82,6.00, 6.06,6.45, 6.95]
x=[ones(8,1),x1' x2' x3' x4']
[b,bint,r,rint,stats] = regress(y',x)
4.非线性回归
- 如果只有一个自变量,则称之为一元回归分析;
- 如果具有多个自变量,则称之为多元回归分析。
- 如果自变量与因变量之间的函数关系是线性函数,则称之为线性回归分析,
- 否则称之为非线性回归分析。
对于非线性回归分析,需要根据实际情况来确定函数类型,再根据已知的数据来估计非线性函数中的参数。常见的回归函数有幂函数、指数函数、对数函数、S型曲线函数,
S型曲线函数中常见的是Logistic回归模型,其函数表达式为
对于非线性回归,往往需要根据已知的数据绘制散点图,以此分析出数据的变化趋势,进而确定回归模型。
基于Matlab的非线性回归分析
[beta,r,j] = nlinfit(x,y,@function,b0)
- x表示自变量
- y表示因变量
- function表示回归函数的函数名
- b0表示回归函数中参数的初值
- beta表示回归参数的最优值
- r表示残差
- j表示雅克比矩阵
例子
现有某地区1971—2000年的人口数据,试对该地区的人口变化进行曲线拟合。
- 首先绘制散点图如下 :
根据此图,可以 看出两组数据走势满足Logistic模型,因此选择Logistic回归模型。
2. 新建一函数文件,文件名为ModelFunction.m,文件内容如下:
function y = ModelFunction( beta, x )
y = 1 ./ (beta(1) + beta(2) * exp(-x));
3.再创建一个新的M文件,文件名为TestData.m,其内容如下:
x=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30];
y=[33815 33981 34004 34165 34212 34327 34344 34458 34498 34476 34483 34488 34513 34497 34511 34520 34507 34509 34521 34513 34515 34517 34519 34519 34521 34521 34523 34525 34525 34527];
b0=[0.0001 0.00001];
[ beta, r, j ] = nlinfit( x, y, @ModelFunction, b0 )
4.运行结果如下:beta的输出值为
5.最后执行命令:plot( x, ModelFunction( beta, x ) ),得到拟合之后的结果: