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:
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:
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: