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 

运行结果:

相关推荐
Sylvia-girl1 小时前
Java——抽象类
java·开发语言
Yana.nice3 小时前
Bash函数详解
开发语言·chrome·bash
tomorrow.hello5 小时前
Java并发测试工具
java·开发语言·测试工具
晓13136 小时前
JavaScript加强篇——第四章 日期对象与DOM节点(基础)
开发语言·前端·javascript
老胖闲聊6 小时前
Python I/O 库【输入输出】全面详解
开发语言·python
她说人狗殊途7 小时前
java.net.InetAddress
java·开发语言
天使day7 小时前
Cursor的使用
java·开发语言·ai
Dxy12393102167 小时前
Python ExcelWriter详解:从基础到高级的完整指南
开发语言·python
源代码•宸9 小时前
C++高频知识点(十三)
开发语言·c++·经验分享·面经
wa的一声哭了9 小时前
python基础知识pip配置pip.conf文件
java·服务器·开发语言·python·pip·risc-v·os