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

如何在Python中获取R中的回归残差标准误与预测标准误?

在Python中获取回归残差标准误与预测标准误的方法

嘿,我之前跨语言验证统计分析结果时也碰到过一模一样的问题,放心,这两个指标在Python里都有现成的实现,完全不用从头手动造轮子~下面分两种指标给你详细说明:

1. 残差标准误(Residual Standard Error, RSE)

对应R中lm()输出里的Residual standard error,在Python的statsmodels库中有两种直接获取的方式:

  • 方式一:从模型摘要里直接读取
    拟合完线性回归后,打印模型的summary结果,里面会直接显示Residual standard error这一项,和R的输出完全对应:

    import statsmodels.api as sm
    import numpy as np
    
    # 示例数据
    x = np.random.rand(100)
    y = 1.5*x + np.random.randn(100)*0.3
    X = sm.add_constant(x)  # 添加截距项
    
    # 拟合OLS模型
    model = sm.OLS(y, X)
    results = model.fit()
    
    # 打印摘要,查看残差标准误
    print(results.summary())
    

    输出里会有类似这样的行:Residual standard error: 0.298 on 98 degrees of freedom,直接读取即可。

  • 方式二:通过模型属性计算
    如果你需要把这个值提取出来做后续计算,可以用模型拟合结果的mse_resid(均方残差)属性,残差标准误就是它的平方根:

    rse = np.sqrt(results.mse_resid)
    print(f"残差标准误:{rse:.3f}")
    

    这个计算结果和summary里的数值完全一致,本质就是R中RSE的计算公式:sqrt(sum(residuals^2)/(n-p)),其中n是样本量,p是模型参数个数(包括截距)。

2. 预测标准误(Standard Error of Prediction)

对应R中包含残差方差的预测标准误,Python里有更直接的封装方法:

在statsmodels中,使用get_prediction()方法可以直接获取每个预测点的预测标准误:

# 获取预测结果(支持训练集或新数据)
pred_results = results.get_prediction(X)

# 转化为DataFrame,方便查看和提取
pred_summary = pred_results.summary_frame()

# se_mean 是拟合值的标准误(对应R的se.fit)
# se_pred 是你要的预测标准误(包含残差方差)
print(pred_summary[['mean', 'se_mean', 'se_pred']].head())

se_pred就是目标指标,它的计算公式是sqrt(mse_resid * (1 + X_new @ np.linalg.inv(X.T @ X) @ X_new.T)),statsmodels已经帮你封装好了,直接调用既高效又不容易出错。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:21:00