如何在 Python 中计算学生化残差?


学生化残差通常用于回归分析中,以识别数据中潜在的异常值。异常值是指与数据整体趋势显著不同的点,它可能对拟合模型产生重大影响。通过识别和分析异常值,您可以更好地理解数据中的潜在模式,并提高模型的准确性。在这篇文章中,我们将仔细研究学生化残差以及如何在 python 中实现它。

什么是学生化残差?

术语“学生化残差”指的是一类特殊的残差,其标准差已除以一个估计值。回归分析残差用于描述响应变量观测值与其模型生成的预测值之间的差异。学生化残差用于查找数据中可能存在的异常值,这些异常值可能会对拟合模型产生重大影响。

通常使用以下公式计算学生化残差:

studentized residual = residual / (standard deviation of residuals * (1 - hii)^(1/2))

其中“残差”是指观测响应值与预测响应值之间的差异,“残差的标准差”是指残差标准差的估计值,“hii”是指每个数据点的杠杆因子。

在 Python 中计算学生化残差

可以使用 statsmodels 包在 Python 中计算学生化残差。例如,请考虑以下内容:

语法

OLSResults.outlier_test()

其中 OLSResults 指的是使用 statsmodels 的 ols() 方法拟合的线性模型。

df = pd.DataFrame({'rating': [95, 82, 92, 90, 97, 85, 80, 70, 82, 83], 'points': [22, 25, 17, 19, 26, 24, 9, 19, 11, 16]}) model = ols('rating ~ points', data=df).fit() stud_res = model.outlier_test()

其中“评分”和“点数”指的是简单线性回归。

算法

  • 导入 numpy、pandas、Statsmodel api。

  • 创建数据集。

  • 对数据集执行简单线性回归模型。

  • 计算学生化残差。

  • 打印学生化残差。

示例

此处演示了如何使用 scikit-posthocs 库运行 Dunn 测试:

#import necessary packages and functions import numpy as np import pandas as pd import statsmodels.api as sm from statsmodels.formula.api import ols #create dataset df = pd.DataFrame({'rating': [95, 82, 92, 90, 97, 85, 80, 70, 82, 83], 'points': [22, 25, 17, 19, 26, 24, 9, 19, 11, 16]})

接下来,使用 statsmodels OLS 类创建一个线性回归模型:

#fit simple linear regression model model = ols('rating ~ points', data=df).fit()

可以使用 outlier test() 方法在 DataFrame 中为数据集中每个观测值生成学生化残差:

#calculate studentized residuals stud_res = model.outlier_test() #display studentized residuals print(stud_res)

输出

  student_resid   unadj_p   bonf(p)
0       1.048218  0.329376  1.000000
1      -1.018535  0.342328  1.000000
2       0.994962  0.352896  1.000000
3       0.548454  0.600426  1.000000
4       1.125756  0.297380  1.000000
5      -0.465472  0.655728  1.000000
6      -0.029670  0.977158  1.000000
7      -2.940743  0.021690  0.216903
8       0.100759  0.922567  1.000000
9      -0.134123  0.897080  1.000000

我们还可以快速将预测变量值与学生化残差进行绘制:

语法

x = df['points']
y = stud_res['student_resid']

plt.scatter(x, y)
plt.axhline(y=0, color='black', linestyle='--')
plt.xlabel('Points')
plt.ylabel('Studentized Residuals')

在这里,我们将使用 matpotlib 库以颜色 =“黑色”和样式 =“--”绘制图形

算法

  • 导入 matplotlib 的 pyplot 库

  • 定义预测变量值

  • 定义学生化残差

  • 创建预测变量与学生化残差的散点图

示例

import matplotlib.pyplot as plt #define predictor variable values and studentized residuals x = df['points'] y = stud_res['student_resid'] #create scatterplot of predictor variable vs. studentized residuals plt.scatter(x, y) plt.axhline(y=0, color='black', linestyle='--') plt.xlabel('Points') plt.ylabel('Studentized Residuals')

输出

结论

识别和评估潜在的数据异常值。检查学生化残差可以帮助您找到与数据整体趋势显著不同的点,并研究它们为何会影响拟合模型。识别有影响的观测值学生化残差可用于识别和评估有影响的数据,这些数据是指对拟合模型有重大影响的点。查找高杠杆点。学生化残差可用于识别高杠杆点。杠杆是衡量特定点对拟合模型影响程度的指标。总的来说,使用学生化残差可以帮助分析和改进回归模型的性能。

更新于:2022-12-28

885 次浏览

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告