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

使用statsmodels与numpy polyfit做线性回归得到不同截距值的原因

两个回归截距不同的原因

核心问题出在两个模型的被解释变量(y)处理方式不一致,具体分析如下:

  • Statsmodels 模型的 y 变量:
    你用的是 np.log(NON_UND),拟合的回归方程为:
    log(NON_UND) = 截距 + 斜率 × log(Food_consumption)
    这里得到的截距是 5.4433。

  • Numpy polyfit 模型的 y 变量:
    从你得到的截距数值(10.04846693)反推,你实际应该是对 NON_UND × 100 取了对数(而非代码里写的 log(NON_UND) × 100)。因为:
    log(NON_UND × 100) = log(NON_UND) + log(100)
    把 Statsmodels 的截距代入计算:5.4433 + log(100) ≈ 5.4433 + 4.6052 = 10.0485,和你得到的 Numpy 截距完全匹配。

如果确实是代码笔误(把*100放在了 log 函数内部而非外部),那截距差异的本质是:你给原变量做了“先放大100倍再取对数”的变换,这等价于在原 log(NON_UND) 基础上加了一个固定常数 log(100),因此回归截距会同步增加这个常数。

如果代码没有笔误,那唯一可能是两次计算用的数据集存在差异(比如 Data2 在中间被修改过),但从数值匹配度来看,前者的可能性远更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 00:43:10