Matlab线性回归分析(regress)

内容纲要

师弟的论文涉及一些线性回归的拟合。我查看下了下matlab 的线性回归函数regress 的用法,记录如下:

clear
clc
% 数据,按列,分别是x1 x2 x3 x4 y
data=[0.3   0.09    40  26  249
0.14    0.14    15  20  279
0.38    0.05    60  14  182
0.28    0.1 35  8   263
0.2 0.15    10  30  251.5
0.36    0.06    55  24  254.5
0.24    0.11    30  18  249
0.16    0.16    5   12  235
0.32    0.07    50  6   272
0.22    0.12    25  28  248.5
0.18    0.17    0   22  210
0.34    0.08    45  16  227.5
0.26    0.13    20  10  289
];
% x1~x4是4列数据,y是试验结果
x1 = data(:,1);
x2 = data(:,2);
x3 = data(:,3);
x4 = data(:,4);
y = data(:,5);
%拟合公式
X = [ones(size(x1)) x1 x2 x3 x4 x1.^2 x2.^2 x3.^2 x4.^2 x1.*x2 x2.*x3 x3.*x4];
%结果就是b
[b,bint,r,rint,stats] = regress(y,X);
%回归模型
z=X*b;
plot(y);
hold on;
plot(z,'o');

作图如下:

可以看出拟合数据和原始的拟合还可以。

其中

b的值是[常数项 x1 x2 x3 x4 x1.^2 x2.^2 ..]的系数。

stats表示的是拟合的效果,四个值分别是*R2* statistic, the*F*-statistic and its p-value, and an estimate of the error variance.

这些是数值统计的参数。但是我看了一些文献,发现很多文献中都存在一些问题,即拟合的试验数量非常有限,例如n个,而拟合的系数非常多,例如n-1或n-2个。

其中高中就学过,n个方程,n个未知数,一般情况下是有唯一解的,因此我们采用当系数过多时,我们的确可以得到比较好的拟合效果,即较为接近1的R2。但是实际过程中,我们所取得样本空间太少了,低到了接近参数系数的地步,这时候这个公式是否可以推广到更多的工况,存在非常大的疑惑。

我觉得理想的拟合公式,应该是有比较大的样本空间,这时候,拟合的有限参数具有很大R2, 这时候这个方程才是有意义的。

留下评论

电子邮件地址不会被公开。 必填项已用*标注