hrefspace

 找回密码
 立即注册
搜索
热搜: PHP PS 程序设计
查看: 301|回复: 4

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

[复制链接]

523

主题

523

帖子

1599

积分

大司空

Rank: 5Rank: 5

积分
1599
发表于 2023-9-26 09:25:45 | 显示全部楼层 |阅读模式
我构造两组数据 x1 和x2    方程是x2=a*x1+b 。求回归系数a 和b 。我故意让x1 和x2严格线性相关。代码如下:
  1. x1=randi(8,8);x1=x1(:,1);x2=2*x1;b=polyfit(x1,x2,1)
复制代码

b=2     -1.51771994888562e-15
  1. x1=[x1 ones(size(x1))];b=regress(x2,x1)
复制代码

b=2
    0

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

使用道具 举报

0

主题

177

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2023-9-26 09:26:30 | 显示全部楼层
真受不了,这明显是数值误差!
回复

使用道具 举报

0

主题

216

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2023-9-26 09:26:58 | 显示全部楼层
我没说不是数值误差,那regress为什么没有数值误差?
回复

使用道具 举报

2

主题

181

帖子

41

积分

新手上路

Rank: 1

积分
41
发表于 2023-9-26 09:27:56 | 显示全部楼层
我和你的结果是相反的,我是前者误差较小,后者误差较大:


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

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

0

主题

212

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2023-9-26 09:28:07 | 显示全部楼层
是的,确实有误差。我在想regress是不是默认保留的位数比polyfit要少。所以遇到这种极小的误差就直接取整了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|hrefspace

GMT+8, 2024-11-25 11:54 , Processed in 0.062436 second(s), 22 queries .

Powered by hrefspace X3.4 Licensed

Copyright © 2022, hrefspace.

快速回复 返回顶部 返回列表