Matlab多元线性回归

曲线拟合问题的特点是,根据得到的若干有关变量的一组数据,寻找因变量与(一个或几个)自变量之间的一个函数。通常,函数的形式可以由经验、先验知识或对数据的直观观察决定,从数理统计的观点看,我们根据一个样本计算出的那些系数,只是它们的一个(点)估计,应该对它们作区间估计或假设检验,如果置信区间太大,那么系数的估计值是没有多大意义的。另外也可以用方差分析。方法对模型的误差进行分析,对拟合的优劣给出评价。简单地说,回归分析就是对拟合问题作的统计分析。

回归分析一般研究以下问题:

拿到一组数据后,我们首先需要对数据进行预处理,常用的标准化处理方式:

模型的评价指标,MSE、RMSE,用来判断模型的好坏,其值越小越好。

理论部分不再赘述,具体操作如下:

Matlab 命令regress实现多元线性回归,用的方法是最小二乘法,用 法是:

b=regress(Y,X)

其中 Y,X 为按因变量,自变量排列的数据,b 为回归系数估计值

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

这里 Y,X 同上,alpha 为显著性水平(缺省时设定为 0.05),b,bint 为回归系数估计值和 它们的置信区间,r,rint 为残差(向量)及其置信区间,stats 是用于检验回归模型的 统计量,有四个数值,第一个是 ,第二个是 F ,第三个 是与F 对应的概率 pp < α 拒绝H0 ,回归模型成立,第四个是残差的方差

残差及其置信区间可以用 **rcoplot(r,rint)**画图。

示例:

画出数据分布散点图:

可以看到随X增大Y也不断增大,大致呈线性趋势,于是考虑拟合

Matlab 复制代码
clc,clear;
clc,clear 
x1=[0.1:0.01:0.18]'; 
y=[42,41.5,45.0,45.5,45.0,47.5,49.0,55.0,50.0]'; 
x=[ones(9,1),x1]; 
[b,bint,r,rint,stats]=regress(y,x); 
b,bint,stats,rcoplot(r,rint) 

由残差图可以看出,第8个值为异常值。去除第8个数据之后:

Matlab 复制代码
clc,clear 
x1=[0.1:0.01:0.18]'; 
y=[42,41.5,45.0,45.5,45.0,47.5,49.0,55.0,50.0]'; 
idx = true(1, length(x1)); 
idx(8)=false;
x1=x1(idx);
y=y(idx);
x=[ones(length(x1),1),x1]; 
[b,bint,r,rint,stats]=regress(y,x); 
b,bint,stats,rcoplot(r,rint) 

此时没有异常值,所以应该使用修改之后的结果。

示例2:

画出y分别关于x1和x2 的散点图如下:

Matlab 复制代码
clc,clear;
x1=[120 140 190 130 155 175 125 145 180 150]'; 
x2=[100 110 90 150 210 150 250 270 300 250]'; 
y=[102 100 120 77 46 93 26 69 65 85]'; 
subplot(1,2,1)
plot(x1,y,'o')
subplot(1,2,2)
plot(x2,y,'o')

设回归模型为;

建模代码:

Matlab 复制代码
x=[ones(10,1),x1,x2]; 
[b,bint,r,rint,stats]=regress(y,x); 
b,bint,stats 

运行结果:

相关推荐
blammmp24 分钟前
Java:数据结构-枚举
java·开发语言·数据结构
何曾参静谧37 分钟前
「C/C++」C/C++ 指针篇 之 指针运算
c语言·开发语言·c++
暗黑起源喵43 分钟前
设计模式-工厂设计模式
java·开发语言·设计模式
WaaTong1 小时前
Java反射
java·开发语言·反射
Troc_wangpeng1 小时前
R language 关于二维平面直角坐标系的制作
开发语言·机器学习
努力的家伙是不讨厌的1 小时前
解析json导出csv或者直接入库
开发语言·python·json
Envyᥫᩣ1 小时前
C#语言:从入门到精通
开发语言·c#
-Nemophilist-1 小时前
机器学习与深度学习-1-线性回归从零开始实现
深度学习·机器学习·线性回归
童先生1 小时前
Go 项目中实现类似 Java Shiro 的权限控制中间件?
开发语言·go
lulu_gh_yu1 小时前
数据结构之排序补充
c语言·开发语言·数据结构·c++·学习·算法·排序算法