Cómo realizar una regresión cuantílica en Python

La regresión lineal es un método que podemos utilizar para comprender la relación entre una o más variables predictoras y una variable de respuesta .

Normalmente, cuando realizamos una regresión lineal, nos interesa estimar el valor medio de la variable de respuesta.

Sin embargo, podríamos utilizar un método conocido como regresión cuantílica para estimar cualquier valor de percentil o cuantil del valor de respuesta, como el percentil 70, el percentil 90, el percentil 98, etc.

Este tutorial proporciona un ejemplo paso a paso de cómo utilizar esta función para realizar una regresión de cuantiles en Python.

Paso 1: cargue los paquetes necesarios

Primero, cargaremos los paquetes y funciones necesarios:

import numpy as np
 import pandas as pd
 import statsmodels. api  como sm
 import statsmodels. fórmula . api  como smf
 import matplotlib. pyplot  como plt

Paso 2: crear los datos

Para este ejemplo, crearemos un conjunto de datos que contiene las horas estudiadas y el puntaje del examen recibido por 100 estudiantes en alguna universidad:

#Haga que este ejemplo sea reproducible
 np. al azar . semilla (0)

#create dataset
 obs = 100

horas = np. al azar . uniforme (1, 10, obs)
puntuación = 60 + 2 * horas + np. al azar . normal (loc = 0, escala = .45 * horas, tamaño = 100)

gl = pd. DataFrame ({' horas ': horas, ' puntuación ': puntuación})

#ver las primeras cinco filas
 df. cabeza ()

puntaje de horas
0 5.939322 68.764553
1 7.436704 77.888040
2 6.424870 74.196060
3 5.903949 67.726441
4 4.812893 72.849046

Paso 3: realizar una regresión cuantílica

A continuación, ajustaremos un modelo de regresión por cuantiles utilizando las horas estudiadas como variable predictiva y la puntuación del examen como variable de respuesta.

Usaremos el modelo para predecir el percentil 90 esperado de los puntajes de los exámenes según la cantidad de horas estudiadas:

#ajuste el modelo 
model = smf. quantreg ('puntuación ~ horas', df). ajuste (q = 0,9 )

#ver impresión del resumen del modelo
 (modelo. resumen ())

                         Resultados de regresión QuantReg                          
================================================ ============================
Dep. Variable: puntuación Pseudo R cuadrado: 0,6057
Modelo: QuantReg Ancho de banda: 3.822
Método: Mínimos cuadrados Escasa: 10,85
Fecha: Mar 29 Dic 2020 No. Observaciones: 100
Hora: 15:41:44 Df Residuos: 98
                                        Modelo Df: 1
================================================ ============================
                 coef std err t P> | t | [0.025 0.975]
-------------------------------------------------- ----------------------------
Intercepción 59,6104 0,748 79,702 0,000 58,126 61,095
horas 2.8495 0.128 22.303 0.000 2.596 3.103
================================================ ============================

En el resultado, podemos ver la ecuación de regresión estimada:

Percentil 90 de la puntuación del examen = 59,6104 + 2,8495 * (horas)

Por ejemplo, se espera que el percentil 90 de puntajes para todos los estudiantes que estudian 8 horas sea 82.4:

Percentil 90 de la puntuación del examen = 59,6104 + 2,8495 * (8) = 82,4 .

La salida también muestra los límites de confianza superior e inferior para la intersección y las horas variables de predicción.

Paso 4: Visualice los resultados

También podemos visualizar los resultados de la regresión creando un diagrama de dispersión con la ecuación de regresión cuantílica ajustada superpuesta en el diagrama:

# definir figura y eje
 fig, ax = plt.subplots (figsize = (8, 6))

#obtener valores de y
 get_y = lambda a, b: a + b * horas
y = get_y (modelo. params [' Intercepción '], modelo. params [' horas '])

# trazar puntos de datos con la ecuación de regresión cuantílica superpuesta
 ax. trama (horas, y, color = ' negro ')
hacha. dispersión (horas, puntuación, alfa = .3)
hacha. set_xlabel (' Horas estudiadas ', tamaño de fuente = 14)
hacha. set_ylabel (' Puntaje del examen ', tamaño de fuente = 14)

Regresión cuantílica en Python

A diferencia de una línea de regresión lineal simple, observe que esta línea ajustada no representa la «línea de mejor ajuste» para los datos. En cambio, pasa por el percentil 90 estimado en cada nivel de la variable predictora.

Recursos adicionales

Cómo realizar una regresión lineal simple en Python
Cómo realizar una regresión cuadrática en Python

  • https://r-project.org
  • https://www.python.org/
  • https://www.stata.com/

Deja un comentario

Un pronóstico ingenuo es aquel en el que el pronóstico para un período dado es simplemente igual al valor observado…
statologos comunidad-2

Compartimos información EXCLUSIVA y GRATUITA solo para suscriptores (cursos privados, programas, consejos y mucho más)

You have Successfully Subscribed!