分享免费的编程资源和教程

网站首页 > 技术教程 正文

MATLAB中regress函数用法(多元线性回归)

goqiw 2025-01-08 13:37:20 技术教程 9 ℃ 0 评论

回归分析是研究一个随机变量与一个或多个普通变量之间的相关系的统计方法。如果做回归分析,有很多软件都已经封装好了的,我们只需直接调用就可以了。例如Matlab中的regress()就是做线性回归分析的函数之一。


regress多元线性回归的基础语法

b = regress(y,X)
[b,bint] = regress(y,X)
[b,bint,r] = regress(y,X)
[b,bint,r,rint] = regress(y,X)
[b,bint,r,rint,stats] = regress(y,X)
[___] = regress(y,X,alpha)
说明
b = regress(y,X) 返回向量 b,其中包含向量 y 中的响应对矩阵 X 中的预测变量的多元线性回归的系数
估计值。要计算具有常数项(截距)的模型的系数估计值,请在矩阵 X 中包含一个由 1 构成的列。
[b,bint] = regress(y,X) 还返回系数估计值的 95% 置信区间的矩阵 bint。
[b,bint,r] = regress(y,X) 还返回由残差组成的向量 r。
[b,bint,r,rint] = regress(y,X) 还返回矩阵 rint,其中包含可用于诊断离群值的区间。
[b,bint,r,rint,stats] = regress(y,X) 还返回向量 stats,其中包含 R2 统计量、F 统计量及其 p 值,
以及误差方差的估计值。矩阵 X 必须包含一个由 1 组成的列,以便软件正确计算模型统计量。
[___] = regress(y,X,alpha) 使用 100*(1-alpha)% 置信水平来计算 bint 和 rint。您可以指定上述任一
语法中的输出参数组合。
说明:b是线性方程的系数估计值,并且第一值表示常数,第二个值表示回归系数。
bint是系数估计值的置信度为95%的置信区间,r表示残差,rint表示各残差的置信区间,
stats是用于检验回归模型的统计量,有三个数值其中有表示回归的R2统计量和F以及显著性概率P值,
alpha为置信度。相关系数r^2越大,说明回归方程越显著;与F对应的概率P<alpha时候拒绝H0,
回归模型成立。

实例1

例子:目标函数:y=Ax1^2+Bx2^2+Cx1+Dx2+Ex1*x2+F (这是一个二次函数,两个变量,大写的字母是常数)

程序

%导入数据 
clc;
clear all;
close all;
y=[7613.51  7850.91  8381.86  9142.81 10813.6 8631.43 8124.94 9429.79 10230.81 ...  
10163.61 9737.56 8561.06 7781.82 7110.97]';  
x1=[7666 7704 8148 8571 8679 7704 6471 5870 5289 3815 3335 2927 2758 2591]';    
x2=[16.22 16.85 17.93 17.28 17.23 17 19 18.22 16.3 13.37 11.62 10.36 9.83 9.25]';  
X=[ones(size(y)), x1.^2,x2.^2, x1, x2, x1.*x2];  
%开始分析  
[b,bint,r,rint,stats] = regress(y,X)
%b储存的是系数
%bint储存的是系数的区间值,我们叫做置信区间,就是说是系数可能存在的范围,区间范围越小越好
%r是误差,也叫残差,rint是误差的区间
%stats分别对应4个检验,R?检验值、F检验值、p、绝对误差的方差s?
%R?越接近1说明拟合程度越好,F这个要查表,p这个一般小于0.05就可以了,s?越小越好
%F小于标准值说明拟合结果和原数据相差不大,可接受
plot3(x1,x2,y,'rp')%原始数据的散点图
title('原始数据的散点图');
rcoplot(r,rint);%作残差分析图
title('残差图的绘制');
xlabel('数据');
ylabel('残差');
z = b(1)+b(2).*x1.^2+b(3).*x2.^2+b(4).*x1+b(5).*x2+b(6).*x1.*x2;%回归模型
figure;
plot3(x1,x2,y,'rp');
hold on;
plot3(x1,x2,z,'b');%散点图及回归线
title('散点图及回归线');

运行结果



b =

   1.0e+04 *

   -1.3539
    0.0000
   -0.0058
   -0.0006
    0.4800
   -0.0000


bint =

   1.0e+04 *

   -2.6219   -0.0859
    0.0000    0.0000
   -0.0276    0.0160
   -0.0013    0.0001
    0.1196    0.8404
   -0.0001    0.0000


r =

 -439.7667
 -236.1417
 -143.4644
 -590.4204
  751.1702
  557.0807
 -244.7861
   49.4622
  637.6996
 -678.9521
  274.4335
  157.8124
  -80.3534
  -13.7737


rint =

   1.0e+03 *

   -1.2196    0.3401
   -1.4263    0.9540
   -0.9191    0.6322
   -1.5688    0.3879
    0.1114    1.3909
   -0.5330    1.6472
   -1.1689    0.6793
   -0.9775    1.0765
   -0.3985    1.6739
   -1.4390    0.0811
   -0.9192    1.4680
   -1.0888    1.4044
   -1.2712    1.1105
   -1.0174    0.9898


stats =

   1.0e+05 *

    0.0000    0.0001    0.0000    3.1622

实例2

加载 carsmall 数据集。确定权重和马力作为预测变量,里程作为响应。

程序


clc;
clear all;
close all;
% 加载 carsmall 数据集。确定权重和马力作为预测变量,里程作为响应。
load carsmall
x1 = Weight;
x2 = Horsepower;    % Contains NaN data
y = MPG;
X = [ones(size(x1)) x1 x2 x1.*x2];
b = regress(y,X)    % Removes NaN data
scatter3(x1,x2,y,'filled')
hold on
x1fit = min(x1):100:max(x1);
x2fit = min(x2):10:max(x2);
[X1FIT,X2FIT] = meshgrid(x1fit,x2fit);
YFIT = b(1) + b(2)*X1FIT + b(3)*X2FIT + b(4)*X1FIT.*X2FIT;
mesh(X1FIT,X2FIT,YFIT)
xlabel('Weight')
ylabel('Horsepower')
zlabel('MPG')
view(50,10)
hold off

运行结果


b =

   60.7104
   -0.0102
   -0.1882
    0.0000

本文内容来源于网络,仅供参考学习,如内容、图片有任何版权问题,请联系处理,24小时内删除。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表