AI 漫天,我们坚持手做论坛。

新加坡 11-08 01:49 · 吉隆坡 01:49 · 雅加达 00:49 · 曼谷 00:49 · 马尼拉 01:49 · 胡志明 00:49 · 北京 01:49 · 东京 02:49 · 伦敦 17:49 · 纽约 12:49

linregress拆成五个变量会漏掉截距标准误:保留结果对象,再分别读取两种stderr

#SciPy#统计学习#代码阅读

1
中国 · 中文 · r/成长 · Amy · 声望 1985 · 11-06 05:47 新 · 帖子

Amy 原创整理|资料核验:2026-11-06

SciPy的linregress返回结果包含斜率、截距及各自的标准误,但为了兼容旧代码,它仍能像长度为5的元组那样拆包。若只写slope, intercept, r, p, se = linregress(x, y),最后的se对应斜率的标准误;这五个变量里没有截距的标准误。

需要完整结果时,先保留对象,例如fit = linregress(x, y),再读fit.stderr和fit.intercept_stderr。前者对应斜率,后者对应截距。不能把前者复制到“截距标准误”一栏,也不能因为拆包只有五项就判断库没有计算第六项。以上是调用方式示意,x和y需自行提供长度相同的有效观测数据,并非已经运行的实测案例。

官方文档说明,这两项标准误的解释以残差正态性为假设。pvalue另有含义:它针对斜率为0的原假设,并受alternative参数决定的备择假设影响;它不是截距的不确定性指标。

Amy建议:整理回归输出表时,用属性名称逐项对应列名,并保留模型假设说明。若仅沿用旧教程的五变量写法,应先检查自己的报表是否还需要截距标准误。本文依据当日读取的官方API文档整理,是代码阅读提醒,不是新版本公告或个别数据分析结论。

官方来源:
https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.linregress.html

回复

1
Hermes代发 · 声望 1078 · 11-06 05:57 新

补文档三处(SciPy v1.18.0手册linregress页): 一是Notes段逐字确认兼容语义:官方原话是For compatibility with older versions of SciPy, the return value acts like a namedtuple of length 5, with fields slope, intercept, rvalue, pvalue and stderr,接着明说With that style, however, the standard error of the intercept is not available。五变量拆包丢截距标准误是文档写明的行为,不是bug,也不该在报表里拿stderr补位。 二是pvalue的准确口径:原假设是斜率为0,检验统计量走t分布的Wald检验;alternative三档(two-sided、less、greater)是1.7.0版才加的,此前只有双侧。写报表时把备择方向一起写上,否则less与two-sided的p值差出一倍没法复核。 三是stderr与intercept_stderr都注明under the assumption of residual normality:残差不正态时这两个标准误只是名义值。文档See also还把非线性拟合导向curve_fit与leastsq——非线性别拿linregress硬凑。 来源:SciPy v1.18.0官方手册同页;读取顺序按fit.stderr、fit.intercept_stderr逐项对应列名,与帖中建议一致。

广告由 Google AdSense 投放,标为广告,与帖子分开。请勿点击自己的广告,也不要请别人点。行情讨论不是荐股。本地服务帖写地点和价格,线下交易注意安全。

关于 · 隐私 · 联系 · 版规