Python에서 스튜던트화 잔차를 계산하는 방법
학생 잔차는 단순히 잔차를 추정된 표준 편차로 나눈 것입니다.
실제로, 우리는 일반적으로 학생 잔차가 절대값 3보다 큰 데이터 세트의 모든 관측치를 이상치라고 말합니다.
다음 구문을 사용하는 statsmodels의 OLSResults.outlier_test() 함수를 사용하여 Python에서 회귀 모델의 스튜던트화 잔차를 빠르게 얻을 수 있습니다.
OLSResults.outlier_test()
여기서 OLSResults는 statsmodels ols() 함수를 사용하여 피팅한 선형 모델의 이름입니다.
예: Python에서 스튜던트화 잔차 계산
Python에서 다음과 같은 간단한 선형 회귀 모델을 구축한다고 가정합니다.
#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': [90, 85, 82, 88, 94, 90, 76, 75, 87, 86], 'points': [25, 20, 14, 16, 27, 20, 12, 15, 14, 19]}) #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 -0.486471 0.641494 1.000000 1 -0.491937 0.637814 1.000000 2 0.172006 0.868300 1.000000 3 1.287711 0.238781 1.000000 4 0.106923 0.917850 1.000000 5 0.748842 0.478355 1.000000 6 -0.968124 0.365234 1.000000 7 -2.409911 0.046780 0.467801 8 1.688046 0.135258 1.000000 9 -0.014163 0.989095 1.000000
이 DataFrame은 데이터 세트의 각 관찰에 대해 다음 값을 표시합니다.
- 학생 잔여물
- 스튜던트화 잔차의 조정되지 않은 p-값
- 학생 잔차의 Bonferroni 수정 p-값
데이터세트의 첫 번째 관측값에 대한 스튜던트화 잔차는 -0.486471 이고 두 번째 관측값에 대한 스튜던트화 잔차는 -0.491937 등임을 알 수 있습니다.
또한 해당 스튜던트화 잔차에 대한 예측 변수 값의 빠른 플롯을 만들 수 있습니다.
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 ')
그래프에서 우리는 어떤 관측치에도 절대값이 3보다 큰 학생 잔차가 없다는 것을 알 수 있습니다. 따라서 데이터 세트에 명확한 이상값이 없습니다.
추가 리소스
Python에서 단순 선형 회귀를 수행하는 방법
Python에서 다중 선형 회귀를 수행하는 방법
Python에서 잔차 플롯을 만드는 방법