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 

运行结果:

相关推荐
bst@微胖子1 小时前
Python高级语法之selenium
开发语言·python·selenium
王小义笔记1 小时前
Postman如何流畅使用DeepSeek
开发语言·测试工具·lua·postman·deepseek
java1234_小锋3 小时前
一周学会Flask3 Python Web开发-request请求对象与url传参
开发语言·python·flask·flask3
流星白龙5 小时前
【C++】36.C++IO流
开发语言·c++
诚信爱国敬业友善6 小时前
常见排序方法的总结归类
开发语言·python·算法
nbsaas-boot7 小时前
Go 自动升级依赖版本
开发语言·后端·golang
架构默片7 小时前
【JAVA工程师从0开始学AI】,第五步:Python类的“七十二变“——当Java的铠甲遇见Python的液态金属
java·开发语言·python
不只会拍照的程序猿8 小时前
从插入排序到希尔排序
java·开发语言·数据结构·算法·排序算法
小哥山水之间8 小时前
在 Python 中操作 Excel 文件
开发语言·python·excel
就爱学编程9 小时前
C语言预编译
c语言·开发语言