MATLAB regress命令

1 regress命令

 

    用于一元及多元线性回归,本质上是最小二乘法。在Matlab 命令行窗口输入help 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:回归系数,是个向量(“the vector B of regression coefficients in the  linear model Y = X*B”)。
  • BINT:回归系数的区间估计(“a matrix BINT of 95% confidence intervals for B”)。
  • R:残差( “a vector R of residuals”)。
  • RINT:置信区间(“a matrix RINT of intervals that can be used to diagnose outliers”)。
  • STATS:用于检验回归模型的统计量。有4个数值:判定系数R^2,F统计量观测值,检验的p的值,误差方差的估计。
  • ALPHA:显著性水平(缺少时为默认值0.05)。

 

2 regress函数例程

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

应用实例:

%导入数据   
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]'; 
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]'; 
X=[ones(size(y)) x1.^2 x2.^2 x1 x2 x1.*x2];  
  
%开始分析  
[b,bint,r,rint,stats] = regress(y,X);
 
其中, b(1)=F(最后那个常数项)
           b(2)=A,b(3)=B,b(4)=C,b(5)=D,b(6)=E。bint为b的95%置信区间。

比较重要的stats分析stats的第三个参数为F检测的P值,p值很小(P<0.001),说明拟合模型有效。

 

可视化操作:

figure,scatter3(x1,x2,y,'filled') %scatter可用于画散点图
%拟合,三维视图显示  
hold on  %在刚刚那副散点图上接着画  
x1fit = min(x1):100:max(x1);   %设置x1的数据间隔  
x2fit = min(x2):1:max(x2);     %设置x2的数据间隔  
[X1FIT,X2FIT] = meshgrid(x1fit,x2fit);    %生成一个二维网格平面,也可以说生成X1FIT,X2FIT的坐标  
YFIT=b(1)+b(2)*X1FIT.^2+b(3)*X2FIT.^2+b(4)*X1FIT +b(5)*X2FIT+b(6)*X1FIT.*X2FIT;    %代入已经求得的参数,拟合函数式  
mesh(X1FIT,X2FIT,YFIT)    %X1FIT,X2FIT是网格坐标矩阵,YFIT是网格点上的高度矩阵  
view(10,10)  %改变角度观看已存在的三维图,第一个10表示方位角,第二个表示俯视角。  
             %方位角相当于球坐标中的经度,俯视角相当于球坐标中的纬度  
xlabel('x1') %设置x轴的名称  
ylabel('x2') %设置y轴的名称  
zlabel('y')  %设置z轴的名称

 

下面来用一组数据对上面的效果进行检测,自己建立一个方程:

目标函数:y=5x1^2+7x2^2+2x1+3x2+8x1*x2+10

%测试数据
x1_test = [-1, 0, 1, -1, 0, 1]';  %
x2_test = [-1, -1, 0, 1, 0, 1]'; %
y_test = [25, 14, 17, 15, 10, 35]'; %

X_test=[ones(size(y_test)) x1_test.^2 x2_test.^2 x1_test x2_test x1_test.*x2_test];  

%开始分析  
[b_test,bint_test,r,rint_test,stats_test] = regress(y_test,X_test); 

figure,
scatter3(x1_test,x2_test,y_test,'filled') %scatter可用于画散点图
%拟合,三维视图显示  
hold on  %在刚刚那副散点图上接着画  
x1fit = min(x1_test):0.1:max(x1_test);   %设置x1的数据间隔  
x2fit = min(x2_test):0.1:max(x2_test);     %设置x2的数据间隔  
[X1FIT,X2FIT] = meshgrid(x1fit,x2fit);    %生成一个二维网格平面,也可以说生成X1FIT,X2FIT的坐标  
YFIT=b_test(1)+b_test(2)*X1FIT.^2+b_test(3)*X2FIT.^2+b_test(4)*X1FIT +b_test(5)*X2FIT+b_test(6)*X1FIT.*X2FIT;    %代入已经求得的参数,拟合函数式  
mesh(X1FIT,X2FIT,YFIT)    %X1FIT,X2FIT是网格坐标矩阵,YFIT是网格点上的高度矩阵  
view(10,10)  %改变角度观看已存在的三维图,第一个10表示方位角,第二个表示俯视角。  
             %方位角相当于球坐标中的经度,俯视角相当于球坐标中的纬度  
xlabel('x1') %设置x轴的名称  
ylabel('x2') %设置y轴的名称  
zlabel('y')  %设置z轴的名称

 拟合效果如下:


 

参考文献:

https://wenku.baidu.com/view/5b7cd4307cd184254b3535ac.html

回答: Matlab中的regress()函数用于进行多元线性回归分析。该函数返回一个系数估计向量b,表示在给定的数据集x和y下的多元线性回归模型的系数。其中,矩阵x必须包含一列全为1的列向量,这是因为多元线性回归模型中需要考虑截距项。\[1\] regress()函数的参数包括: - B:回归系数向量,表示线性模型Y = X*B中的系数。 - BINT:回归系数的区间估计,是一个矩阵,表示回归系数的95%置信区间。 - R:残差向量,表示回归模型的残差。 - RINT:置信区间,是一个矩阵,用于诊断异常值。 - STATS:用于检验回归模型的统计量,包括判定系数R^2、F统计量观测值、检验的p值和误差方差的估计。 - ALPHA:显著性水平,默认值为0.05。\[3\] 综上所述,regress()函数是用于进行多元线性回归分析的函数,可以通过给定的数据集x和y求解回归系数,并提供了一些统计量用于评估回归模型的拟合程度和显著性。 #### 引用[.reference_title] - *1* *2* [matlab中多元线性回归regress函数精确剖析(附实例代码)](https://blog.csdn.net/m0_66360845/article/details/127441772)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [【MATLAB】----常用的回归分析Matlab命令(regress篇)](https://blog.csdn.net/qq1437722579/article/details/95196737)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值