注册 登录
  • 注册时,本站名称为:RGB空格3S博客,注意中间的空格。
  • 2018.8.14本站全面接入google广告
  • 2017.2.14今天收到45条恶意评论(全是外文),故评论时请填写必要信息,匿名评论全部拉黑,迫不得已而为之
  • 2017.1.27,2017年春节及至,我谨代表本人祝大家新春快乐,本人年终总结文章请访问:2016年终总结
  • 为防止恶意转载,本站全面禁止复制,并添加图片水印:RGB 3S博客www.ixxin.cn。
  • 本站正式更名为RGB 3S博客,本站将撤消所有非3S内容,其将转移到新博客江湖时代

Matlab regress函数拟合多个变量分析

Matlab admin 23918次浏览 已收录 1个评论
[隐藏]

声明

本文系本人原创,转载请注明出处。

简介

拟合曲线,在matlab中有polyfit函数,有cftool工具,对于多项式,指数,对数都有很好的拟合,但是对于多个参数的拟合,比如x1,x2……用什么函数呢?
就会用到今天介绍的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)。

函数示例

参数都是matlab自带变量,放进去即可运行。

clc;clear all; 
load carsmall
x1 = Weight;
x2 = Horsepower;    % Contains NaN data
y = MPG;
X = [ones(size(x1)) x1 x2 x1.*x2];%创建常数,创建x1*x2矩阵
[b,bint,r,rint,stats] = regress(y,X)%拟合
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)%改变角度

结果

系数b:
60.7103608050491
-0.0101535475890010
-0.188206440954575
3.84948273160185e-05
bint:
51.3898445773766 70.0308770327216
-0.0132913573307914 -0.00701573784721061
-0.292829970434399 -0.0835829114747502
1.25893736802855e-05 6.44002809517514e-05
stats:
0.774173440544747
101.702587411461
1.17235917863432e-28
15.2363354389984

分析

b分别为各参量的系数
即A*x1+B*x2+C中的A,B,C
stats中,第一个为相关系数,越大说明相关性越大,第三个为P值,值越小,模型可靠性越大。p值很小(P<0.001),说明拟合模型有效。

结果图

regress

注意

Y与[X]行数相同,列数不同。
拟合多个变量,原理是最小二乘法。

参考文章

Matlab篇—-常用的回归分析Matlab命令(regress篇)
我的matlab中的regress,运行结果中stats为什么有四项?
http://blog.sina.com.cn/s/blog_618af1950100eyjn.html


xxin blog , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Matlab regress函数拟合多个变量分析
喜欢 (5)
支付宝[853060844@qq.com]
分享 (0)
admin
关于作者:
坐标山科大遥感系小鲜肉一枚。
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(1)个小伙伴在吐槽
  1. 好文章,内容文笔犀利.禁止此消息:nolinkok@163.com 格宾网 http://www.apdingkun.com/
    匿名2017-02-24 01:51 回复 Windows 7 | 未知浏览器