Matlab----常用的回归分析命令:regress

回归例子:

  %双曲线y=a/x+b
a1=[1./x',ones(13,1)];
ab1=regress(y',a1);
yy2=ab1(1)./x+ab1(2);

a1=【f1,f2,f3,f4……】
b=regress(y,a1):求y关于a1的线性系数,即
y=b(1)*f1+b(2)*f2+b(3)*f3+……

1 regress命令

用于一元及多元线性回归,本质上是最小二乘法。在Matlab 2014a中,输入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+Bx1^2+Cx1+Dx2+Ex1*x2+F  (这是一个二次函数,两个变量,大写的字母是常数)

 
%导入数据
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为对应的参数 b(1)为F(最后那个常数项) ,b(2)为A(第一个参数),b(3)为B,b(4)为C,b(4)为D,b(5)为E。bint为b的95%置信区间。

比较重要的stats分析:

在这里插入图片描述
stats的第三个参数为F检测的P值,p值很小(P<0.001),说明拟合模型有效。(这里的分析技巧,以后有时间的话,会专门总结。)

(注:*号是乘法的意思,*前面的数是矩阵的系数。)

下面数据可视化看下。

 
%以下绘图查看拟合效果
<pre name="code" class="cpp">

scatter3(x1,x2,y,‘filled’) %scatter可用于画散点图

截图:![在这里插入图片描述](https://img-blog.csdnimg.cn/20200531210114649.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1dhbGxfZV80Nw==,size_16,color_FFFFFF,t_70)

后续的分析如下:

%拟合,三维视图显示
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轴的名称</span>

最终结果截图:

在这里插入图片描述

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值