线性回归(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
%}
我有一些数据来自线性函数 (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 vectorb
of coefficient estimates for a multiple linear regression of the responses in vectory
on the predictors in matrixX
. The matrixX
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
%}