StatsModels回归诊断可视化完全指南

StatsModels回归诊断可视化完全指南

前言

回归分析是统计学中最常用的方法之一,但如何评估回归模型的质量和假设是否满足却是一个复杂的问题。StatsModels作为Python中强大的统计分析库,提供了一系列回归诊断可视化工具,本文将深入解析这些工具的使用方法和解读技巧。

环境准备

首先我们需要导入必要的库并设置绘图参数:

import matplotlib.pyplot as plt
import numpy as np
import statsmodels.api as sm
from statsmodels.formula.api import ols

plt.rc("figure", figsize=(16, 8))
plt.rc("font", size=14)

Duncan职业声望数据集分析

数据加载与模型构建

我们使用Duncan的职业声望数据集,该数据集包含了不同职业的收入、教育水平和声望评分:

prestige = sm.datasets.get_rdataset("Duncan", "carData", cache=True).data
prestige_model = ols("prestige ~ income + education", data=prestige).fit()

影响力分析图(Influence Plot)

影响力分析图是诊断回归模型的重要工具,它展示了每个观测点的学生化残差与杠杆值的关系:

fig = sm.graphics.influence_plot(prestige_model, criterion="cooks")

图中:

  • x轴表示杠杆值(leverage),衡量观测点对模型拟合的影响程度
  • y轴表示学生化残差(studentized residual),标准化后的残差
  • 点的大小反映Cook距离,用于识别强影响力点

从图中我们可以识别出几个异常点:

  • contractor和reporter:低杠杆但大残差
  • RR.engineer:小残差但高杠杆
  • conductor和official:同时具有高杠杆和大残差,对模型影响最大

偏回归图(Partial Regression Plot)

在多元回归中,偏回归图帮助我们理解在控制其他变量后,某个自变量与因变量的关系:

fig = sm.graphics.plot_partregress("prestige", "income", ["education"], data=prestige)

解读要点:

  1. 拟合线的斜率等于该变量在完整模型中的回归系数
  2. 截距应为0
  3. 可以直观识别影响关系的异常点

成分加残差图(CCPR Plot)

CCPR图展示了在考虑其他变量影响后,某个自变量与因变量的关系:

fig = sm.graphics.plot_ccpr(prestige_model, "education")

图中包含:

  • 成分部分:展示不考虑残差时的关系
  • 残差部分:展示实际观测值与拟合值的差异
  • 综合来看可以评估线性假设是否成立

回归诊断综合图

StatsModels提供了综合诊断函数,一次性展示多个诊断图:

fig = sm.graphics.plot_regress_exog(prestige_model, "education")

该图包含四个子图:

  1. 因变量与自变量的关系及拟合线
  2. 残差与自变量的关系
  3. 偏回归图
  4. CCPR图

州犯罪率数据集分析

模型构建

我们使用美国各州的犯罪率数据构建回归模型:

dta = sm.datasets.statecrime.load_pandas().data
crime_model = ols("murder ~ urban + poverty + hs_grad + single", data=dta).fit()

杠杆-残差平方图

fig = sm.graphics.plot_leverage_resid2(crime_model)

该图是另一种形式的影响力诊断图:

  • x轴:杠杆值
  • y轴:标准化残差的平方
  • 可以识别高杠杆点和高残差点

稳健回归处理异常值

当数据中存在异常值时,可以使用稳健回归方法:

from statsmodels.formula.api import rlm
rob_crime_model = rlm(
    "murder ~ urban + poverty + hs_grad + single",
    data=dta,
    M=sm.robust.norms.TukeyBiweight(3),
).fit(conv="weights")

稳健回归通过降低异常值的权重,使模型对极端值不敏感。

总结

StatsModels提供的回归诊断工具可以帮助我们:

  1. 识别影响模型拟合的异常观测点
  2. 验证回归假设是否满足
  3. 理解变量间的偏相关关系
  4. 评估模型的稳健性

掌握这些可视化方法,能够大大提高回归分析的质量和可靠性。建议在实际分析中结合多种诊断图,全面评估模型表现。

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蒋闯中Errol

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值