matlab做三维线性拟合(多元线性回归,准确来说不叫插值)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lusongno1/article/details/83351344

matlab三维拟合(多元线性回归)

问题描述

今天同学问了我一个问题,大概意思是给了你三列输入数据,一列输出数据,想用一个线性超平面做一个最小二乘拟合(注意这里不能叫插值)。

一点思考

刚听到这个问题,同学说的是做插值,说想要做一个插值,这种说法不准确的,不想说回归的话,你可以说这是一个拟合。插值和拟合的区别在哪呢?插值要求你做出来的函数(比如说多项式插值)要经过所有给定的数据点,而拟合只要求尽可能地经过,但不要求所有点都落在函数上。“尽可能”,可以说是基于最小二乘的一种尽可能。一般我们说的n次多项式插值(一维),是给你若干个数据点,让你去做n次多项式插值,如果给定的点的个数小等于n+1,那么这个插值多项式是存在的,它能保证给定的已知数据点都落在这个多项式(图像)上,但是不一定唯一,如果给定的点大于n+1,那么不好意思,这时候,插值函数不存在,也就说不能插值。拟合,要求你给定一个函数表达式,里面带有未知数(输入),也带有一些未知的参数,现在让你去确定这些未知参数,使得这个表达式尽可能地去拟合一些输入点。
简单地说,就是插值要求已给定的每个点都精确落在函数上,单这个要求不满足时,插值就不存在。拟合是给定你函数形式,要求已给定的每个点都尽可能地落在函数上,它总是存在的。但给定n+1个点,那么n次多项式插值和n次多项式拟合就是一样样的,精确且唯一。

简单分析

同学说的这个问题啊,你要是一心觉得这是个插值问题,就容易想到matlab中的interp3这个函数,而且里面也有一个参数是选定为线性插值。为什么多个数据点,但是还会有线性插值这东西的存在呢?听起来跟我前面说的矛盾。其实啊,matlab的interp函数的插值是局部的,也就是说,它所谓的线性插值,插出来的是分段线性函数 ,用的是两个相邻的点来做线性插值,这和我们的要求是不一样的。
怎么办呢?对于三维的线性拟合问题,有一些内置的matlab函数是可以用的,比如说rstool、griddata、regress和fitlm等等。我这里以regress为例,来做个实现。

实现

regress函数是用来做回归的,所谓的多维的线性拟合,不就是多元线性回归么,如果学过一点统计的话,这个是不难理解的。
regress的基本用法就是[b,bint,r,rint,stats] = regress(y,X);

  • 这里的 b是拟合得到方程的系数矩阵,b(1)表示X的第一列代表的变量坐标分量的系数(一般设为常数项),b(2)表示X的第二列代表的变量坐标分量的系数(比如可以设为x1)……以此类推……
  • bint是回归系数的区间
  • r残差
  • rint置信区间
  • stats用于检验回归模型是否正确,分别是R的平方(越接近1越好),F值,P值(尽可能小,比如说P<0.05就表示拟合很好)。

此时,我care的只是b值多少,在看看stats的第一个值是不是接近1。
给出一个简单的代码示例如下:

clc
clear

%% 多元线性回归模型
y=[7613.51  7850.91  8381.86  9142.81 10813.6]';
x1=[7666 7704 8148 8571 8679 ]';
x2=[16.22 16.85 17.93 17.28 17.23]';
x3 = x1.*x2;
X=[ones(size(y,1)) x1 x2 x3];
[b,bint,r,rint,stats] = regress(y,X);
rcoplot(r,rint) 
%% 预测和计算
X_in = [8000 50 10000]';%测试数据,每一列表示一个变量
X_pre = [ones(size(X_in,1),1) X_in];
y_pre = X_pre*b;

这里的X在每一列变量构成的变量集前面再加一列1,表示拟合结果中,这一列“变量”对应的系数值为常数。那么你在输入新的数据做预测的时候,也得在变量前面加一列1。rcoplot拿来干嘛用呢?大概就是想用残差图让你直观地看看拟合的效果如何,看不同没事,之家看R方值是不是靠近1也是很够了。
因为是三维的,每个变量都有三个值(对应三个坐标分量),这个时候,一般是用点的颜色深浅来代表函数值,想要做个图直观看一下拟合效果是不大好弄的。

以上就是三维或者更高维数据点的全局拟合的一个方法,全局的拟合,不代表局部的插值,这个不能interp函数混为一谈。这种拟合放到统计中,叫做回归。回归往往和最小化误差和是分不开的,这种思想就叫做最小二乘。

猜你喜欢

转载自blog.csdn.net/lusongno1/article/details/83351344