Como calcular resíduos estudantis em python


Um resíduo de estudante é simplesmente um resíduo dividido pelo seu desvio padrão estimado.

Na prática, geralmente dizemos que qualquer observação num conjunto de dados cujo resíduo de estudante seja maior que um valor absoluto de 3 é um outlier.

Podemos obter rapidamente os resíduos estudantis de um modelo de regressão em Python usando a função OLSResults.outlier_test() de statsmodels, que usa a seguinte sintaxe:

OLSResults.outlier_test()

onde OLSResults é o nome de um modelo linear ajustado usando a função statsmodels ols() .

Exemplo: cálculo de resíduos estudantis em Python

Suponha que construímos o seguinte modelo de regressão linear simples em 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 ()

Podemos usar a função outlier_test() para produzir um DataFrame que contém os resíduos estudantis para cada observação no conjunto de dados:

 #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

Este DataFrame exibe os seguintes valores para cada observação no conjunto de dados:

  • O resíduo estudantilizado
  • O valor p não ajustado do resíduo estudantil
  • O valor p corrigido por Bonferroni do resíduo estudantil

Podemos ver que o resíduo estudantil para a primeira observação no conjunto de dados é -0.486471 , o resíduo estudantil para a segunda observação é -0.491937 e assim por diante.

Também podemos criar um gráfico rápido dos valores das variáveis preditoras em relação aos resíduos estudantis correspondentes:

 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 ') 

Resíduos estudantis em Python

No gráfico podemos ver que nenhuma das observações possui um resíduo de aluno com valor absoluto superior a 3, portanto, não há valores discrepantes claros no conjunto de dados.

Recursos adicionais

Como realizar regressão linear simples em Python
Como realizar regressão linear múltipla em Python
Como criar um gráfico residual em Python

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *