matlab三次多样式对函数拟合,Matlab regress函数拟合多个变量分析

声明

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

简介

拟合曲线,在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.389844577376670.0308770327216

-0.0132913573307914-0.00701573784721061

-0.292829970434399-0.0835829114747502

1.25893736802855e-056.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),说明拟合模型有效。

结果图

matlab三次多样式对函数拟合,Matlab regress函数拟合多个变量分析_第1张图片

注意

Y与[X]行数相同,列数不同。

可拟合多个变量,原理是最小二乘法。

参考文章

xxin blog , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Matlab regress函数拟合多个变量分析!

你可能感兴趣的:(matlab三次多样式对函数拟合,Matlab regress函数拟合多个变量分析)