You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

坐标轴反转后最佳拟合直线参数不符合预期的原因咨询

问题:坐标轴反转后线性拟合结果不符合预期

我绘制了一组数据的散点图并叠加了最佳拟合直线。因数据特性,将y轴数据移至x轴(反转坐标轴)更符合概念逻辑。设原最佳拟合直线的截距为a1、斜率为b1,反转后重新拟合的截距为a2、斜率为b2。由于原斜率b1接近1,我预期a2近似等于-a1,且b1与1的差值和b2与1的差值符号近似相反。

最初我使用numpy.polyfit(deg=1)进行拟合(已了解该方法已过时),结果如下:

before axes inversion np.polyfit gave intercept of 0.016 and slope of 1.005
 after axes inversion np.polyfit gave intercept of 0.002 and slope of 0.75

新拟合的截距和斜率不符合预期。随后我改用stats.linregress,结果一致:

before axes inversion stats.linregress gave intercept of 0.016 and slope of 1.005
 after axes inversion stats.linregress gave intercept of 0.002 and slope of 0.75

两种算法结果一致,说明问题出在我的认知上。我推测可能的原因:1)对坐标轴反转的对称性假设错误;2)需为拟合算法添加额外参数;3)其他未知因素。请问实际原因是什么?

实际原因

核心问题在于混淆了“坐标轴反转后取原直线的反函数”和“交换x/y后重新做线性回归”这两个完全不同的操作。

线性回归的本质是最小化预测值与观测值的垂直距离平方和:

  • 原拟合是最小化 $\sum(y_i - (a1 + b1x_i))^2$
  • 交换x/y后重新拟合是最小化 $\sum(x_i - (a2 + b2y_i))^2$

这和求原直线的反函数(即 $x = (-a1/b1) + (1/b1)y$)完全不是一回事,哪怕原斜率接近1也不例外。

只有当数据点完美落在原直线上时,交换x/y后的拟合结果才会和原直线的反函数一致。但实际数据存在噪声,两种拟合的优化目标不同,结果自然会偏离预期。

比如原拟合公式为 $y = 0.016 + 1.005x$,它的反函数是 $x ≈ -0.0159 + 0.995y$,但交换x/y后的线性回归是找一条直线让x的预测值与实际x的垂直距离平方和最小,优化目标的差异直接导致了a2、b2和反函数参数的偏差。

另外,你假设的“对称性”仅在无噪声的理想数据下成立,实际数据的噪声会打破这种对称性,进一步导致拟合结果偏离预期。

内容的提问来源于stack exchange,提问作者sil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 19:42:19