如何在 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 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.