线性回归(regress)与多项式拟合(polyfit)的差异

Linear regression (regress) discrepancy with polynomial fit (polyfit)

我有一些数据来自线性函数 (y=mx+c),其中 m=4, c=1(所以:y=4x+1)。

当我尝试使用 regress 取回系数时,我得到一个 R2<1 和一个看似随机的 m 值:

x = [1 2 3 4]
y = [5 9 13 17]
[m,bint,r,rint,stats] = regress(y',x');

%{
>> R = stats(1) % Coefficient of determination
R =
     1
>> m % Linear function coefficients
m = 
     4.333333333333333
%}

polyfit 正确地做到了这一点:

P = polyfit(x,y,1);

%{
>> P(1)
ans =
    4.000000000000000
>> P(2)
ans =
    1.000000000000000
%}

为什么会这样?

您的问题根源不在文档或 regress 中,其中指出:

b = regress(y,X) returns a vector b of coefficient estimates for a multiple linear regression of the responses in vector y on the predictors in matrix X. The matrix X must include a column of ones.

如果我们在第 2nd 个输入中包含一列 1,我们将得到所需的结果:

x = [1 2 3 4].';
y = [5 9 13 17].';
[m,bint,r,rint,stats] = regress(y,[ones(size(x)) x]);

%{
Results:
m =
    1.0000
    4.0000
bint =
    1.0000    1.0000
    4.0000    4.0000
r =
   1.0e-14 *
    0.1776
    0.1776
    0.1776
         0
rint =
   1.0e-13 *
    0.0178    0.0178
   -0.2190    0.2545
   -0.2190    0.2545
   -0.2141    0.2141
stats =
   1.0e+31 *
    0.0000    1.6902    0.0000    0.0000
%}