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: