数学建模--(4)回归分析

目录

1.回归分析定义

2.回归分析的步骤

3.线性回归

3.1一元线性回归

模型结构

模型假设

最小二乘法估计回归系数

误差方差的估计

回归系数的区间估计和假设检验

有效性检验

利用一元线性回归模型进行预测

matlab实现

3.2多元线性回归

模型结构

误差方差计算

回归系数区间估计和假设检验

模型有效性检验

预测

例子

4.非线性回归 

基于Matlab的非线性回归分析

例子


1.回归分析定义

        因变量受自变量的关联性(非因果性)的影响,并且存在众多随机因素,难以用机理分析方法找出它们之间的关系;需要建立这些变量的数学模型,使得能够根据自变量的数值预测因变量的大小,或者解释因变量的变化。

        换句话说:回归分析是一种类相关性分析,就是通过分析已知数据和其造成的影响,来预测未知数据造成的影响。

2.回归分析的步骤

  1. 收集一组包含因变量和自变量的数据 选定因变量与自变量之间的模型,利用数据按照最小二乘准则计算模型中的系数;
  2. 利用统计分析方法对不同的模型进行比较,找出与数据拟合得最好的模型;
  3. 判断得到的模型是否适合于这组数据, 诊断有无不适合回归模型的异常数据;
  4. 利用模型对因变量作出预测或解释。

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年的人口数据,试对该地区的人口变化进行曲线拟合。

  1. 首先绘制散点图如下 :

根据此图,可以 看出两组数据走势满足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 ) ),得到拟合之后的结果: 

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西柚小萌新

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值