jiewenji 发表于 2023-7-14 13:43:17

matlab中在作线性回归时regress和polyfit背后的数学原理有何不同?

我构造两组数据 x1 和x2    方程是x2=a*x1+b 。求回归系数a 和b 。我故意让x1 和x2严格线性相关。代码如下:

x1=randi(8,8);
x1=x1(:,1);
x2=2*x1;
b=polyfit(x1,x2,1)

b=2   -1.51771994888562e-15

x1=;
b=regress(x2,x1)

b=2
    0

显然 polyfit后面的常数项只能近似等于0 。但是regress是完全等于0。matlab官方文档说polyfit是基于“基于最小二乘指标”那么regress是基于什么指标或属于原理呢?之所以polyfit和regress的回归结果常数项有细微差别。是因为背后的数学 原理不同?还是因为一个是数值解?另外一个是解析解的原因呢?

nyy 发表于 2023-7-14 13:58:18

真受不了,这明显是数值误差!

jiewenji 发表于 2023-7-14 15:46:42

nyy 发表于 2023-7-14 13:58
真受不了,这明显是数值误差!

我没说不是数值误差,那regress为什么没有数值误差?

KeyTo9_Fans 发表于 2023-7-14 19:53:19

我和你的结果是相反的,我是前者误差较小,后者误差较大:


由此可见,两者都是有误差的

具体误差有多大,取决于randi(8,8)随机出来的是哪些整数

jiewenji 发表于 2023-7-14 20:50:33

KeyTo9_Fans 发表于 2023-7-14 19:53
我和你的结果是相反的,我是前者误差较小,后者误差较大:




是的,确实有误差。我在想regress是不是默认保留的位数比polyfit要少。所以遇到这种极小的误差就直接取整了。
页: [1]
查看完整版本: matlab中在作线性回归时regress和polyfit背后的数学原理有何不同?