implementar la estrategia de regresión utilizando Python, pandas y statsmodels

importar todos los paquetes requeridos.

import pandas as pdfrom patsy import dmatricesfrom collections import OrderedDictimport itertoolsimport statsmodels.formula.api as smfimport sysimport matplotlib.pyplot as plt

Leer el conjunto de datos en un marco de datos pandas.

df = pd.read_csv('boston_daily_temps_1978_2019.csv', header=0, infer_datetime_format=True, parse_dates=, index_col=)

el conjunto de Datos contiene temperaturas medias diarias. Queremos promedios mensuales. Así que vamos a enrollar los datos a un nivel de mes. Esto resulta ser una cosa simple de hacer usando pandas.

df_resampled = df.resample('M').mean()

estamos a punto de agregar columnas variables retrasadas en el conjunto de datos., Vamos a crear una copia del conjunto de datos para que no perturbemos el conjunto de datos original.

df_lagged = df_resampled.copy()

agregue 12 columnas, cada una con una versión con retraso de TAVG.

for i in range(1, 13, 1):
df_lagged = df_lagged.shift(i)

imprima las primeras 15 filas del conjunto de datos de variables retrasadas.,

print(df_lagged.head(15))

Este imprime el siguiente resultado:

El conjunto de datos que contiene 12 de las variables desfasadas (Imagen del Autor)

Los primeros 12 filas contienen valores Nan introducido por la función de desplazamiento. Vamos a eliminar estas 12 filas.

for i in range(0, 12, 1):
df_lagged = df_lagged.drop(df_lagged.index)

imprima las primeras filas solo para confirmar que las Nan han sido eliminadas.,

print(df_lagged.head())

antes de echar un vistazo a los datos, dejaremos de lado el 20% del conjunto de datos para probar el modelo óptimo.

Ahora vamos a crear todas las combinaciones posibles de valores rezagados. Para esto, crearemos un diccionario en el que las claves contienen diferentes combinaciones de los números de retraso del 1 al 12.

a continuación, vamos a iterar sobre todas las combinaciones generadas. Para cada combinación de lag, construiremos la expresión del modelo usando la sintaxis patsy., A continuación construiremos el modelo de regresión lineal para esa combinación de variables de retraso, entrenaremos el modelo en el conjunto de datos de entrenamiento, pediremos a statsmodels que nos den la puntuación AIC para el modelo, y anotaremos la puntuación AIC y el ‘mejor modelo’ actual si la puntuación actual es menor que el valor mínimo visto hasta ahora. Haremos todo esto en el siguiente fragmento de código:

finalmente, imprimamos el resumen del mejor modelo OLSR según nuestro criterio de evaluación. Este es el modelo con la puntuación AIC más baja.

print(best_olsr_model_results.summary())

esto imprime la siguiente salida., He seleccionado algunas áreas de interés en el resultado:

resumen del Modelo generado por statsmodels OLSResults.summary () (imagen del autor)

vamos a inspeccionar las secciones resaltadas.,

elección de los parámetros del modelo

Nuestra estrategia de evaluación del modelo basado en puntuación AIC ha identificado un modelo con los siguientes parámetros:

parámetros del modelo y sus coeficientes de regresión (imagen del autor)

, 3, 4, 7, 8, 9 se ha determinado que no son lo suficientemente significativos como para explicar conjuntamente la varianza de la variable dependiente TAVG., Por ejemplo, vemos que TAVG_LAG_7 no está presente en el modelo óptimo a pesar de que a partir de los gráficos de dispersión que vimos anteriormente, parecía haber una buena cantidad de correlación entre la variable de respuesta TAVG y TAVG_LAG_7. La razón de la omisión podría ser que la mayor parte de la información en TAVG_LAG_7 puede haber sido capturada por TAVG_LAG_6, y podemos ver que TAVG_LAG_6 está incluido en el modelo óptimo.,

significación estadística de los parámetros del modelo (la prueba t)

la segunda cosa a tener en cuenta es que todos los parámetros del modelo óptimo, excepto TAVG_LAG_10, son estadísticamente significativos individualmente a un nivel de confianza del 95% en la prueba t de dos colas. El valor de p reportado para su puntaje ‘ t ‘ es menor que 0.025, que es el valor de P umbral a un nivel de confianza del 95% en la prueba de 2 colas.,

el valor t y el valor p de los parámetros del modelo (imagen del autor)

significación conjunta de los parámetros del modelo (la prueba f)

la tercera cosa a tener en cuenta es que todos los parámetros del modelo son conjuntamente significativos para explicar la varianza en la variable de respuesta tavg.

esto se puede ver en la estadística F 1458. Su valor de p es 1.15 e – 272 a un nivel de confianza del 95%., Este valor de probabilidad es tan increíblemente pequeño que ni siquiera necesita buscar la tabla de distribución F para verificar que la estadística F es significativa. El modelo es definitivamente mucho mejor para explicar la varianza en TAVG que un modelo de intercepción solamente.

F-estadística y su p-valor., Todos los parámetros mdoel son conjuntamente significativos (imagen del autor)

para saber más sobre cómo interpretar la estadística F, consulte mi artículo sobre la prueba F.

la puntuación AIC y la log-verosimilitud maximizada del modelo ajustado

finalmente, echemos un vistazo a la puntuación AIC de 1990.0 reportada por statsmodels, y la log-verosimilitud maximizada de -986.86.,

Maximiza la Log-verosimilitud y la AIC puntuación (Imagen del Autor)

podemos ver que el modelo contiene 8 parámetros (7 tiempo-las variables desfasadas + interceptar). Así que según la fórmula para la puntuación AIC:

puntuación AIC = 2 * Número de parámetros -2 * probabilidad logarítmica maximizada
= 2*8 + 2*986.86 = 1989.72, redondeado a 1990. 0

que es exactamente el valor reportado por statmodels.

Deja una respuesta

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