¿Cómo calcular los residuos estudentizados en Python?

El residual estudentizado es un término estadístico y se define como el cociente que se obtiene al dividir un residual por su desviación estándar estimada. Esta es una técnica crucial utilizada en la detección de contornos. En la práctica, se puede afirmar que cualquier tipo de observación en un conjunto de datos que tenga un residuo estudentizado de más de 3 (valor absoluto) es un valor atípico. 

Las siguientes bibliotecas de Python ya deberían estar instaladas en nuestro sistema:

  • pandas
  • entumecido
  • modelos estadisticos

Puede instalar estos paquetes en su sistema usando el siguiente comando en la terminal.

pip3 install pandas numpy statsmodels matplotlib

Pasos para calcular residuos estudentizados en Python

Paso 1: importa las bibliotecas.

Necesitamos importar las bibliotecas en el programa que hemos instalado arriba.

Python3

# Importing necessary packages
import numpy as np
import pandas as pd
import statsmodels.api as sm
from statsmodels.formula.api import ols
import matplotlib.pyplot as plt

Paso 2: Cree un marco de datos.

En primer lugar, debemos crear un marco de datos. Con la ayuda del paquete de pandas, podemos crear un marco de datos. El fragmento se da a continuación,

Python3

# Creating dataframe
dataframe = pd.DataFrame({'Score': [80, 95, 80, 78, 84,
                                    96, 86, 75, 97, 89],
                   'Benchmark': [27, 28, 18, 18, 29, 30,
                                 25, 25, 24, 29]})

Paso 3: construya un modelo de regresión lineal simple.

Ahora necesitamos construir un modelo de regresión lineal simple del conjunto de datos creado. Para ajustar un modelo de regresión lineal simple, Python proporciona la función ols () del paquete statsmodels.

Sintaxis:

statsmodels.api.OLS(y, x)

Parámetros:

  • y : Representa la variable que depende de x
  • x :Representa variable independiente

Ejemplo:

Python3

# Building simple linear regression model
simple_regression_model = ols('Score ~ Benchmark', data=dataframe).fit()

Paso 4: Producción de residuos estudentizados. 

Para producir un marco de datos que contendría los residuos estudentizados de cada observación en el conjunto de datos, podemos usar la función outlier_test().

Sintaxis:

modelo_de_regresión_simple.outlier_test()

Esta función producirá un marco de datos que contendría los residuos estudentizados para cada observación en el conjunto de datos

Python3

# Producing studenterized residual
stud_res = simple_regression_model.outlier_test()

A continuación se muestra la implementación completa.

Python3

# Python program to calculate studenterized residual
 
# Importing necessary packages
import numpy as np
import pandas as pd
import statsmodels.api as sm
from statsmodels.formula.api import ols
import matplotlib.pyplot as plt
 
# Creating dataframe
dataframe = pd.DataFrame({'Score': [80, 95, 80, 78, 84,
                                    96, 86, 75, 97, 89],
                   'Benchmark': [27, 28, 18, 18, 29, 30,
                                 25, 25, 24, 29]})
 
# Building simple linear regression model
simple_regression_model = ols('Score ~ Benchmark', data=dataframe).fit()
 
# Producing studenterized residual
result = simple_regression_model.outlier_test()
 
print(result)

Producción:

La salida es un marco de datos que contiene:

  • El residuo estudentizado
  • El valor p no ajustado del residuo estudentizado
  • El valor de p corregido por Bonferroni del residuo estudentizado

Podemos ver que el residuo estudentizado de la primera observación en el conjunto de datos es -1,121201, el residuo estudentizado de la segunda observación es 0,954871, y así sucesivamente.

Visualización:

Ahora entremos en la visualización del residuo estudentizado. Con la ayuda de metaplotlib podemos hacer una gráfica de los valores de la variable predictora VS los residuos estudentizados correspondientes.

Ejemplo:

Python3

# Python program to draw the plot
# of stundenterized resiual
 
# Importing necessary packages
import numpy as np
import pandas as pd
import statsmodels.api as sm
from statsmodels.formula.api import ols
import matplotlib.pyplot as plt
 
# Creating dataframe
dataframe = pd.DataFrame({'Score': [80, 95, 80, 78, 84,
                                    96, 86, 75, 97, 89],
                   'Benchmark': [27, 28, 18, 18, 29, 30,
                                 25, 25, 24, 29]})
 
# Building simple linear regression model
simple_regression_model = ols('Score ~ Benchmark', data=dataframe).fit()
 
# Producing studenterized residual
result = simple_regression_model.outlier_test()
 
# Defining predictor variable values and
# studentized residuals
x = dataframe['Score']
y = result['student_resid']
 
# Creating a 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')
 
# Save the plot
plt.savefig("Plot.png")

Producción:

Parcela.png:

Publicación traducida automáticamente

Artículo escrito por bhuwanesh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *