工具 | 常用函数拟合工具
时不时会用到线性回归,或自定义函数的拟合,做个记录备份,方便之后快速查找使用。以下记录几种matlab常用拟合工具。
1. cftool
简介 : 大杀器cftool排第一,二元以下的回归优选,优美的可视化界面,傻瓜式操作,无需教程,实时拟合,并给出拟合信息:SSE、R2R^2R2、 Adjusted R-square、 RMSE。如果需要重复调用,可以自动生成代码。
适用范围 :提供了线性、多项式、指数、傅里叶、高斯等等一系列函数拟合。当然,还可以自定义拟合函数。缺点是数据输入只有三维,也就是说最多只能二元回归。(可能我没找到增加变量维度的方法,如果大家有找到的分享一下呀)
使用:
2. regress(y,x)
简介 : 全称Multiple linear regression,顾名思义就是拿来线性回归的,可以多元回归,给出拟合的统计信息。特点是非常灵活,回归最常用函数。
适用范围 :多元线性回归。
使用:
[b,bint,r,rint,stats] = regress(y,X)
或 [___] = regress(y,X,alpha)
x:n*m矩阵;m为自变量个数
Y:n维列向量;
b : 回归系数,第一项为常数项,然后依次是x1,…xn的系数。当然,有的时候也有可能没有常数项,需要酌情判别。
bint : 回归系数的置信区间,默认95%,如果需要调整就在命令的地方调整alpha值。
r : 残差,相关系数。
rint : 残差的置信区间。
stats : 用于检验回归模型的统计量,里面包含四项分别是:相关系数R2R^2R2,F统计F-statistic,p-value,误差估计方差。
- X的构造可以非常灵活,可以将多元多项式转为线性模型,如构成 X=[ones(n,1),x1,x2,x12,x22…]X=[ones(n,1),x_1,x_2 , x_1^2,x_2^2…]X=[ones(n,1),x1,x2,x12,x22...]就变成下面rstool中的’purequadratic’模式。
3.rstool
简介 : response surface modeling,常用于响应面模型回归,提供可视化界面。
适用范围 :多元二项式回归,包含多元线性回归和二项式回归。一般二项式回归就用它吧。
使用:
rstool(x,y)
或rstool(x,y,model,alpha)
模式选择
- ‘linear’ — Constant and linear terms (有常数项,线性项,c+a1x1+a2x2+…c+a_1x_1+a_2x_2+…c+a1x1+a2x2+...)
- ‘purequadratic’ — Constant, linear, and squared terms(有常数项,线性项,平方项(没有交叉项,c+a1x1+a2x2+b1x12+b2x22+….c+a_1x_1+a_2x_2+b_1x_1^2+b_2x_2^2+….c+a1x1+a2x2+b1x12+b2x22+....)
- ‘interaction’ — Constant, linear, and interaction terms(有常数项,线性项,交叉项(没有平方项,c+a1x1+a2x2+b1x1x2+….c+a_1x_1+a_2x_2+b_1x_1x_2+….c+a1x1+a2x2+b1x1x2+....)
‘quadratic’ — Constant, linear, interaction, and squared terms(常数项、线性项、交叉项、平方项,全都有)
返回值:
beta : 多项式系数
rmse : 均方根方差,观测值与真值偏差的平方和与观测次数比值的平方根,衡量观测值与真值的偏差。
4.polyfit()
简介 : Polynomial curve fitting,多项式曲线拟合
适用范围 :任意多项式拟合。
使用:
p=polyfit(x,y,n)
[p,S,mu] = polyfit(x,y,n)
y_pred=polyval(p,x)
p : 拟合的多项式
S : 误差信息,包含三项
mu : 中心化值和缩放因子
最终系数返回也按多项式降幂排列。